Những thách thức / nhiệm vụ / bài tập tốt để học hoặc nâng cao kỹ năng lập trình hướng đối tượng (OOP) [đóng]


81

Thách thức tốt để cải thiện kỹ năng của bạn trong lập trình hướng đối tượng là gì?

Ý tưởng đằng sau cuộc thăm dò này là cung cấp ý tưởng về những bài tập nào hữu ích cho việc học OOP.

Thách thức phải là ngôn ngữ bất khả tri nhất có thể, yêu cầu sử dụng ít hoặc không sử dụng các thư viện cụ thể, hoặc chỉ sử dụng thư viện phổ biến nhất. Cố gắng chỉ bao gồm một thử thách cho mỗi câu trả lời, để một phiếu bầu sẽ tương ứng với thành tích của thử thách đó. Cũng sẽ rất tuyệt nếu một mức độ kỹ năng cần thiết được chỉ ra, và cũng là lý do tại sao nó là một bài tập hữu ích.

Các giải pháp cho những thách thức sau đó có thể được đăng dưới dạng câu trả lời cho câu hỏi "Làm thế nào để ..." và được liên kết từ đây.

Ví dụ:

  • Thử thách - triển khai ngăn xếp cuối cùng vào trước - xuất trước
  • Cấp độ kỹ năng - người mới bắt đầu
  • Cơ sở lý luận - đưa ra kinh nghiệm về cách tham chiếu các đối tượng

Trường đại học của tôi có một bài tập bắt buộc: Viết trình phát media Java để phát các tệp mp3. Đó là một bài tập trong nhiều tuần, rất tuyệt vời cho người mới bắt đầu. Có 8 chương với các giải pháp mẫu cho mỗi bài, cũng như các bài kiểm tra đơn vị. ~ 70% mã luôn được cung cấp và bạn có rất nhiều nhiệm vụ khá cụ thể cho mỗi chương. Giao diện người dùng đơn giản, truy cập tệp, cài đặt lưu trữ, sử dụng kế thừa & đa hình, thêm các lớp của riêng bạn, rõ ràng là các vòng lặp và điều kiện. Nó có mọi thứ bạn muốn để bắt đầu. Đáng buồn là nó được bảo vệ quyền sao chép -__- Tôi thậm chí đã thêm các tính năng của riêng mình sau khi hoàn thành.
Heinzlmaen

Câu trả lời:


43

Kỹ năng Xây dựng trong Thiết kế Hướng Đối tượng là một cuốn sách miễn phí có thể được sử dụng.

[ CHỈNH SỬA: Cuốn sách gốc dường như có bitrotted (404 cho tất cả các định dạng) nhưng Internet Archive có các phiên bản dưới dạng HTML , PDFMOBI ]

Mô tả như sau:

"Mục đích của cuốn sách này là giúp người thiết kế ban đầu bằng cách cung cấp cho họ một chuỗi các bài tập thú vị và phức tạp vừa phải trong thiết kế OO. Cuốn sách này cũng có thể giúp các nhà quản lý phát triển mức độ thoải mái với quá trình phát triển phần mềm OO. Các ứng dụng chúng tôi sẽ xây dựng là một bước trên tầm thường và sẽ đòi hỏi một số suy nghĩ và thiết kế cẩn thận. Hơn nữa, vì các ứng dụng chủ yếu mang tính chất giải trí nên chúng rất thú vị và hấp dẫn. Cuốn sách này cho phép người đọc khám phá các quy trình và hiện vật của thiết kế OO trước thời hạn dự án làm cho thiết kế tốt dường như là không thể. "


1
Tôi thứ hai điều này - cuốn sách thực sự hay.
Nikola Anusev

14

Viết một chương trình đầy thử thách từ đầu . Cố gắng mời một số người (khoảng năm người, điều đó có thể làm được) sử dụng nó. Đáp ứng yêu cầu thay đổi của họ.

