![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam problem teoretyczny. Jest taka sytuacja
Mam klasę abstrakcyjną Człowiek, która realizuje jakieś opcje. I różni ludzie dziedziczą po tej klasie np:
i chcę aby każdy człowiek posiadał odpowiednie metody(które np ustalają co człowiek potrafi, jak myśli, dla każdego wykonanie tej metody ma być inna). mogę zrealizować to za pomocą interfejsu np. Interface Genetyka
i wtedy będę miał:
ale coś mnie to kole w oczy. Ale mogę dodać metody do klasy abstrakcyjnej skoro i tak każdy człowiek po niej dziedziczy. Co wy byście zrobili. Zastosowali interface czy dodali definicje metod do klasy. Ten post edytował daniel1302 30.11.2011, 17:32:19 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 14 Dołączył: 8.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Najczysciej będzie jak zrobisz najpierw interfejs z metodami ktore maja byc publiczne i sluzyc do komunikacji z obiektem, a pozniej klasę abstrakcyjną go implementującą, a kolejne klasy ludzi bedziesz tworzyl rozszerzajac tą klasę abstrakcyjną.
Jedna uwaga - jezeli te metody maja byc chronione/prywatne to interfejs na to nie pozwoli, wtedy zostaniesz zmuszony by byly one publiczne, co z definicji jest bez sensu bo interfejs ma byc zbiorem metod publicznych pozwalajacych sie komunikowac z obiektem.
interfejs ma tą wadę że żadnych wspolnych metod do niego nie wrzucisz a ludzie na pewno beda mieli wspolne metody. Albo np ludzie beda cos robic tak samo ale w nieco inny sposob, wtedy mozesz uzyc wzorca metoda szablonowa i wspolną czesc kodu zapisac w klasie abstr. a te wyrozniajace ludzi w klasach potomnych a w samym interfejsie szablonu nie zaimplementujesz. A jak cie dalej bedzie kuło w oczy, to zacznij pisac nazwy metod i zmiennych po angielsku (IMG:style_emoticons/default/biggrin.gif) Interfejsu uzywaj tylko wtedy jak wiesz ze bedziesz musial dziedziczyc po kilku klasach - w php tego nie zrobisz, bedziesz musal zastapic klasy interfejsami. Choc i wtedy mozna wylaczyc wspolny czynnik przed nawias - porobic klasy abstrakcyjne dla kazdej kombinacji interfejsów ze sobą. jesli chcesz podszkolic sie z podręcznikowej obiektowości to polecam książkę Kenta Becka chyba ale nie dam sobie głowy uciąć, w każdym razie książka nazywa się "Clean Code" lub "Czysty kod. Podręcznik dobrego programisty". Jest na pewno w twojej bibliotece na uczelni, a jeżeli nie to na necie po angielsku. Ten post edytował Orzeszekk 30.11.2011, 20:02:50 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 10:38 |