Dobre wyzwania / zadania / ćwiczenia do nauki lub doskonalenia umiejętności programowania obiektowego (OOP) [zamknięte]

81

Co jest dobrym wyzwaniem, aby poprawić swoje umiejętności programowania obiektowego?

Ideą tej ankiety jest wskazanie, które ćwiczenia są przydatne do nauki OOP.

Wyzwanie powinno być tak niezależne od języka, jak to tylko możliwe, wymagające niewielkiego lub żadnego użycia określonych bibliotek lub tylko najbardziej powszechnych bibliotek. Postaraj się uwzględnić tylko jedno wyzwanie na odpowiedź, aby głosowanie odpowiadało zaletom samego wyzwania. Byłoby również miło, gdyby wskazano wymagany poziom umiejętności, a także uzasadnienie, dlaczego jest to przydatne ćwiczenie.

Rozwiązania tych wyzwań można następnie opublikować jako odpowiedzi na pytanie „Jak ...” i połączyć z tutaj.

Na przykład:

  • Wyzwanie - zaimplementuj stos ostatni na wyjściu
  • Poziom umiejętności - początkujący
  • Uzasadnienie - daje doświadczenie w zakresie odwoływania się do obiektów
Grundlefleck
źródło
Moja szkoła miała obowiązkowe ćwiczenie: napisać odtwarzacz multimedialny Java do odtwarzania plików mp3. To było zadanie na wiele tygodni, co było świetne dla początkujących. Było 8 rozdziałów z przykładowymi rozwiązaniami dla każdego, również testy jednostkowe. ~ 70% kodu było zawsze przekazywane, a ty miałeś z grubsza tuzin dość specyficznych zadań na rozdział. Prosty interfejs użytkownika, dostęp do plików, przechowywanie ustawień, używanie dziedziczenia i polimorfizmu, dodawanie własnych klas, oczywiście pętli i warunków. Miał wszystko, co chciałeś zacząć. Niestety jest chroniony prawem autorskim --__- Po zakończeniu dodałem nawet własne funkcje.
Heinzlmaen

Odpowiedzi:

43

Building Skills in Object-Oriented Design to darmowa książka, która może być przydatna.

[ EDYTUJ: Wydaje się, że oryginalna książka ma bitrotted (404s dla wszystkich formatów), ale archiwum internetowe ma wersje HTML , PDF i MOBI ]

Opis jest następujący:

„Celem tej książki jest pomoc początkującym projektantom, dając im sekwencję interesujących i umiarkowanie złożonych ćwiczeń z projektowania obiektowego. Ta książka może również pomóc menedżerom w osiągnięciu poziomu komfortu w procesie tworzenia oprogramowania obiektowego. Aplikacje, które będziemy build jest o krok ponad trywialne i będzie wymagał starannego przemyślenia i zaprojektowania. Ponadto, ponieważ aplikacje mają charakter głównie rekreacyjny, są interesujące i angażujące. Ta książka pozwala czytelnikowi zbadać procesy i artefakty projektowania OO przed terminami projektu sprawiają, że dobry projekt wydaje się niemożliwy ”.

Craig Angus
źródło
1
Popieram to - naprawdę dobra książka.
Nikola Anusev
14

Napisz ambitny program od podstaw . Spróbuj zachęcić kilka osób (około pięciu, to powinno być wykonalne), aby go użyli. Odpowiadaj na ich prośby o zmianę.

Dostosuj wygląd swojego programu. Zacznij od małych, a potem patrz, jak rośnie. Zarządzaj tym wzrostem. To jest trudne. Będziesz także musiał naprawiać błędy i utrzymywać to w czasie, co było dla mnie bardzo cenną lekcją.

Paweł Hajdan
źródło
7
+1 Odpowiedz na ich prośby o zmianę
bhathiya-perera
9

Wyzwanie: Napisz opakowanie dla wybranego interfejsu API witryny / usługi w wybranym języku, który jeszcze nie istnieje (np. Opakowanie API ZenDesk napisane w C #). Zwolnij opakowanie jako otwarte źródło, aby inni mogli z niego korzystać.

Poziom umiejętności: od początkującego do średnio zaawansowanego

Uzasadnienie: aby dowiedzieć się, jak ekstrapolować interfejs API usługi sieciowej innej firmy na znaczący zestaw obiektów / klas, ułatwiając ponowne użycie tego interfejsu API w wybranym języku.

busse
źródło
4

Po opanowaniu podstaw zapoznaj się z książką wzorców projektowych „Gang czterech”.

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

To klasyka i lektura obowiązkowa dla każdego programisty, który chce zrozumieć, jak używać OO do projektowania eleganckich rozwiązań typowych problemów związanych z kodowaniem.

killdash10
źródło
7
Z całym szacunkiem dla GOF, „Head first we wzorcach projektowych” jest o wiele przyjemniejszą lekturą.
CaptainHastings,
2
GOF jest ostateczny i nie powinniśmy się tego obawiać. Przeczytaj ją codziennie przed pójściem spać.
kta
3

Weź fragment kodu w stylu proceduralnym i spróbuj przekształcić go w rozwiązanie oparte na OOP. W trakcie tego procesu zapoznaj się z książką dotyczącą refaktoryzacji i wzorców projektowych. Mój przyjaciel był w stanie zrobić ogromny krok naprzód w zrozumieniu pojęć zorientowanych obiektowo właśnie w ten sposób. Jak wszystko, to może nie działać dla wszystkich.

Piotr K.
źródło
2

Zauważyłem, że karty CRC są dość skuteczne w uczeniu się, nauczaniu i budowaniu dobrego projektu OO.

swamy
źródło
1

Z pewnością dobrym wyzwaniem, chociaż mniej dostępnym niż przypisanie „zacznij od zera”, jest refaktoryzacja istniejącego kodu, który albo nie używa dziedziczenia, albo nie używa go zbyt dużo, aby w większym stopniu korzystać z dziedziczenia. Proces refaktoryzacji ujawni wiele korzyści i problemów z oop, co z pewnością ma dla mnie w moim ostatnim projekcie. Zmusiło mnie to również do lepszego zrozumienia koncepcji niż poprzednie projekty, w których tworzyłem własne projekty zorientowane obiektowo.

Łukasz
źródło
0

Dane zadanie ma niewiele wspólnego z byciem „OOP”, bardziej polega na tym, jak je oceniasz.

Zajrzałbym do książki Refaktoryzacja, rozdział 3, i upewniłbym się, że w rozwiązaniu nie ma żadnych nieprzyjemnych zapachów kodu. Lub, co ważniejsze, przejrzyj te, które mają zastosowanie.

Co najważniejsze, uważaj na istnienie ustawiających i pobierających (wskazujących, że operujesz na wartościach z klasy i nie prosząc klasy o operowanie na swoich własnych wartościach) - lub używając "rozszerzeń" bez stosowania zasady podstawienia Liskova, rzeczy takie jak że.

Bill K.
źródło