Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Interfejs i klasa abstrakcyjna
daniel1302
post
Post #1





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Witam, mam problem teoretyczny. Jest taka sytuacja
Mam klasę abstrakcyjną Człowiek, która realizuje jakieś opcje.
I różni ludzie dziedziczą po tej klasie np:

  1. class Daniel extends Czlowiek
  2. {
  3. ...
  4. }


i chcę aby każdy człowiek posiadał odpowiednie metody(które np ustalają co człowiek potrafi, jak myśli, dla każdego wykonanie tej metody ma być inna).

mogę zrealizować to za pomocą interfejsu np. Interface Genetyka
  1. interface Genetyka
  2. {
  3. public function wyglad();
  4. public function umiejetnosci();
  5. }

i wtedy będę miał:
  1. class Daniel extends Czlowiek implements Genetyka
  2. {
  3. ...
  4. }

ale coś mnie to kole w oczy. Ale mogę dodać metody do klasy abstrakcyjnej skoro i tak każdy człowiek po niej dziedziczy.
Co wy byście zrobili. Zastosowali interface czy dodali definicje metod do klasy.

Ten post edytował daniel1302 30.11.2011, 17:32:19
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat
Czy Daniel nie jest czlowiekiem? Czy Kamil - obiekt kamil, ten ktory siedzi wlasnie przed laptopem i pisze odpowiedz nie jest czlowiekiem? Jestem imieniem?
Nie wcielaj tutaj potocznych form języka. Gdy mówisz że Kamil siedzi przed komputerem albo że Audi to fajny samochód masz na myśli osobę o imieniu Kamil albo samochód marki Audi.

Cytat
Dodawanie kolejnej klasy przechowującej skile to niepotrzebne utrudnianie sobie zycia.
No właśnie błędny model - jaki Ty i autor próbujecie wprowadzić - mocno komplikuje życie. Spróbuj zmienić umiejętności Daniela (całkiem prawdopodobne zjawisko, ludzie się uczą) albo utworzyć nową osobę z nowym zestawem umiejętności. Modyfikacja istniejących i pisanie nowych klas - jak dla mnie spore utrudnienie.

Na dobrą sprawę wątek powinien trafić do przedszkola, bo mówimy tutaj o absolutnych podstawach OOP, tj. o wydzielaniu i modelowaniu prostych struktur danych i ich wzajemnych relacjach.

Ten post edytował Crozin 30.11.2011, 22:57:12
Go to the top of the page
+Quote Post
Orzeszekk
post
Post #3





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 30.11.2011, 22:56:51 ) *
Nie wcielaj tutaj potocznych form języka. Gdy mówisz że Kamil siedzi przed komputerem albo że Audi to fajny samochód masz na myśli osobę o imieniu Kamil albo samochód marki Audi.

No właśnie błędny model - jaki Ty i autor próbujecie wprowadzić - mocno komplikuje życie. Spróbuj zmienić umiejętności Daniela (całkiem prawdopodobne zjawisko, ludzie się uczą) albo utworzyć nową osobę z nowym zestawem umiejętności. Modyfikacja istniejących i pisanie nowych klas - jak dla mnie spore utrudnienie.

Na dobrą sprawę wątek powinien trafić do przedszkola, bo mówimy tutaj o absolutnych podstawach OOP, tj. o wydzielaniu i modelowaniu prostych struktur danych i ich wzajemnych relacjach.


bla bla bla to nie pisz klas wcale skoro to dla ciebie takie utrudnienie.

to jak pisze np FileBuffer czy cos i to ma rozne funkcje to tez zamiast utworzyc normalne metody mam utworzyc kolekcje obiektow przechowujacych po jednej czynnosci?

ty NIE WIESZ jaki model obrał sobie ten czlowiek wiec nie mów że jest błędny. Nie wiesz czy ten typ w ogole chce implementowac dowolnych ludzi w swoim programie. Daniel NIE STWIERDZIŁ że chce zaimplementować system ludzi ala sims. Jak tak stwierdzi to twoje stwierdzenie nabierze sensu. Wtedy bedzie jak najbardziej prawidłowe. Wtedy to bedzie bardzo ciekawy wzorzec umozliwiajacy przypisywanie roznych skilow roznym osobom, wymiennie.

