Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Model 2] : kolejne zapytanka ;)
KaGe
post 30.05.2004, 18:40:31
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.04.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


jestem wlasnie w trakcie pisania CMS - obiektowo i mam nstępujące problemy:

1) mam modele zbudowane tak, że np. użytkownik (jego klasa - User) składa się z podklas takich jak (UserId, UserName itd...) - a każda z tych podklas dziedziczy po klasie DataField - która odpowiada za wyciąganie i przetwarzanie kolenych pól w tabelach bazy danych.

Gdy chcę zapisać użytkownika wywołuję odpowiednie metody we wszystkich jego podklasach i dzięki temu zapisane zostają wszystkie jego dane itd... - zrozumiałe

Ale co zrobić, gdy chcę dodać nowego użytkownika?
Czy mam zrobić tak, żeby w klasie User była odpowiednia metoda zgłaszajaca zapytanie do bazy danych czy jakoś inaczej?

Czy jest ktoś na tym forum, kto ma coś takiego napisanego i mógłby mi to tu napisać? - albo przyjanmniej podesłać jakieś opracowanie...

2) czy widoki powinny się zagnieżdzać analogicznie do modeli?

3) czy można robić kilka kontrolerów

4) co to są akcje - bo często piszecie "akcje/widoki" - co to jest widok to wiem...

5) co to jest agregacja i czym różni się od asocjacji?


--------------------
Klasy, obiekty, metody, właściwości itd... - pomocy!!!!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
lukaswoj
post 30.05.2004, 20:43:26
Post #2





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 2.01.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Jestem w stanie tylko pomóc w zakresie punktu nr 5.

Polecam przeczytanie tego artykułu: Object Oriented php - jeśli tylko znasz angielski smile.gif

To co napiszę, będzie tłumaczeniem jednego z akapitów tego artykułu.

Asocjacja jest poprostu powiązaniem dwóch klas. A agregacja jest typem asocjacji więc chyba chodziło Ci o porównanie dwóch typów asocjacji: agregacji i kompozycji.

Mamy klasę A i klasę B. Jeśli klasa A korzysta z metod klasy B to już mamy asocjację. Jeśli klasa B nie wie nic o klasie A, czyli nie korzysta z jej metod a tylko daje się wykorzystywać przez klasę A to mamy do czynienia z asocjacją jednokierunkową. Klasa A jest świadoma istnienia klasy B i korzysta z jej metod. Jeśli zarówno klasa A korzysta z metod klasy B i klasa B korzysta z metod klasy A (czyli klasa B jest świadoma istnienia klasy A) - to asocjacja jest obustronna.
Generalnie należy dążyć do minimalizowania asocjacji obustronnych. W OOP ważne jest kapsułkowanie/hermetyzacja obiektów, więc chodzi o to żeby dana klasa skupiała się tylko na swoich zadaniach i wiedziała o otaczającym świecie tylko tyle ile musi, dzięki takiemu podejściu łatwo jest potem dany element zmienić, wymienić czy cokolwiek innego smile.gif - a o to w globalnym kontekście właśnie chodzi smile.gif

Ale się rozpisałem, no ale to nie wszystko.

Agregacja - występuje wtedy, gdy klasa A zawiera w sobie i korzysta z metod klasy B. Jeśli obiekt klasy A przestaje istnieć nie oznacza to końca istnienia klasy B. Jako przykład w kodzie php:
[php:1:437971f28a]
<?php
// klasa dostepu do bazy danych
$objDatabase = new DatabaseLayer();

// jakiś inny obiekt
$objCar = new Car($objDatabase);

// tutaj coś się dzieje w obiekcie $objCar

// niszczymy obiekt
unset($objCar);

// obiekt $objDatabase nadal istnieje i można go używać
?>
[/php:1:437971f28a]

Kompozycja - występuje wtedy, gdy klasa A zawiera w sobie i korzysta z metod klasy B. Jeśli obiekt klasy A przestaje istnieć oznacza to koniec istnienia klasy B. Klasa A jest odpowiedzialna za stworzenie i zniszczenie obiektu klasy B. Jako przykład w kodzie php:

[php:1:437971f28a]
<?php
// konstruktor klasy Car tworzy i przypisuje do wlasciwosci $engine obiekt klasy Engine
$objCar = new Car();


// tutaj coś się dzieje w obiekcie $objCar

// niszczymy obiekt
// destruktor obiektu Car niszczy najpierw obiekt klasy Engine
unset($objCar);

?>
[/php:1:437971f28a]

W przypadku kompozycji widać, że samodzielny obiekt klasy Engine na nic by nam sie nie przyadł, dlatego tworzony jest przez obiekt klasy Car i używany jest tylko przez niego po czym jest niszczony w momencie, kiedy obiekt Car przestaje istnieć.

Huh.....
Powiem tylko jeszcze, że przydałaby się weryfikacja tego co napisałem - niech jakiś OOP spec się wypowie, bo nie jestem do końca pewien czy nie napisałem bzdur smile.gif


--------------------
Pozdrawiam
Łukasz Wojciechowski
New Generation Software
+48 602 214 629
http://www.ngsoft.pl
Go to the top of the page
+Quote Post
marcin96
post 30.05.2004, 20:58:21
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 21.08.2003
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Cytat
3) czy można robić kilka kontrolerów


Chodzi Ci o kilka kontrolerów podczas pojedynczego odpalenia skryptu/akcji etc?
..czy może kilka w sensie rozbiciu aplikacji na kilka mniejszych? (np:index.php, subscription.php, forum.php itd?) ..jeżeli tak, to w jednym z frameworków podanych przez Hawka na końcu jego artykułu *chyba w Mojavi.. ale nie jestem pewien) właśnie jest coś takiego zrealizowane (rozbicie jakby na kilka mniejszych aplikacji.. po prostu różne *.php korzystają z różnych plików konfiguracyjnych)
Cytat
4) co to są akcje - bo często piszecie "akcje/widoki" - co to jest widok to wiem...


już odsyłałem do:
http://www.php.pl/index.php/phppl/t_umacze...d/a_cuchy_akcji

..tylko wtedy chwilowo tłumaczenie nie było dostępne ;>)


--------------------
www.calek.info
Go to the top of the page
+Quote Post
hawk
post 31.05.2004, 19:13:57
Post #4





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

Ostrzeżenie: (0%)
-----


Cytat
1) mam modele zbudowane tak, że np. użytkownik (jego klasa - User) składa się z podklas takich jak (UserId, UserName itd...) - a każda z tych podklas dziedziczy po klasie DataField - która odpowiada za wyciąganie i przetwarzanie kolenych pól w tabelach bazy danych.

A jaki jest tego sens? Nawet w javie są typy prymitywne, i nie ma sensu, jak coś ma atrybut typu całkowitoliczbowego, nie dawać tam po prostu int. Java akurat ma Integer, ale jego zastosowanie jest akurat inne...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:13