trừu tượng (n) - chất lượng đối phó với những ý tưởng chứ không phải là sự kiện
— nguồn: Oxford English Dictionary
Stroustrup không đề cập đến lớp trừu tượng hay ý tưởng cụ thể khác trong lập trình. Thay vào đó, ông đang đề cập đến từ trừu tượng của chính nó.
Tóm tắt là những người trợ giúp tinh thần. Chúng giúp chúng ta suy nghĩ trong "lý thuyết" hơn là ứng dụng trực tiếp. Toán học là nghệ thuật trừu tượng. Lập trình là nghệ thuật trừu tượng được áp dụng.
Tóm tắt giúp chúng tôi hình thành các mô hình tinh thần, chẳng hạn như phân cấp, để giúp chúng tôi nghĩ về mọi thứ. Đa hình là có thể vì trừu tượng. Chúng ta hãy xem một ví dụ.
Ví dụ
Tôi có một Oleksiy Dobrodum. Tôi gọi nó là Oleksiy Dobrodum, tôi coi nó như một Oleksiy Dobrodum, tất cả nó sẽ là một Oleksiy Dobrodum. Tất cả những gì tôi làm với Oleksiy Dobrodum này là đặc biệt cho nó. Bây giờ chúng ta đang ở cấp độ trừu tượng thứ nhất, hoặc cụ thể nhất mà chúng ta từng làm khi làm việc với Oleksiy Dobrodum này.
Gần đây tôi đã mua một chiếc Zach Latta, vì vậy bây giờ tôi có cả Oleksiy Dobrodum và Zach Latta.
tôi có thể giới thiệu cho họ cả hai cá nhân, vì vậy như một Oleksiy Dobrodum và như là một Zach Latta, nhưng điều đó sẽ nhanh chóng phát triển dư thừa và chứng minh không được linh hoạt. Thay vào đó, chúng ta chỉ có thể nhóm Oleksiy Dobrodum và Zach Latta lại với nhau và gọi chúng là Con người. Bây giờ chúng ta đã đạt được mức trừu tượng 2. Thay vì đối phó với từng cá nhân, chúng ta có thể gọi chúng là Con người. Bằng cách này, chúng tôi đã trừu tượng hóa "triển khai", hoặc các chi tiết cụ thể của từng người và đã bắt đầu tập trung vào các ý tưởng, do đó chúng tôi đang suy nghĩ trong phần tóm tắt.
Dĩ nhiên chúng ta có thể trừu tượng này hơn nữa, nhưng hy vọng bạn đang bắt đầu để có được ý tưởng đằng sau khái niệm trừu tượng. Điều quan trọng từ việc này là việc trừu tượng ẩn các chi tiết (hoặc triển khai). Bằng cách che giấu các chi tiết trong sự trừu tượng của con người, chúng ta cho phép chúng ta nói chung. Chúng ta sẽ nói ngắn gọn về cách áp dụng điều này trong lập trình trong phần tiếp theo.
Áp dụng các thao tác trừu tượng
Bây giờ chúng tôi đã chạm vào một thời gian ngắn về khái niệm trừu tượng là gì, hãy áp dụng nó. Đa hình là có thể vì trừu tượng. Theo mô hình của các ví dụ trước, nói rằng chúng ta có hai loại sau đây:
class OleksiyDobrodum
name = "Oleksiy Dobrodum"
smarts = :mega-smart
mood = :happy
favorite_candy = :chocolate
end
class ZachLatta
name = "Zach Latta"
smarts = :so-so
mood = :indifferent
hair_color = :brown
end
Nếu tôi muốn tương tác với một thể hiện của ZachLatta
tôi phải đề cập đến nó đặc biệt. Tương tự với các trường hợp OleksiyDobrodum
.
zach = new ZachLatta
print zach.name
oleksiy = new OleksiyDobrodum
print oleksiy.favorite_candy
Nếu tôi có thể tạo một lớp trừu tượng gọi là Human
và có cả OleksiyDobrodum
và ZachLatta
kế thừa từ nó, sau đó tôi có thể trừu tượng đi thi của cả hai lớp và chỉ cần đề cập đến cả hai trường hợp trong số họ là Human
.
class Human
name
smarts
mood
end
class OleksiyDobrodum < Human
name = "Oleksiy Dobrodum"
smarts = :mega-smart
mood = :happy
favorite_candy = :chocolate
end
class ZachLatta < Human
name = "Zach Latta"
smarts = :so-so
mood = :indifferent
hair_color = :brown
end
sơ đồ lớp của chúng tôi bây giờ trông giống như sau:
tôi có thể dông dài trên về thực hiện mãi mãi, nhưng chúng ta hãy chuyển sang takeaways chính của chúng tôi.
chính takeaways
- trừu tượng là những ý tưởng, chứ không phải sự kiện cụ thể
- để trừu tượng một cái gì đó là để di chuyển ra khỏi việc thực hiện và suy nghĩ về những ý tưởng lớn
- trừu tượng có thể được dùng để sắp xếp mã (và nhiều những thứ khác) có hiệu quả
- lập trình hướng đối tượng hoàn toàn phụ thuộc vào sự trừu tượng hóa. xem dấu đầu dòng ở trên.
Hãy tưởng tượng phải mất rất nhiều công sức để hoàn thành một tác vụ. Bây giờ hãy tưởng tượng họ là một chức năng đơn giản để làm điều đó. Thì đấy, một sự trừu tượng. – chris
B.Stroustrup (http://www.stroustrup.com/glossary.html) - * trừu tượng - hành động chỉ định một giao diện chung ẩn chi tiết triển khai. Các lớp, các lớp trừu tượng và các khuôn mẫu là các cơ chế trừu tượng chính trong C++. Xem thêm: đóng gói. * – SChepurin
vui lòng mở lại câu hỏi này, [có một câu trả lời đúng cho nó] (http://www.boost.org/community/generic_programming.html#concept) – TemplateRex