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
Odpowiedzi:
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 ”.
źródło
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ą.
źródło
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.
źródło
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.
źródło
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.
źródło
Zauważyłem, że karty CRC są dość skuteczne w uczeniu się, nauczaniu i budowaniu dobrego projektu OO.
źródło
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.
źródło
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.
źródło