Tôi đang cố gắng hiểu định nghĩa 'trừu tượng' trong OOP.
Tôi đã đi qua một vài định nghĩa chính. Có phải tất cả đều hợp lệ? Là một trong số họ sai? Tôi bối rối. (Tôi viết lại định nghĩa bằng từ của riêng tôi).
Định nghĩa 1:
Trừu tượng là khái niệm lấy một số đối tượng từ thế giới thực và chuyển đổi nó thành các thuật ngữ lập trình. Chẳng hạn như tạo ra một Human
lớp và đem lại cho nó int health
, int age
, String name
vv thuộc tính, và eat()
vv phương pháp.
Định nghĩa 2:
Một định nghĩa chung hơn. Trừu tượng là một khái niệm diễn ra ở bất cứ đâu trong một hệ thống phần mềm, trong đó "làm cho mọi thứ trở nên chung chung / đơn giản / trừu tượng hơn" có liên quan. Một vài ví dụ:
Một hệ thống phân cấp thừa kế, trong đó các lớp cao hơn đơn giản hơn hoặc tổng quát hơn và định nghĩa việc thực hiện trừu tượng và tổng quát hơn. Trong khi các lớp thấp hơn trong hệ thống phân cấp cụ thể hơn và xác định các triển khai chi tiết hơn.
Sử dụng đóng gói để ẩn các chi tiết triển khai của một lớp khỏi các lớp khác, do đó làm cho lớp trở nên 'trừu tượng' hơn (đơn giản hơn) với thế giới phần mềm bên ngoài.
Định nghĩa 3
Một định nghĩa chung khác: Trừu tượng là khái niệm chuyển trọng tâm từ các chi tiết và triển khai cụ thể của mọi thứ, đến các loại sự vật (ví dụ như các lớp), các hoạt động có sẵn (ví dụ phương thức), do đó làm cho việc lập trình đơn giản hơn, tổng quát hơn, và trừu tượng hơn. (Điều này có thể diễn ra ở bất cứ đâu và trong bất kỳ bối cảnh nào trong hệ thống phần mềm). Nó diễn ra ví dụ khi đóng gói, bởi vì đóng gói có nghĩa là ẩn các chi tiết thực hiện và chỉ hiển thị các loại sự vật và các định nghĩa chung và trừu tượng hơn của chúng. Ví dụ Anotehr sẽ sử dụng một List
đối tượng trong Java. đối tượng này thực sự sử dụng các chi tiết triển khai của một ArrayList
hoặc một LinkedList
, nhưng thông tin này được trừu tượng hóa bằng cách sử dụng tên chung hơn List
.
Có bất kỳ định nghĩa trong số này là chính xác? (Tôi đang đề cập đến định nghĩa thông thường nhất và được chấp nhận ).