Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> metody ustaw i pobierz
SN@JPER^
post
Post #1





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


Czytając książke o OOP, nie rozumiem metod ustaw i pobierz...

Po co takie metody tworzyć? Nie można działać bezpośrednio na danych składowych?

np.

  1. ////////////////////////////////////////////////////////////////////
  2. function setInactiveSpanName($name){
  3. $this->inactivespanname = $name;
  4. //wywołuje funkcję zmieniającą nazwę przestrzni
  5. $this->createInactiveSpans();
  6. }
  7. ////////////////////////////////////////////////////////////////////
  8. function getInactiveSpanName(){
  9. return $this->inactivespanname;
  10. }
  11. ////////////////////////////////////////////////////////////////////
  12. function setPageDisplayDivName($name){
  13. $this->pagedisplaydivname = $name;
  14. }
  15. ////////////////////////////////////////////////////////////////////
  16. function getPageDisplayDivName(){
  17. return $this->pagedisplaydivname;
  18. }
  19. ////////////////////////////////////////////////////////////////////
  20. function setDivWrapperName($name){
  21. $this->divwrappername = $name;
  22. }
  23. ////////////////////////////////////////////////////////////////////
  24. function getDivWrapperName(){
  25. return $this->divwrappername;
  26. }
  27. ////////////////////////////////////////////////////////////////////
  28. function setFirstParamName($name){
  29. $this->firstparamname = $name;
  30. }
  31. ////////////////////////////////////////////////////////////////////
  32. function getFirstParamName(){
  33. return $this->firstparamname;
  34. }
  35. ////////////////////////////////////////////////////////////////////
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Klasy w wielu obiektowych lub obiektowo orientowanych językach mają 3 tryby dostępu: publiczny (public), prywatny (private) i chroniony (protected). Różnica między nimi jest taka, że do publicznego możesz się odwoływać bezpośrednio
$obiekt_klasy -> atrybut
a więc zapis i odczyt są jawne. Wystarczy znać strukturę danych.

Prywatne są zabezpieczone i nie odczytasz ich ani nie zapiszesz nic do nich bez metod, które sama klasa Ci udostępnia. Odwołanie jak do publicznego spowoduje błąd. Jest to zabronione. Dlatego właśnie musisz napisać metodę, która pozwala go ustawić lub odczytać, a więc pozwala zrobić tak:
$obiekt_klasy -> odczytaj_pole_X();

Dostęp chroniony jest w samej klasie widoczny jako prywatny, ale klasa która po niej dziedziczy zamienia go w prywatny w swojej klasie (to zależy od języka programowania, gdyż w pewnych może on stać się publicznym ). Normalnie bowiem klasa nie dziedziczy pól klasy rodzica, a więc można powiedzieć, że dziecko wszystkie pola rodzica "zapomina", poza oczywiście tymi będącymi protected. Jeśli więc masz klasę A, zaś w niej pola public, private i protected, to po utworzeniu z niej klasy potomnej B znajdziesz wewnątrz tylko te, które były protected, ale będą one już teraz private (lub public w określonych językach).

Jak więc widzisz definicja dostępu sprawia, że pola zachowują się różnie. Inaczej do nich odwołujesz, inaczej zachowują w przypadku tworzenia klasy pochodnej.

Ale to są podstawy obiektówki, więc radzę Ci dobrze się przyłożyć do nich bo im głębiej w las tym więcej drzew o jakie można się rozbić.

Ten post edytował thek 14.01.2010, 22:02:49
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: 6.10.2025 - 07:11