Tôi thường thử và mô tả Lập trình hướng đối tượng bằng cách sử dụng các ví dụ trong thế giới thực.
Ví dụ, tôi có thể nói rằng một lớp được gọi là Vehicle
mô tả những điều tối thiểu mà một chiếc xe là. Tôi sẽ yêu cầu người đó cho tôi biết xe của họ là gì. Đôi khi họ nói những câu như "Chà, như xe hơi hay xe tải", và tôi sẽ gật đầu và đồng ý với họ. Sau đó, tôi sẽ hỏi sự khác biệt giữa xe hơi và xe tải. Đôi khi họ đề cập đến kích thước, đôi khi mục đích và những thứ khác.
Sau đó, tôi sẽ yêu cầu họ quên đi một chiếc xe hơi, hoặc một chiếc xe tải và chỉ yêu cầu họ tiếp tục mô tả một chiếc xe:
"Ồ, nó di chuyển"
"Nó có một nhà điều hành, hoặc một trình điều khiển"
Vân vân...
Chẳng mấy chốc, chúng ta biết Xe là gì và tôi đã nói rằng trong OOP, chúng ta sẽ định nghĩa một phương tiện, và để tranh luận, nó có thể di chuyển và đưa cho nó một trình điều khiển. Sau đó tôi sẽ hỏi, ok, vậy xe hơi có gì?
"Cửa ra vào"
"Các cửa sổ"
Và rồi một chiếc xe tải ....
"Cửa" "cửa sổ" "Thêm bánh xe!"
Ngay sau đó, sau rất nhiều cuộc thảo luận, người khác thường đã xác định:
1) Cái gì tạo thành một chiếc xe
2) Cái gì tạo thành một chiếc xe hơi
3) Cái gì tạo thành một chiếc xe tải
4) Những gì tạo thành một chiếc máy bay.
Tất cả không có bất kỳ kỹ thuật. Chúng tôi đã chia các thuộc tính của từng trong các khu vực bên phải. Họ hiểu sự kế thừa ("Vâng, xe hơi là phương tiện, xe tải là phương tiện, nhưng xe hơi không phải là xe tải, đó là ĐƠN GIẢN, duh!").
Họ thậm chí hiểu đa hình, "Chắc chắn, về cơ bản họ cũng làm như vậy, nhưng điều đó có thể làm nó hơi khác một chút." Chúng ta có thể nói về hành vi và nơi mà nên sống trong cây đồ vật của chúng ta.
Tùy thuộc vào trình độ học vấn và nền tảng của họ, một số người nhận được nó nhanh hơn những người khác. Nhưng khi tôi so sánh OOP với các đối tượng trong đời thực, hầu hết mọi người luôn hiểu nó. Trong thực tế, tôi đã tìm thấy trong các cuộc trò chuyện với những người phi kỹ thuật những điều tôi chưa bao giờ nghĩ tới. Các phương tiện không phải có người lái, ví dụ (máy bay không người lái), nhưng liệu một lập trình viên có nghĩ người điều khiển phương tiện là tài sản của nó không? Tôi không nói rằng đúng hay sai khi có một nhà điều hành được đề cập, nhưng nó khiến chúng ta phải suy nghĩ về những gì chúng ta đang mô hình hóa và những gì chúng ta đang cố gắng đạt được khi chúng ta phát triển phần mềm.
Bây giờ, chuyên môn mẫu một phần, mặt khác .... :)