Điều chỉnh thiết kế chương trình của bạn. Bắt đầu nhỏ, sau đó xem nó phát triển. Quản lý sự tăng trưởng này. Điều này thật khó. Bạn cũng sẽ phải sửa lỗi và bảo trì nó theo thời gian, đó là một bài học rất quý giá đối với tôi.


7
1 trả lời yêu cầu thay đổi của họ
bhathiya-Perera

9

Thách thức: Viết trình bao bọc cho trang web / API dịch vụ bạn chọn bằng ngôn ngữ bạn chọn, ngôn ngữ đó chưa tồn tại (ví dụ: trình bao bọc API ZenDesk được viết bằng C #). Phát hành trình bao bọc dưới dạng mã nguồn mở cho những người khác sử dụng.

Cấp độ kỹ năng: Sơ cấp đến Trung cấp

Cơ sở lý luận: Để tìm hiểu cách ngoại suy API dịch vụ web của bên thứ 3 thành một tập hợp các đối tượng / lớp có ý nghĩa, giúp việc sử dụng lại API đó dễ dàng hơn bằng ngôn ngữ bạn đã chọn.


4

Sau khi bạn đã học được những kiến ​​thức cơ bản, hãy nghiên cứu cuốn sách về mẫu thiết kế "Gang of four".

http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1221488916&sr=8-1

Đây là một cuốn sách kinh điển và phải đọc đối với bất kỳ lập trình viên nào muốn hiểu cách sử dụng OO để thiết kế các giải pháp thanh lịch cho các vấn đề mã hóa phổ biến.


7
Với tất cả sự tôn trọng dành cho GOF, "Đầu tiên trong các mẫu thiết kế" là một bài đọc thú vị hơn nhiều.
CaptainHastings

2
GOF là điều tối thượng và chúng ta không nên lo sợ về điều đó. Đọc nó hàng ngày trước khi đi ngủ.
kta

3

Lấy một đoạn mã được viết theo kiểu thủ tục và cố gắng chuyển nó thành giải pháp dựa trên OOP. Trong quá trình này, hãy tham khảo một cuốn sách về tái cấu trúc và thiết kế các mẫu. Một người bạn của tôi đã có thể đạt được một bước tiến lớn trong việc hiểu chính xác các khái niệm hướng đối tượng theo cách này. Như với bất cứ điều gì, điều này có thể không hiệu quả với tất cả mọi người.


2

Tôi nhận thấy thẻ CRC khá hiệu quả trong việc học, dạy và xây dựng thiết kế OO tốt.


1

Chắc chắn một thách thức tốt, mặc dù ít dễ tiếp cận hơn so với việc gán "bắt đầu lại từ đầu", là cấu trúc lại một số mã hiện có hoặc không sử dụng tính kế thừa hoặc không sử dụng nhiều để sử dụng nhiều hơn tính kế thừa. Quá trình tái cấu trúc sẽ cho thấy rất nhiều lợi ích và những điều đáng mừng, vì nó chắc chắn có đối với tôi trong dự án gần đây nhất của tôi. Nó cũng thúc đẩy tôi hiểu các khái niệm tốt hơn so với các dự án trước đây mà tôi đã tạo ra các thiết kế hướng đối tượng của riêng mình.


0

Một nhiệm vụ nhất định không liên quan rất nhiều đến việc trở thành "OOP", nó nhiều hơn ở cách bạn chấm điểm nó.

Tôi sẽ xem cuốn sách Tái cấu trúc, chương 3 và đảm bảo rằng không có mùi mã xấu nào tồn tại trong giải pháp. Hoặc, quan trọng hơn, xem qua những cái áp dụng.

Quan trọng nhất, hãy để ý sự tồn tại của các bộ định tuyến và bộ chuyển đổi (cho biết rằng bạn đang hoạt động trên các giá trị từ một lớp và không yêu cầu lớp hoạt động trên các giá trị của chính nó) - hoặc sử dụng "extension" mà không áp dụng Nguyên tắc thay thế Liskov, những thứ như cái đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.