Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Interfejsy[Wątpliwości]
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 nadzieje, że to forum będzie trwało tyle co PHP, tyle mi już pomogło, że hej. Przejdę do sedna sprawy czyli do interfejsów.
Jak mi wiadomo, że można było dziedziczyć tylko z jednej Klasy(Króla)
ale co mi to da, że wprowadzę interfejs, jeśli i tak w klasach niższych(Mieszczanach) będę musiał powtórzyć kod funkcji?
W królu będe musiał dać funkcje
  1. <?php
  2. function Pierwsza()
  3. {
  4.  return func_num_args();
  5. }
  6. ?>


Jeśli w Mieszczanie będe musiał dać taki sam kod?

Czy dobrze zrozumiałem?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
-=Peter=-
post
Post #2





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


Interfejsy służą do tego, aby wymusić na danej hierarchi klas zdefiniowanie określonych metod. Po to się to stosuje, aby ustalić "protokół", sposób "porozumiewania się", czy też korzystania z tych klas. Załóżmy, że nad projektem pracuje kilku programistów, jeśli zdefiniuje się interfejsy to nie ważne co będzie w klasie implementującej jakiś tam interfejs, bo wiadome że w interfejsie są określone wymagane metody publiczne, z których to korzystamy z danej klasy. Programista wtedy wie, że trzeba dane metody, które służą do korzystania z obiektów danej klasy, zaimplementować, przez co jest zunifikowany dostęp do klas należącej do tej samej gałęzi hierarchi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Przeanalizuj przykład Cysiaczka. Można dopisać takie coś:

  1. <?php
  2. class Women extends Human
  3. {
  4. public function sayGoodMorningTo($person)
  5. {
  6. print "Good Morning ".$person."!";
  7. }
  8. }
  9.  
  10. class CommunityMambers
  11. {
  12. protected $member;
  13.  
  14. public function addMember(Courtesy $member)
  15. {
  16.  
  17. }
  18.  
  19.  public function sayGoodMorning($person){
  20. foreach($this->member as m){
  21. print $m->sayGoodMorningTo($person);
  22. }
  23.  }
  24. }
  25. ?>


Dzięki temu zapewniamy to, że klasa "Man" i "Woman" mają metody "sayGoodMorningTo", więc w metodzie CommunityMambers::sayGoodMorning() nie wyskoczy błąd, że dany obiekt nie posiada metody "sayGoodMorningTo".
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 21:36