Quen lắm phải không ?

Hầu hết các buổi phỏng vấn giành cho Intern, Freshser hay Junior đều có câu hỏi này, giờ thì sao nào cùng mình tìm hiểu về chúng nhé.

Thế lập trình hướng đối tượng là gì ?

Đây là một cách lập trình máy tính hay còn gọi là thiết kế phần mềm. Lập trình viên sẽ xác định dạng dữ liệu của một cấu trúc dữ liệu, loại hàm có thể áp dụng cho cấu trúc dữ liệu đó. Bằng cách này, cấu trúc dữ liệu trở thành một đối tượng bao gồm cả dữ liệu và hàm.

VD: giờ để giải quyết bài toán về một con chó (chó ở đây là đối tượng cần focus vào)

Chó có gì ạ ? Chân, mũi miệng, hành động sủa, cắn, chạy ....

=> Chó là đối tượng

Giờ đưa đối tượng cho vào lập trình thì mình sẽ thiết kế code sao cho hướng vào đối tượng này.

Các tính chất của lập trình hướng đối tượng

=> Có 4 tính chất.

  1. Tính đóng gói
  2. Tính trừu tượng
  3. Tính kết thừa
  4. Tính đa hình

Tính đóng gói

  • Nhắc đến đóng gói là nhắc đến các keyword như private, protected public (Access modifier)
  • Tính đóng gói cho phép che giấu thông tin và những tính chất xử lý bên trong của đối tượng. Các đối tượng khác không thể tác động trực tiếp đến dữ liệu bên trong và làm thay đổi trạng thái của đối tượng mà bắt buộc phải thông qua các phương thức công khai do đối tượng đó cung cấp.
  • Tính chất này giúp tăng tính bảo mật cho đối tượng và tránh tình trạng dữ liệu bị hư hỏng ngoài ý muốn.

Tính kế thừa

  • Đây là tính chất được sử dụng khá nhiều. Tính kế thừa cho phép xây dựng một lớp mới (lớp Con), kế thừa và tái sử dụng các thuộc tính, phương thức dựa trên lớp cũ (lớp Cha) đã có trước đó.
  • Các lớp Con kế thừa toàn bộ thành phần của lớp Cha và không cần phải định nghĩa lại. Lớp Con có thể mở rộng các thành phần kế thừa hoặc bổ sung những thành phần mới.
  • Thể hiện qua các từ khóa extends, protected

Ví dụ:

  • Lớp Cha là smartphone, có các thuộc tính: màu sắc, bộ nhớ, hệ điều hành…
  • Các lớp Con là iPhone, Samsung, Oppo cũng có các thuộc tính: màu sắc, bộ nhớ, hệ điều hành…

Tính đa hình

  • Tính đa hình trong lập trình OOP cho phép các đối tượng khác nhau thực thi chức năng giống nhau theo những cách khác nhau.
  • Thể hiện qua các từ khóa override, overload

Ví dụ:

  • Ở lớp smartphone, mỗi một dòng máy đều kế thừa các thành phần của lớp cha nhưng iPhone chạy trên hệ điều hành iOS, còn Samsung lại chạy trên hệ điều hành Android.
  • Chó và mèo cùng nghe mệnh lệnh “kêu đi” từ người chủ. Chó sẽ “gâu gâu” còn mèo lại kêu “meo meo”.

Tính trừu tượng

  • Tính trừu tượng giúp loại bỏ những thứ phức tạp, không cần thiết của đối tượng và chỉ tập trung vào những gì cốt lõi, quan trọng.
  • Thể hiện qua các từ khóa abstract, interface, implements

Ví dụ: Quản lý nhân viên thì chỉ cần quan tâm đến những thông tin như:

  • Họ tên
  • Ngày sinh
  • Giới tính

Chứ không cần phải quản lý thêm thông tin về:

  • Chiều cao
  • Cân nặng
  • Sở thích
  • Màu da