Przez ostatnie kilka miesięcy studiowałem OOP w połączeniu z implementacją Zend MVC. Ogólnie jestem całkiem nowy w programowaniu, ale zdecydowanie uważam, że powinienem uczyć się rzeczy „we właściwy sposób”, co dla mnie oznacza upewnienie się, że rozumiem, dlaczego rzeczy są wykonywane tak, jak są. Tzn. Odkryłem, że ucząc się, jak coś zrobić (cokolwiek, powiedzmy muzykę), najlepszym sposobem, aby dowiedzieć się, jak coś zrobić, jest wiedzieć, dlaczego tak się dzieje.
W każdym razie bardzo trudno mi było zrozumieć, jak opracować własne modele biznesowe (tj. M z MVC), i zdecydowałem, że to nie dlatego, że ogólnie nie rozumiem OOP, ponieważ studiowałem go przez kilka miesiące i nie sądzę, że koncepcje są bardzo trudne do zrozumienia. Przykłady, które studiowałem, są bardzo intuicyjne. Myślę, że problem polega na przełożeniu własnych problemów na rozwiązania obiektowe. Przykłady w książkach (które do tej pory przeczytałem) są zbyt oczywiste, więc proces tłumaczenia problemu na obiekty nie jest bardzo trudny. Wydaje mi się, że brakuje mi abstrakcyjnego procesu na wysokim poziomie. Jakaś lista kroków lub pytań, na które każde rozwiązanie obiektowe musi odpowiedzieć na najwyższym poziomie.
Gdybyś musiał opisać taki proces w nie więcej niż pięciu krokach, co by to było i dlaczego? Jaki jest najskuteczniejszy proces w tłumaczeniu dowolnego problemu na rozwiązanie obiektowe?
źródło
Odpowiedzi:
Znalezienie odpowiedniego modelu nie zawsze jest proste. Jest to jedna z tych rzeczy, które wymagają więcej doświadczenia niż zwykłej wiedzy. Jednak następujący prosty przepis może pomóc ci pokonać początkowy blok mentalny.
Został pierwotnie opisany w tym artykule przez Abbott i jest często określany jako „analiza tekstowa Abbott”.
Przykład:
Rzeczowniki , czasowniki i
adjectives
są oznaczone.Pierwsza iteracja analizy dałaby:
Klasy:
Odtąd możesz zastanowić się, która klasa potrzebuje atrybutów i metod, aby wdrożyć zachowanie, a następnie udoskonalać ten model w coraz większym stopniu.
źródło
Moim zdaniem przyjęcie podejścia TDD jest naturalne i skuteczne:
Dzięki temu procesowi możesz stopniowo wytwarzać testowalny kod z dźwiękiem. Na początku możesz pomyśleć, że test pisania jest niepotrzebny, ale ta aktywność faktycznie pomaga zbudować architekturę dźwięku.
źródło
Oto kroki, których używam w kodzie c ++:
Powodem (1) jest to, że określa zakres tego, jaka funkcjonalność należy do klasy. Powodem (2) jest to, że określa, w jaki sposób klasa komunikuje się ze światem zewnętrznym. Powodem (3) jest to, że określa, jak wybrać, która funkcjonalność klasy jest potrzebna w każdej sytuacji. Powodem (4) jest to, że pozwala na użycie klasy w wielu różnych sytuacjach. Powodem (5) jest to, że określa granicę między projektowaniem a wdrożeniem.
źródło