Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [oop] Powiazania klas
Forum PHP.pl > Forum > PHP
Seth
Pisze wlasnie system ankiet i zastanawiam sie nad zaleznosciami klas.
Mam cos takiego:
Kod
Page
|
+-- SectionsList
     |
     +-- Section
         |
         +-- QuestionsList
             |
             +-- Question
                 |
                 +-- AnswersList
                     |
                     +-- Answer

To jest drzewko zaleznosci klas - np. SectionsList "zawiera sie" w Page i posiada liste obiektow Section. Zkolei Section posiada QuestionsList, ktora ma liste obiektow Question itd.

Teraz zastanawiam sie czy jest sens tworzyc klasy (kolekcje) *List czy moze lepiej zaimplementowac metody obslugi takiej listy na poziomie klasy w ktorej znajdowac sie bedzie obiekt *List.

Czyli np w Page dodac metody takie jak GetNextSection itp. zamist robic $Page->SectionsList->GetNext();

?
byther
Cytat(Seth @ 2004-07-26 22:26:47)
Teraz zastanawiam sie czy jest sens tworzyc klasy (kolekcje) *List czy moze lepiej zaimplementowac metody obslugi takiej listy na poziomie klasy w ktorej znajdowac sie bedzie obiekt *List.

Czyli np w Page dodac metody takie jak GetNextSection itp. zamist robic $Page->SectionsList->GetNext();

?

Jedną z zasad OOP jest wzajemna niezależność klas/obiektów. Każdy obiekt operuje jedynie na własnych danych. Może to podpowie Ci rozwiązanie?
Seth
W sumie racja. Tworzac ta strukturetrocheniespodobala mi sie ilosc klas stad mialem watpliwosci.
Dzieki.
hawk
Może trochę OT, ale...

1) Czy potrzebne ci są te klasy kolekcji? W Javie dałbym zwykły ArrayList lub cokolwiek co jest odpowiednim kontenerem. Tzn. czy potrzebne ci jest np. SectionList jako osobna klasa? Gdyby dostarczała jakąś funkcjonalność większą niż typowa kolekcja, to tak. Ale jak nie?

2) Jak już OOP, PHP5 i iteratory (bo taki SectionList z metodą GetNext() jest iteratorem pełną gębą), to może zrobić te nowe iteratory wprowadzone w PHP5? Wtedy zamiast $Page->SectionsList->GetNext() byłoby foreach ($Page->$Sections as $Section) biggrin.gif
Seth
Ad 1. Racja i tak tez zrobie.

Ad 2. Bedzie to pod php 4 dlatego iteratory odpadaja.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.