Khác biệt giữa các bản “Ngôn ngữ lập trình”

→‎Các thành tố đặc trưng của ngôn ngữ OOP: add english definition for 4 major principles of OOP
(→‎Đóng: more accurate translation for encapsulation)
(→‎Các thành tố đặc trưng của ngôn ngữ OOP: add english definition for 4 major principles of OOP)
'''OOP''' là chữ viết tắt của ''Object Oriented Programming'' có nghĩa là '''Lập trình hướng đối tượng''' được phát minh năm [[1965]] bởi [[Ole-Johan Dahl]] và [[Kristen Nygaard]] trong ngôn ngữ [[Simula]]. So với phương pháp lập trình cổ điển, thì triết lý chính bên trong loại ngôn ngữ loại này là để tái dụng các khối [[mã nguồn]] và cung ứng cho các khối này một khả năng mới: chúng có thể có các hàm (gọi là các phương thức) và các dữ liệu (gọi là thuộc tính) nội tại. Khối mã như vậy được gọi là đối tượng. Các đối tượng thì độc lập với môi trường và có khả năng trả lời với yêu cầu bên ngoài tùy theo thiết kế của người lập trình. Với cách xây dựng này, mỗi đối tượng sẽ tương đương với một chương trình riêng có nhiều đặc tính mới mà quan trọng nhất là tính đa hình, tính đóng, tính trừu tượng và tính thừa kế.
 
=== Thừa kế (inheritance) ===
Đây là đặc tính cho phép tạo các đối tượng mới từ đối tượng ban đầu và lại có thể có thêm những đặc tính riêng mà đối tượng ban đầu không có. Cơ chế này cho phép người lập trình có thể tái sử dụng [[mã nguồn]] cũ và phát triển [[mã nguồn]] mới bằng cách tạo ra các đối tượng mới thừa kế đối tượng ban đầu.
 
=== Đa hình (polymorphism) ===
Tính đa hình được thể hiện trong lập trình hướng đối tượng rất đặc biệt. Người lập trình có thể định nghĩa một thuộc tính (chẳng hạn thông qua tên của các [[lập trình hướng đối tượng#OOPFUNC|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 mà sự thi hành của mỗi đối tượng sẽ tự động xảy ra tương ứng theo từng đối tượng không bị nhầm lẫn.
:'''Ví dụ:''' khi định nghĩa hai đối tượng "hinh_vuong" và "hinh_tron" thì có một phương thức chung là "chu_vi". Khi gọi phương thức này thì nếu đối tượng là "hinh_vuong" nó sẽ tính theo công thức khác với khi đối tượng là "hinh_tron".
 
=== Trừu tượng (abstraction) ===
Đặc tính này cho phép xác định một đối tượng trừu tượng, nghĩa là đối tượng đó có thể có một số đặc điểm chung cho nhiều đối tượng nhưng bản thân đối tượng này có thể không có các biện pháp thi hành.
:'''Ví dụ:''' người lập trình có thể định nghĩa đối tượng "hinh" hoàn toàn trừu tượng không có đặc tính mà chỉ có các phương thức được đặt tên chẳng hạn như "chu_vi", "dien_tich". Để thực thi thì người lập trình buộc phải định nghĩa thêm các đối tượng cụ thể chẳng hạn định nghĩa "hinh_tron" và "hinh_vuông" dựa trên đối tượng "hinh" và hai định nghĩa mới này sẽ thừa kế mọi thuộc tính và phương thức của đối tượng "hinh".
<!-- Ngoài ra, những hoạt động bên trong của một đối tượng cũng không được biết tới mà nó chỉ cho thấy những tương tác của mình với môi trường. - Thuộc tính "đóng" -->
 
=== Đóng gói (encapsulation) ===
Tính đóng gói ở đây dược hiểu là các dữ liệu (thuộc tính) và các hàm (phương thức) bên trong của mỗi đối tượng sẽ không cho phép người gọi dùng hay thay đổi một cách tự do mà chỉ có thể tương tác với đối tượng đó qua các phương thức được [[Lập trình viên|người lập trình]] cho phép. Tính đóng gói ở đây có thể so sánh với khái niệm "hộp đen", nghĩa là người ta có thể thấy các hành vi của đối tượng tùy theo yêu cầu của môi trường nhưng lại không thể biết được bộ máy bên trong thi hành ra sao.
 
Người dùng vô danh