Witam,
Otóż sprawa wygląda tak:
Na studiach programowałem w Delphi, spodobało mi się. Mój projekt inżynierski to była implementacja obliczania przepustowości skrzyżowań bez sygnalizacji świetlnej w Delphi. Projekt wyszedł dosyć dobrze, był nawet konkretny - bo jedna taka instrukcja ma ok. 100 stron i masę wzorów i przypadków.
Przykładowo - przepustowość jest zależna od kierunków w jakie można jechać z danego pasa (tzw. relacje), natężenia pojazdów na skrzyżowaniu, ilości pasów, występowania skanalizowania skrzyżowania, przejść dla pieszych, umiejscowienia skrzyżowania (duże miasto, małe, itp.) i wiele innych. Oblicza się przepustowości dla skrzyżowań, wlotów i poszczególnych pasów.
Stworzyłem kilka klas robiąc ten projekt, jednak większość projektu była robiona strukturalnie.
Ostatnio nieco zainteresowałem się Javą która jest w pełni obiektowa i w związku z tym próbuję zrozumieć jak powinno się tworzyć klasy. Zrobiłem kilka prostych programów, ale każdy był malutki. Chciałbym zrobić podobny projekt w Javie, jednak nie do końca rozumiem koncepcję tworzenia klas.
Przykładowo stworzę sobie klasy "Skrzyzowanie", "Wloty", "Pasy", "Relacje". Jak wiadomo W skrzyżowaniu znajdują się:
- wloty,
- na wlotach znajdują się pasy,
- na pasach znajdują się relacje.
Później dochodzą jeszcze takie rzeczy jak:
- przejścia dla pieszych na wlotach,
- skanalizowanie wlotu,
- znaki stop lub ustąp pierwszeństwa dla wlotu,
- natężenia ruchu na pasach,
- natężenie ruchu dla poszczególnych kierunków,
- udział ciężarówek/rowerów/autobusów dla kierunku,
- itd..
Może jednak powinienem wszystkie te informacje zawrzeć w jednej klasie?
Kiedy już mamy opisane skrzyżowanie, trzeba stworzyć metody dla obliczania przepustowości. Zaczynając od:
- przepustowości relacji,
- przez przepustowości wlotów,
- kończąc na przepustowości skrzyżowania.
Do tego jest masa wzorów. Czy te wzory powinny być w kolejnej klasie o nazwie "Natężenia", czy może poszczególne metody dla obliczania natężeń powinienem zawrzeć w klasach do których się odwołują? Ostatecznie kompletnie wszystko jest ze sobą powiązane, poza metodami obliczania poszczególnych natężeń i współczynników. Okej, więc klasy muszą być publiczne, w nich są zawarte prywatne metody i ostateczny wynik po obliczeniach jest publiczny żeby inne klasy mogły z niego korzystać. Jednak czytałem gdzieś, że klasy nie powinny być od siebie aż tak zależne, więc nie wiem co o tym myśleć.
Mam parę myśli jak mógłbym to zrobić, jednak nie chcę zaczynać od robienia czegoś źle. Owszem jest dużo tutoriali czy książek i staram się zrozumieć jak się do tego zabrać tak czysto teoretycznie. Są może jakieś wzorce które mi podpowiedzą co mam zrobić?
Pytanie więc do doświadczonych programistów znających się na OOP:
Jak wy byście się zabrali za tworzenie takich klas? Co polecacie poczytać? Czy dobrze robię ucząc się Javy tworząc aplikację graficzną od podstaw? Może jakiś inny język programowania będzie się do tego lepiej nadawał (chociaż wolałbym jednak Javę)?