Là tác giả của bài đăng được liên kết, tôi nghĩ tôi sẽ ném vào một vài suy nghĩ.
FYI: Tôi bắt đầu nghiêm túc (nghĩa là cho công việc thương mại) sử dụng OOP/ORM/UML vào năm 1997 và tôi mất khoảng 5 năm để sử dụng hàng ngày để thực sự tốt với IMHO. Tôi đã lập trình bằng ngôn ngữ ASM và không phải OOP trong khoảng 5 năm trước thời điểm đó.
Câu hỏi có thể không đúng ngữ pháp, nhưng tôi nghĩ đó là một câu hỏi hay khi tự hỏi bản thân và điều tra - khi bạn hiểu cách viết cụm từ tốt hơn, bạn sẽ học được rất nhiều điều hữu ích.
"Vì vậy, OOP không cố gắng loại bỏ một thứ gì đó ở đây để ở lại?"
Thứ nhất, đọc báo Bjarne ở đây: http://www.stroustrup.com/oopsla.pdf
IMHO, không ai nên được dạy bất kỳ OOP mà không đọc báo đó (và đọc lại sau khi họ đã "học" OOP). Vì vậy, nhiều người hiểu lầm những gì họ đang đối phó với.
IME, nhiều khóa học đại học không dạy tốt OOP; họ dạy mọi người cách viết các phương pháp và các lớp học, và cách sử dụng các đối tượng. Họ dạy kém lý do tại sao bạn sẽ làm những điều này, nơi mà các ý tưởng đến từ, v.v. Tôi nghĩ phần lớn việc sử dụng sai đến từ đó: gần như một trường hợp mù dẫn người mù (họ không mù trong "cách "để sử dụng OOP, họ chỉ mù trong" lý do "để sử dụng OOP).
Để trích từ đoạn cuối cùng của tờ báo:
"làm thế nào bạn có hỗ trợ kỹ thuật lập trình tốt và kỹ thuật thiết kế tốt quan trọng hơn nhãn và từ buzz Ý tưởng cơ bản chỉ đơn giản là để cải thiện thiết kế và lập trình thông qua trừu tượng.. Bạn muốn ẩn các chi tiết, bạn muốn khai thác bất kỳ tính phổ biến nào trong một hệ thống, và bạn muốn thực hiện điều này một cách hợp lý, và bạn muốn thực hiện điều này một cách hợp lý. định hướng '' quá thường xuyên bị xóa: - bằng cách đánh dấu nó bằng tốt, - bằng cách cân bằng nó với một ngôn ngữ hoặc - bằng cách chấp nhận mọi thứ theo hướng đối tượng.
Tôi đã lập luận rằng có - và phải là các kỹ thuật hữu ích ngoài lập trình và thiết kế hướng đối tượng. Tuy nhiên, để tránh bị hiểu lầm hoàn toàn, tôi muốn nhấn mạnh rằng tôi sẽ không cố gắng thực hiện một dự án nghiêm túc bằng cách sử dụng chương trình lan- mà không ít nhất hỗ trợ khái niệm cổ điển về lập trình hướng đối tượng. Ngoài các cơ sở hỗ trợ lập trình hướng đối tượng, tôi muốn –và C++ cung cấp các tính năng vượt ra ngoài những hỗ trợ để thể hiện trực tiếp các khái niệm và mối quan hệ. "
Bây giờ ... tôi sẽ hỏi bạn ... của tất cả các lập trình viên OOP và các dự án OOP bạn đã thấy, có bao nhiêu trong số họ có thể trung thực tuyên bố đã tôn trọng những gì Bjarne yêu cầu IME, có
ít hơn phần lớn
Bjarne nói rằng:?.
"Ý tưởng cơ bản chỉ đơn giản là cải thiện thiết kế và lập trình thông qua trừu tượng"
... nhưng nhiều người phát minh ra cho mình một ý nghĩa khác nhau, một cái gì đó như:
"Ý tưởng cơ bản là OOP là tốt, và tất cả mọi thứ-không-OOP là kém hơn"
Người lập trình đã lập trình tuần tự với ASM, sau đó sau đó ASM, sau đó pascal, sau đó C, sau đó C++, và đã được tiếp xúc với sự hỗn loạn đã được lập trình trước đóng gói vv có xu hướng có sự hiểu biết tốt hơn về công cụ này. Họ biết lý do tại sao OOP đến, những gì nó đã cố gắng để giải quyết.
Funnily đủ, OOP là không cố gắng giải quyết mọi vấn đề lập trình. Ai có thể mua nó, để nói nó được nói đến hôm nay như thế nào?
Nó nhằm vào một số lượng nhỏ các vấn đề cực kỳ nguy hiểm mà dự án của bạn càng lớn, và nó trở thành một nơi nào đó giữa "tốt" và "rất tốt" khi giải quyết.
Nhưng ngay cả một số trong số đó cũng không tốt hơn là chỉ "giải quyết tốt"; có mô hình khác được tốt hơn ...
Tất cả IMHO, of course;)
Ý anh là gì bởi "tuyến tính"? –
Bạn có ý nghĩa gì với "OOP thuần túy"? – Ray
Ví dụ: nói Datasets là ác hoặc không có SQL trong một đối tượng. – programmernovice