Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 460 Pomógł: 49 Dołączył: 5.06.2011 Ostrzeżenie: (0%)
|
Kiedy klasy dziedziczące mają takie same metody, to lepiej by dziedziczyły te metody od klasy nadrzędnej, czy miały te metody "przykazane" przez interface i umieszczone w sobie? Takie 2 rozwiązania pokazuję poniżej. Które jest bardziej poprawne?
Z góry dziękuję |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 33 Dołączył: 10.05.2011 Skąd: Krak Ostrzeżenie: (0%)
|
I pojawia się nam problem, co to znaczy definicja metody. Dla mnie definicja metody to jest to samo co deklaracja metody. I z tego co widzę, to sugerujecie, że definicją metody jest na przykład samo coś takiego:
Kiedyś bawiłem się w C++, tam rozróżnienie miedzy definicją i deklaracją jest wyraźne: What is the difference between a definition and a declaration?. Java: What is the difference between declaration and definition in Java? (PHP jest pod tym względem podobny do Javy). Dlatego dla mnie deklaracja to nie koniecznie definicja. A może lepiej używać pojęć interfejs i implementacja. Warto byłoby ustalić wspólne nazewnictwo bo wtedy będzie mniej nieporozumień i chętnie dowiem się co jeszcze inni na ten temat myślą. Zatem mielibyśmy definicję metody, która nie określa, jak działa metoda, czyli nie definiuje metody w sensie matematycznym. Jest to dla mnie trudne do przyjęcia, i w sumie nie wiem co z tym zrobić. Pamiętam, że kiedyś coś kodowałem w jakimś języku programowania, gdzie było słowo kluczowe 'defun nazwafunkcji' i dalej następowało body funkcji. Ale jeśli w oop rzeczywiście definicja nie musi definiować, to może niepotrzebnie poprawiałem Kolegę powyżej w jednym z postów. Czyli w interfejsie masz metody bez implementacji a implementację dajesz dopiero klasach implementujących ten interfejs. Jest to jedna z najważniejszych cech programowania obiektowego. Dobrze że uczysz się wzorców ale lepiej byłoby gdybyś najpierw dobrze zrozumiał ogólne zasady dotyczące programowania obiektowego. |
|
|
|
trzczy Inheritance vs. interface dla takich samych metod. 12.12.2015, 13:32:56
droslaw W przykładzie, który podałeś klasy są identyczne d... 12.12.2015, 14:43:14 
trzczy Cytat(droslaw @ 12.12.2015, 14:43:14 ... 12.12.2015, 15:32:26
Fred1485 Tak moimi słowami, klasę abstrakcyjną czy interfej... 12.12.2015, 15:41:38
Comandeer Osobiście spotkałem się z podejściem, gdzie interf... 12.12.2015, 19:00:55
trzczy Dzięki za odpowiedzi. Dla mnie wynika z tego, że n... 12.12.2015, 22:37:35
Damonsson To nie jest kwestia żadnego wyboru. Do czego inneg... 13.12.2015, 00:36:28 
trzczy Damonsson, nie rozumiesz pytania. Chodzi o dublowa... 13.12.2015, 01:07:19
viking Ale Damansson dobrze Ci odpowiedział i według mnie... 13.12.2015, 10:42:44 
trzczy Cytat(viking @ 13.12.2015, 10:42:44 )... 13.12.2015, 18:42:16
Comandeer CytatW interface nie ma definicji metod. Są nazwy ... 13.12.2015, 18:53:29
Pyton_000 O jakim dublowaniu mówisz. Bo tutaj jedynie dublow... 13.12.2015, 19:08:52
droslaw trzczy, Damansson ma rację, w tutorialu żadne meto... 13.12.2015, 22:18:07
trzczy Cytat(Pyton_000 @ 13.12.2015, 19:08:5... 14.12.2015, 08:28:08
Pyton_000 Settery i gettery to nie problem. O ile nie mają s... 14.12.2015, 08:33:13
Matrix12 W przykładzie gdzie implementujesz interfejs chodz... 15.12.2015, 08:00:27 
trzczy Jeszcze się gubię w tym branżowym słownictwie...
... 17.12.2015, 01:13:47
Pyton_000 Możesz nazwać jak chcesz np:
StorageInterface
Sto... 17.12.2015, 10:06:18 
trzczy Cytat(Pyton_000 @ 17.12.2015, 10:06:1... 17.12.2015, 12:35:52
Pyton_000 tak, tylko weź pod uwagę to że samego Interface ni... 17.12.2015, 12:37:16
viking Nie było przypadkiem w którymś PSR że interface ma... 17.12.2015, 12:50:28
Pyton_000 Było
https://github.com/php-fig/fig-standards/bl... 17.12.2015, 14:01:21 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 12:17 |