Hiểu lầm thường gặp về Abstraction trong OOP

Dạo này mình đã gặp một định nghĩa chưa chính xác về tính trừu tượng trong OOP. Google nhanh thì thấy cũng kha khá bài viết trên mạng vẫn giải thích theo cách này. Chưa thấy ai chỉ ra vấn đề này cả, nên mình viết ra bài này hi vọng giúp mọi người hiểu hơn, tránh bị hiểu lầm khi nói đến Abstraction.

9 Likes

Tuyệt! Người ta nên gọi là tính black box (có lẽ cái này là Abstraction + Encapsulation) đi nghe cho nó dễ hiểu nhỉ? Trừu tượng đâm ra trừu tượng thật.

vài gã trai bực mình cái trừu tượng này nên viết phần mềm OS bằng Assembly vì trừu tượng làm cho rắc rối không cần thiết.

Mình thì hiểu như vầy Abstraction có nghĩa là lập trình quản lý trường học thì ta phải mô hình hóa cái trường học đó thành ngôn ngữ lập trình thay vì ngôn ngữ cuộc sống, mô tả nó như bài văn tả cảnh.

Cũng giống như bên kiến trúc, quy hoạch người làm bản vẽ cái trường học thì họ buộc phải thực hiện Abstraction chứ không thể bê vật liệu xây dựng đặt lên tờ giấy A0 hoặc màn hình phần mềm CAD được. Làm sa bàn thì có vẻ giống thật hơn, nhưng tỉ lệ nhỏ hơn nhiều. Còn làm lớn như thật, gọi là đạo nhái, như bên TQ làm các công trình nhái phương Tây, lúc đó chắc không còn Abstraction nữa mà clone :smiley:

Do vậy, Abstraction theo mình là… simulator hay nói cách khác là đang làm việc… chơi game. Lập trình là chơi game, và lập trình game thì là chơi game của chơi game :smiley: đó chính là Abstraction.

Một sự thật fun fact: hệ điều hành chính là Abstraction của cái máy tính mà bạn đang dùng.

6 Likes

Black box chính là Information hiding đó chú.

5 Likes

vậy cho em hỏi, em suy nghĩ thế này có phải là trừu tượng ko
vd: cho 1 người chưa biết gì về khái niệm 1 con chó, xem rất nhiều hình ảnh về 1 con chó,chó to, chó nhỏ, cho xấu chó đẹp, chó đứng chụp phối cảnh …

sau đó trong não người đó tự xây dựng 1 khái niệm mơ hồ về cái hình dạng liên tục lặp lại trong những bức hình đó, cái hình mẫu đó đc gán cho 1 cái tên là “chó”

sau này, người đó được cho xem 1 hình ảnh chụp 1 phong cảnh, có nhiều nhiều loại động vật, và hình ảnh gây nhiễu, nhưng người đó vẫn chọn ra đc hình con chó trong bức ảnh đó
thì lúc đó có phải người đó đã trừu tượng hóa thông tin về hình ảnh con chó, để tạo ra 1 mẫu hình về con chó không, sau này ko cần chụp ảnh toàn thân 1 con chó, chỉ cần chụp cái thân con chó thôi người đó cũng có thể phán đoán đó là 1 con chó

3 Likes

Có lẽ mỗi ngươi trong chúng ta phải sử dụng từ điển nhiều hơn, vì có nhiều lúc nói thì nói nhưng chưa chắc đã hiểu/ dùng từ đúng:

2022-08-03-14-15

Dường như, khi có ngôn ngữ, là khá niệm trừu tượng/ trường tượng hóa/ sự trừu tượng tồn tại.

3 Likes

Anh em tham khảo thêm về 4 tính chất của OOP tại đây nha:

3 Likes

Cái abstraction là cái mà mọi application cần hướng đến, đừng có hiểu lầm cái keyword abstract với cái abstraction. Để phần mềm đạt được được abstraction không phải ngày 1 ngày 2 đâu.

Về mặt ý niệm là đúng. Sau này nói đến con “chó” người ta tự biết nó như thế nào. ko cần giai thích gi thêm.
image

3 Likes

Abstraction of a bird

Một ví dụ tuyệt vời

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?