![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
Witam, zaczynam z OOP i napisałem prostą klasę walidującą dla małych formularzy, napiszcie co można poprawić, miałem ją zaopatrzyć w MVC i prezentować błędy widokiem ale to już na kiedy indziej.
Ten post edytował MateuszS 21.04.2010, 17:23:14 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jakis praktyczny przyklad masz komponent News i pokolei klase News_Model,News_View i News_Controller To teraz tak:1) Czym jest w tym przykładzie News, czym jest News Model, czym News View oraz czym jest News Controller? Skoro mają dziedziczyć po tym samym (News) sugeruje to, że wszystkie te klasy są Newsem, jednakże ciężko jest mi wyobrazić sobie jakąkolwiek zależność (na tej płaszczyźnie) pomiędzy takimi klasami. Cytat Jako ze uzywamy MVC to jesli model komponentu News bedzie dziedziczyl po klasie do obslugi np mysql'a to bedzie ok czyli: Dlaczego co widzę pytanie mające najmniejszy związek z OOP/projektowaniem aplikacji zaraz wplata się wątek MVC? Biedne MVC jest już chyba tym dla PHP co AJAX dla JS.
Nie wprowadzaj w ogóle pojęcia tego wzorca na tę chwilę bo jest to zbyteczne. Jedynie mieszasz autorowi wprowadzając kolejne "dziwne nazwy" których nie rumie (Ty zresztą chyba też o czym za chwilę - bez urazy (IMG:style_emoticons/default/tongue.gif) ). Dlaczego NewsModel (czyli jak rozumiem coś co ma pełnić rolę Modelu dla zasobu: News) ma dziedziczyć po klasie obsługi bazy danych? W jaki sposób News rozszerza dostęp do bazy danych? Czy News jest dostępem do bazy danych? Tak absurdalne pytania tworzy Twój pomysł. Ten obiekt (NewsModel) co najwyżej może wykorzystywać obiekt MysqlDB. Może nie oznacza, że musi, bo Newsy mogą być pobierane np. z pliku XML czy z innego portalu - wtedy nie ma potrzeby by NewsModel w ogóle miał możliwość zrobienia czegokolwiek w bazie danych. Cytat A dlaczego jest ok bo klasa News_Model nie wprowadza zadnych nowych funkcjonalnosci ktore zmienia przeznaczenie klasy tylko operuje na bazie tak jak to robi klasa MySqlDb z tym ze rozszerza je o funkcje pobierania news'ow,usuwania ich,edytowania i dodawania operujac zawsze na bazie. Wybacz, ale: Google "dziedziczenie programowanie obiektowe", "kompozycja programowanie obiektowe". Nie rozpoznajesz relacji jest (is a) oraz ma (has a).Cytat Instancje klasy uzywasz wtedy gdy potrzebujesz uzyc jakas klase w srodku innej jednak te w klasy nie maja ze soba nic wspolnego No tutaj to już pojechałeś... Jeżeli dwa obiekty nie mają ze sobą nic wspólnego to jakim cudem mogą współpracować?Cytat To znaczy nie mozesz zrobic takie potwora z czarnobyla: Tak swoją drogą... tutaj piszesz o Czarnobylach, a wcześniej sam takiego zrobiłeś (NewsModel dziedziczy po MySQLDB)
Cytat Nie wiem czy jasno napisalem moze przyklady jakies takie nie takie ale na szybko podalem przyklad. Przykład z dupy... znaczy się: kompletnie niepoprawny. Jakim cudem BMW może być rozszerzeniem samochodu? Przecież to jest marka samochodu (BMW czyli marka mogłoby być właściwością obiektu).
Przykład korygujący:
Kod IMHO nie rozszyfrowałem skrótu acl. ACL = Access Control ListKod Mądrze piszesz i trochę mi rozjaśniłeś ale czy jest sens żeby taka przykładowa klasa News_Model dziedziczyła po MYSQLDB ? Jak już napisałem - nie ma. Co więcej jest to błąd.btw: Nie ulegaj złudzeniu, że jak ktoś się posługuje zwrotami, których nie znasz, to automatycznie oznacza, że się zna. (IMG:style_emoticons/default/smile.gif) Kod Przecież można przekazać zwyczajnie obiekt, po co każda lepsza klasa potem ma dziedziczyć z Mysqla. Jeżeli ta klasa będzie musiała dziedziczyć z innej przy okazji? Dokładnie tak to powinno być rozwiązane.Kod PHP nie obsługuje z tego co wiem dziedziczenia z kilku klas. Tak jest. ...i całe szczęście.Kod Jaka jest praktyczna różnica pomiędzy dziedziczeniem a wywołaniem obiektu klasy w klasie, przykład: Dziedziczenie oznacza właśnie relację typu: jest. Jeżeli Jabłko dziedziczy po Owoc to możemy powiedzieć, że Jabłko jest Owocem - przy czym Jabłko to jakiś bardziej wyspecjalizowany byt niż Owoc. To drugie to tzw. kompozycja i jest to relacja typu: ma. Samochód ma silnik (ma również Lusterko, Fotel, Kierownicę), ale o samochodzie nie powiesz, że jest to silnik.Kiedy używamy kompozycji? W momencie, kiedy dany obiekt, potrzebuje wykonywać jakieś operacje na innym. Przykład: Ten przykład łamie wiele paradygmatów obiektówki (np. hermetyzację danych), ale powinno dać Ci to jako taki obraz na współpracę obiektów. Ten post edytował Crozin 23.04.2010, 01:04:44 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 11:50 |