Lập trình hướng đối tượng

OOP là lập trình hướng đối tượng, mỗi đối tượng là một thể hiện của một lớp (tình trạng, hành vi và tính duy nhất),.
Gồm 4 đặc tính: Đóng gói, đa hình, kế thừa và trừu tượng.
Tính đóng gói: là các các thuộc tính khai báo public private protected private
Kế thừa:

  • Chỉ có thể extend từ 1 class nhưng có thể implement từ nhiều class -> không có đa kế thừa
  • không thể kế thừa thuộc tính khai báo private
  • Chỉ có thể kế thừa trên cùng 1 package
  • Không thể kế thừa contructor

Abstract class: khai báo sử dụng từ khoá abstract, một class chỉ có thể extend từ 1 abstract (A là B). Phải override tất cả phương thức. Không thể cùng lúc sử dụng final và abstract.
Interface class: khai báo sử dụng từ khoá interface, một class có thể implement từ nhiều interface. (A chưa B, C, D..)
abstract class vs interface class
Abstract class and interface
Overloading: cùng tên nhưng khác tham số. Nhanh hơn sơ với overriding
Overriding: cùng tên cùng tham số nhưng viết trong lớp con. Không thể overriding một phương thức sử dụng biến static or private.
Overloading vs Overriding
Khác nhau giữa class và object: object là thể hiện của class. Object chứa bất kì thông tin gì, class không chứa thông tin gì.
Khác nhau giữa structure và class: structure gồm các thuộc tính, class thì có các thuộc tính và phương thức. Structure kiểu mặc định là public, class thì là kiểu private.
Stack: vào sau ra trước.
Queue: vào trước ra trước.
Decorator design Pattern: http://www.java67.com/2013/07/decorator-design-pattern-in-java-real-life-example-tutorial.html
Singleton design Pattern vs biến static:

  • Biến static hiệu suất tốt hơn so với singleton
  • Biến static thì không override được, còn singleton thì ok
  • Biến static khó để test hơn singleton
  • Biến static khó maintain hơn
  • Biến static là eagerly loaded còn singleton lazy loaded
  • Nếu muốn sử dụng tính OO thì dùng singleton, còn nếu muốn lưu trữ nhiều các phương thức static cùng với nhau thì dùng biến static

SOLID:

  • S (Single Responsibility Principle): mỗi một class chỉ đảm nghiệm một công việc
  • O (Open closed design principle): viết một hàm mới và chỉ test hàm đó thay vì sửa code cũ đã được test
  • L (Liskov substitution principle): các phương thức hoặc các chức năng của lớp cha phải có khả năng làm việc trên lớp con mà không có bất kì vấn đề gì.
  • I (Interface segregation principle): thay vì sử dụng một interface lớn thì ta tách thành nhiều interface nhỏ có liên quan tới nhau.
  • D (Dependency inversion principle): Module phụ thuộc vào -> abstract. Các class giao tiếp thông qua interface. VD: bóng đèn tròn và bóng đèn huỳnh quanh là implement còn đuôi bóng là interface, nên chỉ cần quan tâm đến đuôi bóng.

OOP principle

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s