Objektowe podejście do produktu, W jaki sposób najlepiej podejść do opracowywania klasy produktu |
Objektowe podejście do produktu, W jaki sposób najlepiej podejść do opracowywania klasy produktu |
2.11.2007, 15:37:14
Post
#1
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 20 Dołączył: 13.05.2007 Skąd: Warszawa Ostrzeżenie: (0%) |
Witam,
Chciałem się dowiedzieć czy mój tok myślenia odnośnie programowania obiektowego jest właściwy. Napisałem klasę do obsługi produktu jest to oczywiście mały zalążek tej klasy jednak nim zacznę pisać dalej chciałem się upewnić czy rozwiązania przyjmowane prze zemnie są prawidłowe.
Pierwsze moje pytanie dotyczy samego pobierania danych produktu z bazy danych czy przyjęte rozwiązanie jest prawidłowe czy też można to rozwiązać w jakiś lepszy sposób Kolejna sprawa dotyczy aktualizacji danych produktu, gdzieś wyczytałem (niestety obecnie nie jestem w stanie określić źródła tych informacji), że dobrym podejściem jest aktualizacja danych produktu w bazie przy niszczeniu obiektu (pisząc odpowiednią funkcję w destruktorze). Czy rzeczywiście jest to dobre rozwiązanie Ten post edytował porady-it.pl 2.11.2007, 16:00:16 -------------------- Kurs Video PHP i MySQL, porady-it.pl - gotowe rozwiązania dla webmasterów
|
|
|
2.11.2007, 17:57:54
Post
#2
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 8.07.2006 Ostrzeżenie: (0%) |
Ja bym dazyl do osiagniecia takiego mechanizmu:
Rozdzielilbym operacja na bazie danych/zrodla danych od jednostki elementarnej czyli produktu. Manager przyjmuje obiekt produktu i go dodaje do bazy, manager zwraca obiekt produktu z bazy, na ktorym pozniej mozesz prowadzic dalsze operacje. W OOP jestem poczatkujacy, ale tak to rozumuje. Ten post edytował Helios 2.11.2007, 18:12:53 |
|
|
3.11.2007, 09:17:34
Post
#3
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 20 Dołączył: 13.05.2007 Skąd: Warszawa Ostrzeżenie: (0%) |
Czyli rozumiem że w tym wypadku funkcja _getInfo która pobiera informacje z bazy o produkcie miała by zostać przerzucona do klasy ProductManager jako getProductById i mniej więcej miło by to wyglądać w następujący sposób:
Mam jeszcze takie pytanko bowiem Ty w swoim przykładzie pokazywałeś że podstawowe dane produktu są przesyłane przez konstruktor, czy należy tak robić nawet w przypadku bardzo dużej ilości parametrów ? -------------------- Kurs Video PHP i MySQL, porady-it.pl - gotowe rozwiązania dla webmasterów
|
|
|
3.11.2007, 10:15:58
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) |
Wedlug mnie twoja metoda wybierajaca dane z bazy powinna zwrocic tablice na ktorej potem bedziesz operowal, a co do konstruktora to powinienes tam wsadzic tylko to co bedzie ci potrzebne przy tworzeniu obiektu klasy
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
8.11.2007, 10:54:25
Post
#5
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 20 Dołączył: 13.05.2007 Skąd: Warszawa Ostrzeżenie: (0%) |
Rzeczywiście zgadzam się z Tobą że lepszym rozwiązaniem będzie zwracanie tablicy. Tak się zastanawiam czy przydakiem obiekt "product" nie będzie już zbędny, gdyż zwrócone dane w postaci tablicy mogę bezpośrednio przekazać do szablonu np. smarty gdzie dane te zostaną wyświetlone. Czy w takim wypadku tworzenie obiektu "product" nie zatraca sensu ? W jakim przypadku obiekt "product" może się przydać ?
Ten post edytował porady-it.pl 8.11.2007, 10:55:13 -------------------- Kurs Video PHP i MySQL, porady-it.pl - gotowe rozwiązania dla webmasterów
|
|
|
8.11.2007, 11:17:16
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
W oczywsity sposób - nie musisz pisać kod SQL za każdym razem. Lepszym rozwiązaniem jest stosowanie obiektu Product i productsManager.
Wtedy sam Product to odzwierciedlenie tabeli/tabel bazy danych i operacje na niej, natomiast productsManager, jak nazwa wskazuje - zarządza obektami typu Product. Może zawierać metody np, takie (one nie sa statyczne - tylko tak się zapisuje): productsManager::getAsArray(), productsManager::getProducts(), productsManager::addToCollection() itp. Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 04:10 |