Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 1 Dołączył: 20.07.2007 Ostrzeżenie: (0%)
|
Mam zależność tego typu:
ale do tego mam zależność:
Od jakiegoś czasu główkuję jak to rozwiązać, ale nic sensownego nie przychodzi mi do głowy. Ten post edytował Kedan 11.05.2009, 11:29:35 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%)
|
Nieraczek -> mała uwaga, że dyskusja nie dotyczy wskaźników, tylko wielokrotnego dziedziczenia.
Wszystkiego trzeba używać z umiarem. Jak ktoś pakuje kompozycję wszędzie, gdzie się da, "bo można cośtam", to jest to takie samo nadużycie, jak próba rozwiązywania wszystkich problemów świata przez dziedziczenie albo wielokrotne dziedziczenie. Więc nie żadne książki itd. a zwykłe myślenie i ludzka inteligencja są najważniejsze, bo to programista pisze kod i programista wie (a przynajmniej powinien), w jakim kierunku powinien on podążać i co powinno być dozwolone. Co komu z tego, że przeczyta książkę o wzorcach projektowych i później najchętniej to by rozszerzanie modelu o własną funkcjonalność w Doctrine w oparciu o kompozycję robił "bo a nuż mu przyjdzie jakiś hardcore'owy pomysł na rozszerzanie tego w trakcie działania". Nieukiem to można być, rzucając się bez głębszego zastanowienia na każdą nowinkę, jaką się gdzieś przeczytało, a nie dlatego, że tu się użyło dziedziczenia, a tam nie. Mój przykład jako rozbudowa przykładu ndx: 1. Piszę szachy. Zasady tej gry powstały 1000 lat temu. Jaka jest szansa, że będę dodawać nowe ruchy itd? Zerowa. Więc dziedziczenie, bo jest prostsze i rozwiązywane w czasie kompilacji, zatem nie ma co się męczyć i spowalniać programu, bo jakaś książka mówi cośtam (mówi to przy założeniu, że autor myśli, co robi). 2. Piszę aplikację do grania w różne odmiany szachów. Każda odmiana ma różne specyficzne reguły, a ponadto np. w "szachach chłopskich" sposób poruszania się figury na planszy może ulegać zmianie w trakcie gry (a użytkownik może chcieć robić własne odmiany). Paradoksalnie, ilość możliwych kombinacji jest wystarczającym argumentem na to, aby tych ruchów nie kodować na sztywno w postaci mnóstwa klas - można je dość prosto opisać jakimś abstrakcyjnym językiem, napisać parser i zrobić jedną klasę, która potrafi się poruszać na podstawie zadanych reguł. Dopiero aby ruchy mogły zmieniać się w trakcie gry, użyłbym kompozycji, i to zorientowanej bardziej na zmianę danych opisujących ruch, a nie jednego obiektu na inny. Dziedziczenie, wielokrotne dziedziczenie, kompozycja, to tylko narzędzia, a nie cel sam w sobie. Niektóre bardziej niebezpieczne i stwarzające problemy w samym języku (wielokrotne dziedziczenie), inne mniej, ale niewłaściwe użycie to niewłaściwe użycie. Czasem istnieje więcej, niż jedno dobre rozwiązanie i liczą się potrzeby. Dwie możliwe wypowiedzi dotyczące tego samego hipotetycznego kawałka kodu: 1. Użyłem tego rozwiązania, ponieważ daje ono możliwość XXX, z której w istotny sposób korzysta część aplikacji Y. Ponadto użytkownik musi mieć możliwość PPP do wykonania czynności Z, niezbędnej w niektórych sytuacjach. 2. Użyłem tego rozwiązania, ponieważ daje ono możliwość XXX. Jest ona bardzo przydatna, w przeciwieństwie do rozwiązania Y, które wielu często nadużywa, a które jej nie posiada, a wiele zalet tej możliwości można znaleźć np. w książce PPP. Pozostawiam wam to do przemyślenia i dodam jedynie, że wolałbym pracować z programistą #1... |
|
|
|
Kedan [PHP][OOP] wielokrotne dziedziczenie 11.05.2009, 11:28:38
phpion [PHP] pobierz, plaintext <?phpclass myConcreteM... 11.05.2009, 11:48:03
Kedan Nie o to chodzi.
myConcreteModule ma posiadać tyl... 11.05.2009, 12:05:27
marcio A klasy abstrakcyjne mozesz uzyc jak interfejsy ty... 11.05.2009, 12:29:42
batman Cytat(marcio @ 11.05.2009, 13:29:42 )... 11.05.2009, 12:39:11
Kedan Ostatecznie wymyśliłem coś takiego:
[PHP] pobierz,... 11.05.2009, 13:48:53
okitoki takie bajerki to C++ nam serwuje
interface w php ... 11.05.2009, 15:26:58
Kedan Cytattakie bajerki to C++ nam serwuje
Wiem, tylko ... 11.05.2009, 15:48:26
okitoki Cytat(Kedan @ 11.05.2009, 16:48:26 ) ... 11.05.2009, 18:42:48
Zyx Żeby próbować odpalać interfejsy na PHP4 i złościć... 11.05.2009, 20:35:43
Spawnm warto imho przyjrzeć się :: , czyli klasa::funkcja... 11.05.2009, 20:45:41
okitoki Cytat(Zyx @ 11.05.2009, 21:35:43 ) Że... 11.05.2009, 21:37:00
Zyx CytatO metodę krzyczał, a tam mu si... 11.05.2009, 22:31:10
Kedan @Spawnm
Metody statyczne nie są złe, ale... 11.05.2009, 23:47:12
okitoki Cytat(Zyx @ 11.05.2009, 23:31:10 ) De... 12.05.2009, 05:27:42
nospor @okitoki zyx jedynie napisał, ze w php4 nie b... 12.05.2009, 06:37:11
okitoki nie zupełnie, tak jak piszesz, bo stwierdził fakt ... 12.05.2009, 17:10:41
Spawnm skoro mowa o Wielodziedziczeniu , to mógł by mi kt... 12.05.2009, 17:14:01 
plurr Cytat(Spawnm @ 12.05.2009, 18:14:01 )... 12.05.2009, 17:36:53 
rzymek01 Cytat(plurr @ 12.05.2009, 18:36:53 ) ... 12.05.2009, 18:03:23 
plurr Cytat(rzymek01 @ 12.05.2009, 19:03:23... 12.05.2009, 18:06:10
marcio Chodzi chyba o to ze np w jakies klasie mozesz uzy... 12.05.2009, 17:22:54
marcio Cytatogolnie. Niezbyt oryginalna, spotykam sie z t... 12.05.2009, 18:40:51
rzymek01 jeszcze raz przytoczę:
CytatOgolnie rzecz biorac, ... 12.05.2009, 19:07:40
nieraczek Dziedziczenie złe ? Jeśli nie dziedziczenie to co ... 12.05.2009, 19:13:58 
rzymek01 Cytat(nieraczek @ 12.05.2009, 20:13:5... 12.05.2009, 19:15:00
plurr chodzi mi o samo dziedziczenie - jest be. lepiej w... 12.05.2009, 19:18:02 
pyro Cytat(plurr @ 12.05.2009, 20:18:02 ) ... 12.05.2009, 21:11:24 
plurr Cytat(pyro @ 12.05.2009, 22:11:24 ) P... 12.05.2009, 21:35:55 
pyro Cytat(plurr @ 12.05.2009, 22:35:55 ) ... 12.05.2009, 21:42:51 
plurr Cytat(pyro @ 12.05.2009, 22:42:51 ) .... 12.05.2009, 21:46:33
okitoki Cytat(nieraczek @ 12.05.2009, 20:13:5... 12.05.2009, 21:08:07
Spawnm jest be puki nie chcesz klasą admin odziedziczyć k... 12.05.2009, 21:15:29
Crozin @Spawnm: co mają do tego metody statyczne? Nie za ... 12.05.2009, 21:44:57 
pyro Cytat(plurr @ 12.05.2009, 22:46:33 ) ... 12.05.2009, 21:48:05 
plurr Cytat(Crozin @ 12.05.2009, 22:44:57 )... 12.05.2009, 21:49:57
ndx Przeczytajcie sobie wszyscy najlepiej jakąś książk... 12.05.2009, 21:58:47
nieraczek Nie wiem co poniektórym podoba się we wskaźnikach ... 13.05.2009, 08:54:52
Crozin Cytat1. Sposób: Można zrobić sobie klasę ruch i ka... 13.05.2009, 09:27:34
plurr Faktycznie przyklad szachow jest niezbyt trafiony,... 13.05.2009, 11:08:23
marcio Zgadzam sie z wami @plurr i @Zyx dziedziczenie pow... 13.05.2009, 13:12:31
Crozin CytatJedno jest pewne, nikt nie chcialby pracowac ... 13.05.2009, 13:26:20 ![]() ![]() |
|
Aktualny czas: 31.12.2025 - 16:59 |