![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
W ramach próby zrozumienia obiektowego podejścia piszę bazę danych o filmach. Mam kilka wątpliwości. Mam klasę Movie, która zawiera prywatne własności jak: id, tytuł, rok produckji, reżyser, opis, gatunek... Id odpowiada id z bazy danych. Konstruktor na podstawie Id wypełnia obiekt danmi z bazy, jeżeli id nie zostało podane tworzy pusty obiekt, ktory można wypelnic za pomoca metod dostepowych. Jest jeszcze flaga change, a destruktor zapisuje zmiany do bazy jezeli została ustwiona. Jeżeli wyszukiwarka zwróci powiedzmy 15 pasujących filmów (ich id) to do stworzenia 15 obiektów potrzeba 15 dodatkowych zapytań!! Myślałem o dodatkowej klasie MovieManager, która na podstawie jednego zapytania tworzylaby w petli puste obiekty Movie i wypelniala je danymi z wczesniejszego zapytania. Proszę o jakieś sugestie! |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
tak to jest jedna z wad ORM, że w sumie tak naprawdę musiałbyć mieć tyle zapytań, na szczęście jest rozwiązanie, możesz stworzyć tę swoją klasę MovieManager lub możesz stworzyć statyczną metodę w klasie Movie i za jej pomocą możesz pobierać większe kolekcje danych, poniżej przykład:
aczkolwiek stworzenie klasy MovieManager (lub MovieCollector) jest lepszym i bardziej przejrzystym rozwiązaniem |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki za szybką odpowiedź!
Mam jednak kolejne wątpliwości. Klasa Movie zawiera prywatne własności takie jak tytuł, rok, rezyser, aktorzy, gatunek i opis. Wyszukiwarka umożliwia wyszukanie filmu np po roku produkcji. Załóżmy, że zwraca 20 pasujących produkcji. Nie widzę większego sensu, żeby wypełniać obiekt wszystkimi danymi tylko po to, żeby wyświetlić tytuły,rok i gatunek na liście wyników wyszukiwania. Jak już pisałem dopiero staram się zrozumieć OOP. Mam taki pomysł, żeby stworzyć klasę powiedzmy EasyMovie, z własnościami: tytuł, rok, gatunek, a dopiero klasa Movie rozszerzałaby ją o dodatkowe. Mówię o dziedziczeniu. Wyszuiwarka (klasa MovieFinder) zwracałaby jako wynik kolekcję (już mam szkic klasy Collection) obiektów EasyMovie. Pytanie brzmi czy to jest dobre podejście? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
to, co chcesz zastosować fachowo nazywa się leniwą konkretyzacją czyli nie pobierasz danej z bazy tak długo, aż do momentu gdy będzie Ci potrzebna.
więcej na ten temat znajdziesz tu Leniwa konkretyzacja? Jak to ugryźć?, Inicjowanie obiektu wybranymi wartościami |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 19:52 |