eng
competition

Text Practice Mode

OOP là gì ?

created Jan 13th 2021, 05:29 by nguyenmanh


2


Rating

1260 words
8 completed
00:00
lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) một mẫu hình lập trình dựa trên khái niệm "công nghệ đối tượng", trong đó, đối tượng chứa đựng các dữ liệu, trên các trường, thường được gọi các thuộc tính; nguồn, được tổ chức thành các phương thức. Phương thức giúp cho đối tượng thể truy xuất hiệu chỉnh các trường dữ liệu của đối tượng khác, đối tượng hiện tại tương tác (đối tượng được hỗ trợ các phương thức "this" hoặc "self"). Trong lập trình hướng đối tượng, chương trình máy tính được thiết kế bằng cách tách ra khỏi phạm vi các đối tượng tương tác với nhau. Ngôn ngữ lập trình hướng đối tượng khá đa dạng, phần lớn các ngôn ngữ lập trình theo lớp, nghĩa các đối tượng trong các ngôn ngữ này được xem như thực thể của một lớp, được dùng để định nghĩa một kiểu dữ liệu.
 
OOP được xem giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vào các đối tượng phần mềm bậc cao hơn. Ngoài ra, nhiều người còn cho rằng OOP dễ tiếp thu hơn cho những người mới học về lập trình hơn các phương pháp trước đó. Một cách giản lược, đây khái niệm một nỗ lực nhằm giảm nhẹ các thao tác viết cho người lập trình, cho phép họ tạo ra các ứng dụng các yếu tố bên ngoài thể tương tác với các chương trình đó giống như tương tác với các đối tượng vật lý.
 
Những đối tượng trong một ngôn ngữ OOP các kết hợp giữa dữ liệu chúng được nhìn nhận như một đơn vị duy nhất. Mỗi đối tượng một tên riêng biệt tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó. Như vậy, mỗi đối tượng khả năng nhận vào các thông báo, xử dữ liệu (bên trong của nó), gửi ra hay trả lời đến các đối tượng khác hay đến môi trường.
 
Đa phần các ngôn ngữ lập trình thông dụng nhất hiện nay (như C++, Delphi, Java, Python etc.) các ngôn ngữ lập trình đa mẫu hình đều hỗ trợ lập trình hướng đối tượng nhiều mức độ khác nhau, thường được kết hợp với lập trình mệnh lệnh, lập trình thủ tục. Các ngôn ngữ lập trình hướng đối tượng đáng chú ý gồm Java, C++, C#, Python, PHP, Ruby, Perl, Object Pascal, Objective-C, Dart, Swift, Scala, Common Lisp, Smalltalk.
 
Đối tượng (object): Các dữ liệu chỉ thị được kết hợp vào một đơn vị đầy đủ tạo nên một đối tượng. Đơn vị này tương đương với một chương trình con thế các đối tượng sẽ được chia thành hai bộ phận chính: phần các phương thức (method) phần các thuộc tính (attribute / Properties). Trong thực tế, các phương thức của đối tượng các hàm các thuộc tính của các biến, các tham số hay hằng nội tại của một đối tượng (hay nói cách khác tập hợp các dữ liệu nội tại tạo thành thuộc tính của đối tượng). Các phương thức phương tiện để sử dụng một đối tượng trong khi các thuộc tính sẽ tả đối tượng những tính chất gì.
Các phương thức các thuộc tính thường gắn chặt với thực tế các đặc tính sử dụng của một đối tượng.
Trong thực tế, các đối tượng thường được trừu tượng hóa qua việc định nghĩa của các lớp (class).
Tập hợp các giá trị hiện của các thuộc tính tạo nên trạng thái của một đối tượng.
Mỗi phương thức hay mỗi dữ liệu nội tại cùng với các tính chất được định nghĩa (bởi người lập trình) được xem một đặc tính riêng của đối tượng. Nếu không lầm lẫn thì tập hợp các đặc tính này gọi chung đặc tính của đối tượng.
 
Lập trình hướng đối tượng một phương pháp lập trình 4 tính chất chính sau:
 
Tính trừu tượng (abstraction): Đây khả năng của chương trình bỏ qua hay không chú ý đến một số khía cạnh của thông tin đang trực tiếp làm việc lên, nghĩa khả năng tập trung vào những cốt lõi cần thiết. Mỗi đối tượng phục vụ như một "động tử" thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi trạng thái của liên lạc với các đối tượng khác không cần cho biết làm cách nào đối tượng tiến hành được các thao tác. Tính chất này thường được gọi sự trừu tượng của dữ liệu.
Tính trừu tượng còn thể hiện qua việc một đối tượng ban đầu thể một số đặc điểm chung cho nhiều đối tượng khác như sự mở rộng của nhưng bản thân đối tượng ban đầu này thể không các biện pháp thi hành. Tính trừu tượng này thường được xác định trong khái niệm gọi lớp trừu tượng hay lớp sở trừu tượng.
 
Tính đóng gói (encapsulation) che giấu thông tin (information hiding): Tính chất này không cho phép người sử dụng các đối tượng thay đổi trạng thái nội tại của một đối tượng. Chỉ các phương thức nội tại của đối tượng cho phép thay đổi trạng thái của nó. Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào hoàn toàn tùy thuộc vào người viết mã. Đây tính chất đảm bảo sự toàn vẹn của đối tượng.
 
Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp (message). Việc gửi các thông điệp này thể so sánh như việc gọi các hàm bên trong của một đối tượng. Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đối tượng thông điệp đó được gửi tới sẽ phản ứng khác nhau. Người lập trình thể định nghĩa một đặc tính (chẳng hạn thông qua tên của các phương thức) cho một loạt các đối tượng gần nhau nhưng khi thi hành thì dùng cùng một tên gọi sự thi hành của mỗi đối tượng sẽ tự động xảy ra tương ứng theo đặc tính của từng đối tượng không bị nhầm lẫn.
dụ khi định nghĩa hai đối tượng "hinh_vuong" "hinh_tron" thì một phương thức chung "chu_vi". Khi gọi phương thức này thì nếu đối tượng "hinh_vuong" sẽ tính theo công thức khác với khi đối tượng "hinh_tron".
 
Tính kế thừa (inheritance): Đặc tính này cho phép một đối tượng thể sẵn các đặc tính đối tượng khác đã thông qua kế thừa. Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn không phải tiến hành định nghĩa lại. Tuy nhiên, không phải ngôn ngữ định hướng đối tượng nào cũng tính chất này.

saving score / loading statistics ...