Jak zajdzie potrzeba zmian to kolega sobie to zrefaktoryzuje i juz. Idąc twoim tokiem myslenia trzeba by bylo dodac wszystko co sie moze przydac kiedys za 20 lat do tej klasy. A moze przegladarka www sie przyda temu czlowiekowi? ziuuu - i dodajemy. a moze botnet bedzie nam za 10 lat potrzebny - uuu trzeba zaimplementowac zanim sie uzyje klasy.

Poza tym czy nie moge powiedziec ze samochody Audi mają fajny wygląd i dobrze sie nimi jezdzi?
odnoszę się w tym momencie do klasy carFromAudiFactory rozszerzającej Car. Nie mówie że TEN samochód ma fajny wygląd i sie dobrze nim jezdzi tylko że TE (Ten rodzaj jakim są samochody wyprodukowane przez markę audi) samochody mają fajny wyglad i sie nimi jezdzi.

i zebys mi nie wciskal ze to bledne uzycie potocznego jezyka - przyklad z Car i klasą dziedziczącą VolvoCar byl w ksiazce fowlera refaktoryzacja...

Ten post edytował Orzeszekk 30.11.2011, 23:15:07
Go to the top of the page
+Quote Post

Posty w temacie
- daniel1302   Interfejs i klasa abstrakcyjna   30.11.2011, 16:40:20
- - Orzeszekk   Najczysciej będzie jak zrobisz najpierw interfejs ...   30.11.2011, 19:50:16
- - Crozin   To co tu kole w oczy to kompletny brak związku z O...   30.11.2011, 20:53:33
|- - Orzeszekk   Cytat(Crozin @ 30.11.2011, 20:53:33 )...   30.11.2011, 22:25:27
- - Crozin   CytatCzy Daniel nie jest czlowiekiem? Czy Kamil - ...   30.11.2011, 22:56:51
|- - Orzeszekk   Cytat(Crozin @ 30.11.2011, 22:56:51 )...   30.11.2011, 23:09:31
- - Dipter   @Orzeszekk Twoje uwagi w stosunku do Crozina mają...   30.11.2011, 23:20:09
- - ano   Orzeszekkk... przecież to teraz Ty strasznie miesz...   30.11.2011, 23:26:36
- - Orzeszekk   Jak tam sobie chcecie. Dla mnie nielogiczne jest z...   30.11.2011, 23:39:31
- - Dipter   Zacznijmy od tego, że to że Daniel to świr i ma ni...   30.11.2011, 23:49:43
|- - Orzeszekk   Cytat(Dipter @ 30.11.2011, 23:49:43 )...   30.11.2011, 23:53:07
- - ano   Dalej to co mówisz jest nielogiczne. Z tego by wyn...   30.11.2011, 23:51:03
- - Dipter   Dlaczego metodą? Może być równie dobrze obiektem k...   30.11.2011, 23:59:29
|- - Orzeszekk   Cytat(Dipter @ 30.11.2011, 23:59:29 )...   1.12.2011, 00:04:47
- - Dipter   Na Ciebie nigdzie nie wjeżdżam więc przestań zmyśl...   1.12.2011, 00:10:20
- - LSM   CytatJak zajdzie potrzeba zmian to kolega sobie to...   1.12.2011, 09:58:24
- - phpion   @Orzeszekk: [PHP] pobierz, plaintext class Human ...   1.12.2011, 10:14:49
- - Pilsener   CytatZ elastycznością czeka się do ostatniego mome...   1.12.2011, 14:28:18
- - LSM   @Pilsener Nie zrozumiałeś mnie. Zdarzyło Ci się ki...   2.12.2011, 10:05:29
- - bastard13   Zgadzam się z LSM, że myślenie 'na przyszłość...   2.12.2011, 11:33:03
- - daniel1302   Może opiszę projekt dokładniej. Tworzę algorytm gr...   2.12.2011, 17:47:04
- - Crozin   No to możesz to zrobić w taki sposób:[PHP] pobierz...   2.12.2011, 19:22:17
- - daniel1302   Dziękuje, temat jest dosyć wyczerpujący. Assembler...   2.12.2011, 21:46:18
- - LSM   Jeśli chcesz to przepisać na assemblera, to nie le...   4.12.2011, 14:17:51


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 07:37