Tôi muốn học ngôn ngữ lập trình hướng đối tượng, tôi không muốn nó cho bất kỳ mục đích nào chỉ để biết toàn bộ khái niệm về OOP. Vì vậy, bất cứ ai có thể cho tôi biết ngôn ngữ tôi nên bắt đầu học?
Tôi muốn học ngôn ngữ lập trình hướng đối tượng, tôi không muốn nó cho bất kỳ mục đích nào chỉ để biết toàn bộ khái niệm về OOP. Vì vậy, bất cứ ai có thể cho tôi biết ngôn ngữ tôi nên bắt đầu học?
Câu trả lời:
Một số gợi ý thêm:
Cuốn sách hay nhất tôi từng đọc trên thanh OOP không phải là cuốn sách Xây dựng phần mềm hướng đối tượng của Bertrand Meyer . Nó không phải là một "dễ đọc" mà bạn sẽ cần phải suy nghĩ kỹ ở những nơi. Nhưng đó là công việc tốt nhất tôi từng thấy khi giải thích các nguyên tắc OO.
Về ngôn ngữ: Tôi sẽ tránh xa C ++. Chỉ là quá lớn cho mục đích học tập. Nếu bạn muốn một ngôn ngữ thực sự sẽ giúp bạn hiểu OO (trái ngược với ngôn ngữ mà bạn sẽ viết các ứng dụng chính trong / nhận công việc bằng cách sử dụng) thì hãy xem smalltalk. Hoặc Eiffel (ngôn ngữ trong cuốn sách của Meyer ở trên).
Nếu bạn muốn một ngôn ngữ chính thống hơn một chút nhưng vẫn trung thành hỗ trợ các nguyên tắc OO thì Python là một lựa chọn tốt. Java & C # cũng khá nếu bạn muốn gõ tĩnh.
Một lời cảnh báo mặc dù: ngôn ngữ sẽ không dạy bạn OO. Nó chỉ có thể giúp (hoặc cản trở) trong việc nó hỗ trợ các khái niệm OO tốt như thế nào. Học OO thực sự là học cách suy nghĩ theo thuật ngữ OO. Vì vậy, tôi sẽ trở lại với cuốn sách của Meyer.
hth
Bạn có thể tìm hiểu bất kỳ ngôn ngữ hướng đối tượng nào như C ++, Java, C #, v.v để thử OOPS.
Nếu bạn thực sự muốn học OOP, bạn cần phải nghĩ xa hơn các ngôn ngữ và hiểu rằng đó là một mô hình giúp mange sự phức tạp liên quan đến các chương trình phần mềm giống như cách chúng ta quản lý chúng trong thế giới thực này. Sau đó tìm hiểu các khái niệm cơ bản trong OO như Đa hình, Kế thừa, Đóng gói (PIE), v.v.
Có những cuốn sách hay xung quanh Phân tích và thiết kế hướng đối tượng với các ứng dụng (Ấn bản 2) của Grady Booch
Ngoài ra, bạn có thể dùng thử các blog như thế này mà tôi thấy đủ đơn giản để bắt đầu với- hấp dẫn
Bạn muốn học OOP? Một câu trả lời - Smalltalk.
Đó là một ngôn ngữ thanh lịch và là OO cốt lõi. Bạn sẽ học OOP ngay từ đầu và sẽ không bị cản trở bởi tất cả những phiền nhiễu khác mà các ngôn ngữ khác quản lý để kết hợp.
Smalltalk thắng. Và có một số sách điện tử miễn phí tốt có sẵn quá (xem: Stephane Ducasse )
Bạn sẽ phải học C ++, hoặc có thể là một trong những người đi trước như Smalltalk. C ++ cung cấp một sự tách biệt rõ ràng giữa các khái niệm như định hướng đối tượng, quản lý bộ nhớ và tham chiếu so với giá trị và nó có sự hỗ trợ chung mạnh mẽ.
Không học Java hoặc ngôn ngữ .NET như C #. Khi bạn học một ngôn ngữ như Java, sau đó bạn học những thứ như "Các đối tượng luôn ở trong heap và luôn là tài liệu tham khảo", điều này chỉ đúng với Java và hoàn toàn không đúng với OOP nói chung. Sự kết hợp các khái niệm này (hướng đối tượng, quản lý bộ nhớ, tham chiếu so với giá trị) rất nguy hiểm đối với ngôn ngữ đầu tiên, bởi vì một khi bạn khiến chúng bị mắc kẹt trong đầu, có thể rất khó để đưa chúng ra ngoài. C # có phần tốt hơn trong vấn đề này nhưng không nhiều. Ngoài ra, họ có thể có xu hướng dạy "Kế thừa là một cái búa và mọi thứ là một cái đinh" với sự hỗ trợ lập trình chung yếu.
Cách tốt nhất để tìm hiểu các khái niệm OOP là viết ngày càng nhiều mã và được xem xét thường xuyên. Thực hành maketh một lập trình viên tốt.
Hãy suy nghĩ các kịch bản trong thế giới thực, xác định một tuyên bố vấn đề - giải quyết nó bằng mã và xem xét nó. Bạn luôn có thể nhận trợ giúp từ /codereview// để đánh giá :)
Chúc mừng mã hóa !!!
Các bước
Lần tiếp xúc đầu tiên của tôi với thế giới OO là C ++, đây không phải là một khởi đầu tồi. Nhưng tôi đã cải thiện rất nhiều khi học Python. Sự khác biệt đến từ các ngôn ngữ: thử các ý tưởng ('làm thế nào tôi có thể giải quyết vấn đề này theo kiểu OO?') Trong C ++ cần nhiều mã hơn để viết và bao gồm nhiều cạm bẫy hơn so với thử cùng một ý tưởng trong Python. Vì vậy, tôi muốn giới thiệu Python.
Tôi không nghĩ bạn nên tìm hiểu một ngôn ngữ khác trong khi cố gắng học OOP. Đối với tôi, việc nắm bắt lý thuyết sẽ dễ dàng hơn và sau đó học cách áp dụng nó nếu tôi có thể liên quan đến điều gì đó mà tôi đã biết. Tìm ra một cú pháp mới chỉ cản trở.
Bạn có thể bắt đầu với bất kỳ cuốn sách OOP. Một lần nữa, tôi sẽ có một ngôn ngữ tôi chọn. Đọc một cuốn sách về tái cấu trúc (Phong cách OOP) đã giúp tôi trong việc áp dụng OOP. Tôi đã lấy một dự án hiện có (Không làm sao lãng việc thu thập yêu cầu) và tìm ra những cách mới để cải thiện nó. Đó không chỉ là OOP vì lợi ích của OOP. Sau đó, bạn có thể tìm hiểu làm thế nào để làm điều đó từ đầu đến cuối trong một dự án mới. Logic ở đây là bạn sẽ không luôn hiểu nó ngay từ đầu. Nếu bạn có thể nhận ra nơi nào phù hợp, bạn sẽ tốt hơn. Giống như hầu hết mọi thứ, nó sẽ không giải quyết mọi vấn đề.
Có những hạn chế nhất định với một số ngôn ngữ. Nếu mục tiêu của bạn là trở thành bậc thầy về kế thừa đa cấp, thì .NET sẽ bị loại.
Tôi sẽ đi ngược lại với suy nghĩ thông thường ở đây và đề xuất rằng các ngôn ngữ dễ nhất để sử dụng OOP không nhất thiết phải là ngôn ngữ tốt nhất để học nó. Lần đầu tiên tôi tiếp xúc với OOP với C ++, nhưng tôi đã không "hiểu" cho đến khi đọc chương sách Lạc đà của Larry Wall về OOP với Perl. Vì một số lý do, tôi gặp khó khăn trong việc nắm bắt sự khác biệt giữa các lớp và các đối tượng cho đến khi phải ban phước rõ ràng cho một đối tượng vào một lớp. Tôi đã không thực sự hiểu việc triển khai cơ bản của OOP cho đến khi thực hiện nó trong C với GObject, trong đó không có chi tiết nào trong số đó bị ẩn khỏi bạn. Tôi đã không thực sự hiểu các thực tiễn tốt nhất cho đến khi tham gia một lớp học công ty không biết ngôn ngữ. Đây là một chủ đề rất lớn,.