Những câu hỏi phổ biến mà sinh viên có thể hỏi khi họ học OOP?

Jan 19 2021

Đọc câu hỏi này Chúng ta có thực sự cần ngôn ngữ OO để quản lý độ phức tạp của phần mềm không? trên một trong các trang SE và kinh nghiệm của bản thân trong việc giảng dạy khái niệm hướng đối tượng, ví dụ: Một số ví dụ thực tế thực tế để dạy các khái niệm và lập trình hướng đối tượng (trong python) đã khiến tôi tự hỏi những câu hỏi phổ biến mà sinh viên có thể hỏi khi họ lần đầu tiên học OOP là gì?

Ví dụ trong câu hỏi mà tác giả đã hỏi,

Tôi là một sinh viên CS mới bắt đầu ... Trong học kỳ đầu tiên, chúng tôi đã được giới thiệu về các khái niệm OOP như đóng gói, ẩn dữ liệu, mô-đun ...

Nhưng tôi nghĩ rằng tất cả các nguyên tắc được sử dụng để quản lý độ phức tạp như mô-đun, đóng gói, ẩn dữ liệu, v.v. có thể rất dễ dàng thực hiện bằng các ngôn ngữ thủ tục. Vì vậy, tại sao thực sự OOP nếu chúng ta có thể quản lý sự phức tạp mà không có nó?

Tôi cũng phải thừa nhận rằng tôi có một cuộc đấu tranh riêng, ví dụ như tôi đã hỏi câu hỏi này Liệu OOP có nhấn mạnh quá mức tầm quan trọng của danh từ và do đó đặt hành động / động từ ở vị trí ít quan trọng hơn? trên trang web đó (mặc dù chưa có sinh viên nào hỏi tôi câu hỏi này). Câu hỏi của tôi đã được đóng và thậm chí nhận được 2 phiếu xóa nhưng đó vẫn là mối quan tâm của tôi.

Nếu sinh viên của tôi hoặc đồng nghiệp của tôi có kinh nghiệm với javascript và thích tìm hiểu OOP, tôi sẽ luôn để họ so sánh momentj với date-fns , cả hai đều xử lý ngày tháng và cung cấp các chức năng tương tự, cả hai đều hoạt động tốt, nhưng momentjs là một thư viện OOP và date-fns là một thư viện hàm.

Mục đích của tôi là để họ hiểu rằng có nhiều cách để làm mọi việc.

Vì vậy, những câu hỏi phổ biến mà sinh viên của bạn hỏi là gì?

Trả lời

4 Qiulang Jan 20 2021 at 11:01

Tôi đã đọc qua hầu hết các câu hỏi được bình chọn được gắn thẻ hướng đối tượng trên softwareengineering.stackexchange.comstackoverflow.com . Tôi cảm thấy một số câu hỏi trên trang softwareengineering khá phổ biến khi học OOP trong khi các câu hỏi trên stackoverflow liên quan nhiều hơn đến các câu hỏi lập trình thực tế thường được các chuyên gia hỏi nhiều hơn.

Vì vậy, tôi đã liệt kê một số câu hỏi từ trang web softwareengineering,

  1. Tại sao chia một chương trình thành nhiều lớp là tốt? . Câu hỏi này thực sự đã được hỏi bởi một học sinh trung học.
  2. Các đối tượng trong OOP có phải đại diện cho một thực thể không? . Học sinh của tôi hỏi tôi câu hỏi này.
  3. Lợi ích của lập trình hướng đối tượng so với lập trình thủ tục là gì? câu hỏi này có phần liên quan đến câu hỏi "quản lý độ phức tạp của phần mềm" trong câu hỏi của tôi và tôi thảo luận với các đồng nghiệp của mình một câu hỏi thú vị khác đã được hỏi trên quora Làm thế nào Linux duy trì một cơ sở mã lớn như vậy khi C không phải là một ngôn ngữ hướng đối tượng? Có phải tất cả các cơ sở mã đã lộn xộn?
  4. OOP có thực hiện lời hứa tái sử dụng mã không? Có những lựa chọn thay thế nào để đạt được khả năng tái sử dụng mã? Tôi không chắc liệu học sinh có hỏi câu hỏi này hay không và tôi cũng có ý kiến ​​riêng cho câu hỏi này.
  5. Khi viết mã hướng đối tượng, tôi có nên luôn tuân theo một mẫu thiết kế không? . Trang web này cũng có câu hỏi về design pattern, Khóa học Khoa học Máy tính không dạy Design Patterns thì tệ như thế nào?
  6. Giải thích về cách "Nói, Không hỏi" được coi là OO tốt . Chỉ sau khi họ có được một số kinh nghiệm viết mã, họ mới có thể hỏi / đánh giá cao câu hỏi. Nhưng nó là một trong những tốt.
  7. Tôi có nên tạo một lớp nếu hàm của tôi phức tạp và có nhiều biến không? Một câu trả lời cũng là đề xuất của tôi cho sinh viên của tôi khi họ có câu hỏi như vậy, "Sử dụng một lớp, nhưng cũng cung cấp một hàm đứng tự do, chỉ tạo đối tượng, gọi phương thức và trả về kết quả, lớp mà bạn sử dụng nội bộ thực sự chỉ trở thành chi tiết triển khai chức năng công khai của bạn "

Quora cũng có một số câu hỏi thú vị mà tôi cảm thấy mọi người sẽ hỏi khi họ lần đầu tiên học OOP, tôi liệt kê một số câu hỏi ở đây:

  1. Có ai (ở vị trí lập trình viên) có thể tồn tại trong ngành công nghệ hiện đại (phần mềm hoặc không phần mềm) mà không có OOP không?
  2. Các nhà phát triển phần mềm sử dụng OOP thường xuyên như thế nào? . Một câu trả lời ở đó của Kurt Guntheroth rất thú vị "Bất cứ khi nào bạn viết một chương trình dài hơn 1.000 dòng, bạn nên sử dụng OOP. 1000 dòng? Tại sao vậy ...?"
  3. Khi nào thì lập trình hướng đối tượng không phù hợp?

Hy vọng rằng tôi có thể nhận được một số câu trả lời khác.

1 Eddie Feb 06 2021 at 17:23

Đây là một câu hỏi thực sự hay! Câu trả lời của bạn cũng bao gồm rất nhiều điều.

Tôi muốn đưa ra một phản ánh về điều gì có thể thúc đẩy những câu hỏi này.

Theo kinh nghiệm của tôi, những người học gặp OOP sớm trong hành trình của họ phải vật lộn với một số thử thách khác nhau, bao gồm:

  1. Họ vẫn chưa gặp / các vấn đề mà OOP giải quyết.
  2. Họ tin rằng có một giải pháp hoàn hảo cho tất cả các thách thức lập trình đang chờ được khám phá.

Những điều này dẫn đến vô số câu hỏi, sự bối rối và trong một số trường hợp là sự bất an.