Хороші завдання / завдання / вправи для вивчення або вдосконалення навичок об’єктно-орієнтованого програмування (ООП) [закрито]


81

Що є гарним випробуванням для вдосконалення ваших навичок об’єктно-орієнтованого програмування?

Ідея цього опитування полягає в тому, щоб надати уявлення, які вправи корисні для вивчення ООП.

Завдання повинно бути якомога мовнішим агностиком, що вимагає або незначного використання або взагалі використання конкретних бібліотек, або лише найпоширенішої з бібліотек. Спробуйте включити лише один виклик на кожну відповідь, щоб голосування відповідало достоїнствам цього виклику. Також було б непогано, якби вказали необхідний рівень навичок, а також обгрунтування того, чому це корисна вправа.

Потім рішення проблем можуть бути опубліковані як відповіді на запитання "Як ..." та посилання звідси.

Наприклад:

  • Виклик - реалізуйте стек "останній-у-першому"
  • Рівень майстерності - початківець
  • Обгрунтування - дає досвід щодо посилань на об’єкти

У моєму коледжі була вправа, яка була обов’язковою: Написати медіаплеєр Java для відтворення файлів mp3. Це було завдання протягом декількох тижнів, що було чудово для початківців. Було 8 розділів із зразковими рішеннями для кожного, також одиничні тести. Завжди давали ~ 70% коду, і у вас було близько десятка цілком конкретних завдань на главу. Простий інтерфейс, доступ до файлів, зберігання налаштувань, використання успадкування та поліморфізму, додавання власних класів, очевидно, циклів та умов. У ньому було все, що ти хотів почати. На жаль, це захищено авторським правом -__- Я навіть додав свої власні функції після того, як закінчив.
Heinzlmaen

Відповіді:


43

Побудова навичок в об’єктно-орієнтованому дизайні - це безкоштовна книга, яка може бути корисною.

[ РЕДАКТУВАТИ: Оригінальна книга, здається, була розроблена (404 с для всіх форматів), але Інтернет-архів має версії як HTML , PDF та MOBI ]

Опис є таким:

"Метою цієї книги є допомогти початківцю дизайнеру, надавши їм послідовність цікавих і в міру складних вправ в дизайні ОО. Ця книга також може допомогти менеджерам розвинути рівень комфорту в процесі розробки програмного забезпечення для ОО. Додатки, які ми будемо build є на крок вище тривіального, і вимагатиме ретельного продумування та проектування. Крім того, оскільки додатки мають в основному рекреаційний характер, вони цікаві та цікаві. Ця книга дозволяє читачеві дослідити процеси та артефакти ОО-дизайну до закінчення строків проекту зробити гарний дизайн неможливим ".


1
Я дружу це - справді гарна книга.
Нікола Анусєв

14

Напишіть складну програму з нуля . Спробуйте змусити деяких людей (близько п’яти, що повинно бути здійсненним) використовувати його. Відповідайте на їхні запити на зміну.

Адаптуйте дизайн вашої програми. Почніть з малого, а потім спостерігайте, як він росте. Керуйте цим зростанням. Це важко. Вам також доведеться виправляти помилки та підтримувати річ з часом, що для мене було дуже цінним уроком.


7
+1 Відповідь на їхні запити на зміну
bhathiya-perera

9

Завдання: Напишіть обгортку для обраного вами API веб-сайту / послуги на вибраній вами мові, яка ще не існує (наприклад, обгортка API ZenDesk, написана на C #). Випустіть обгортку як відкритий код для використання іншими.

Рівень майстерності: Від початкового до середнього

Обґрунтування: навчитися екстраполювати API сторонніх веб-служб у значущий набір об’єктів / класів, полегшуючи повторне використання цього API на вибраній мові.


4

Після того, як ви вивчите ази, вивчіть книгу з дизайном "Банда чотирьох".

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

Це класика, і її обов’язково слід прочитати кожному програмісту, який хоче зрозуміти, як використовувати ОО для розробки елегантних рішень загальних проблем кодування.


7
При всій повазі до GOF, "Головою першим у дизайні" є набагато приємнішим читанням.
CaptainHastings

2
GOF є остаточним, і ми не повинні боятися цього. Читайте його щодня перед сном.
kta

3

Візьміть письмовий фрагмент коду в процедурному стилі та спробуйте перетворити його на рішення на основі ООП. Під час процесу зверніться до книги з питань рефакторингу та шаблонів дизайну. Мій друг зміг зробити величезний крок уперед у розумінні об’єктно-орієнтованих концепцій саме таким чином. Як і будь-що інше, це може працювати не для всіх.



1

Безумовно, хорошим викликом, хоча і менш доступним, ніж призначення "почати з нуля", є рефакторинг якогось існуючого коду, який або не використовує успадкування, або не використовує багато його для більшого використання спадщини. Процес рефакторингу відкриє багато переваг та недоліків oop, як це, безумовно, має для мене в моєму останньому проекті. Це також підштовхнуло мене зрозуміти концепції краще, ніж у минулих проектах, де я створював власні об’єктно-орієнтовані проекти.


0

Дане завдання має дуже мало спільного з тим, щоб бути "ООП", це більше в тому, як ви його оцінюєте.

Я б подивився книгу з рефакторингу, розділ 3, і переконався, що в рішенні немає жодного запаху поганого коду. Або, що більш важливо, перегляньте ті, які дійсно застосовуються.

Найголовніше, стежте за існуванням сеттерів та геттерів (вказуючи, що ви оперуєте значеннями класу і не просите клас оперувати власними значеннями) - або використовуючи "extends" без застосування Принципу заміщення Ліскова, подібні речі що.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.