Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Klasy i obiekty
kamil1114
post
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Czy ktoś mógłby mi wytłumaczyć w jakiś logiczny i zrozumiały sposób do czego służą klasy i obiekty ? Co zyskujemy korzystając z nich ? Czytam kursy o klasach i obiektach , ale dalej nie rozumiem o co chodzi. Proszę o wyjaśnienie i jakieś proste przykłady
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
benio101
post
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 10
Dołączył: 16.07.2009
Skąd: Toruń

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


Nie spamuj!
...
Ehh...
Go to the top of the page
+Quote Post
MateuszS
post
Post #3





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Benio101, przeciez autor napisal ze nic z kursow nie rozumie. To akurat nic dziwnego bo co jak co ale obiektowy w naszym polskim necie jest wytlumaczony tak ze sam autor kursu nie wie co napisal laugh.gif wacko.gif thumbsupsmileyanim.gif

Z racji ze sam zaczynam z OOP, nie chce Ci mącic. Polecam pisac, po trochu a z czasem (kilka dni) zrozumiesz o co chodzi w klasach i obiektach, choc to dopiero poczatek. Czytaj dalej kursy i staraj sie analizowac skrypty. To nic dziwnego ze nie rozumiesz o co chodzi, nikt w 10 min tego nie zrozumie.

Pozdrawiam i owocnej nauki

Ten post edytował MateuszScirka 17.10.2009, 17:26:31


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
marcio
post
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
Benio101, przeciez autor napisal ze nic z kursow nie rozumie. To akurat nic dziwnego bo co jak co ale obiektowy w naszym polskim necie jest wytlumaczony tak ze sam autor kursu nie wie co napisal

Buhahah chyba kursy z yoyo.pl zastanow sie zanim cos powiesz tez tak na poczatku myslalem i jest to bledne myslenie.

Kamil114 poczytaj o MVC wez jakis prosty FW Kohana lub jakis prywatny projekt przeanalizuj kod.
Sprobuj napisac cos sam byle co i pokaz to na forum a dowiesz sie co zle zrobiles to jest dobra droga do nauki.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
kamil1114
post
Post #5





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Znalazłem taki kod:
  1. <?php
  2. class Klasa
  3. {
  4. function funkcja()
  5. {
  6. return 'a';
  7. }
  8. function inna($a)
  9. {
  10. return trim($a);
  11. }
  12. }
  13. $obiekt = new Klasa();
  14. echo $obiekt->funkcja();
  15. ?>


Powiedzcie mi tylko po co stosować klasy ? Wyczytałem gdzieś , że klasa to zbiór funkcji , ale przecież można też zrobić parę funkcji , więc po co przypisywać je do klasy ?
Go to the top of the page
+Quote Post
MateuszS
post
Post #6





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


A no widzisz to jest dobre pytanie. Tez je zadawalem. W sumie masz racje, dla takich skryptow jak ten powyzej nie ma sensu pisac klasy. Bo ten skrypt mozna skrocic. Ale jezeli masz pisac cala duza strone to obiektowy to bardzo dobre rozwiazanie, te wszystkie wzorce projektowe, uniwersalnosc itd.

Napisali dlatego taki skrypt w obiektowym bo przeciez nie dadza Ci od razu calej strony do analizowania, chca zebys zrozumial jak wyglada OOP, podstawowe zagadnienia, napisal latwo przyklad takiej klasy.

Ten post edytował MateuszScirka 17.10.2009, 18:18:49


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
kamil1114
post
Post #7





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Ale bez programowania obiektowego też można pisać strony i są dobre. Ciągle nie widzę zastosowania oob.
Go to the top of the page
+Quote Post
MateuszS
post
Post #8





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Są dobre, ale ciezej je zmodyfokowac. Zeby dodac jakas przydatna opcje musisz grzebac w kodzie. Sam jeszcze nie odkrylem magii OOP ale bez powodu wiekszosc stron w oop pisana nie jest. Wiec jakis sens musi w tym byc.


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
kamil1114
post
Post #9





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


No właśnie , szukam tego sensu , bo dla mnie oop jest dość trudne i zastanawiam się czy jest sens się go uczyć , tym bardziej , że php znam całe , ale po trochu , nie umiem go tak super dobrze. Mysql też znam trochę.
Go to the top of the page
+Quote Post
MateuszS
post
Post #10





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Powiem tak, sam znam php na tyle na ile jest mi potrzebne. Jak czegos nie wiem, to szukam. Mysql to tyle ze umiem zapytania do bazy i w phpmyadminie ;D

Mysle ze nie trzeba znac az tak pro zeby pisac w oop bo tam z nowych rzeczy to dochodza tylko typowe dla oop pojecia praktycznie (klasa, obiekt, konstruktor, dziedziczenie itd.). Sam jeszcze nie napisalem nic duzego, mowia ze trzeba korzystac z wzorcow projektowych itd. Poczytaj o tym jak juz opanujesz podstawy OOP.

Zrob tak: nie mysl czy to potrzebne, ze mozna szybciej itd. ale napisz cos w OOP, cos najprostrzego co moze byc, tak jakbys sie od nowa jezyka uczyl, jakby php byl tylko obiektowy ;D np.

  1.  
  2. class kwadrat {
  3. public $bok;
  4. public $pole;
  5. function pole() {
  6. $this->pole=$this->bok*$this->bok;
  7. return $this->pole;
  8. }
  9.  
  10. }
  11.  
  12. $obKwadrat=new kwadrat();
  13. $obKwadrat->bok=5 // bok;
  14. echo $obKwadrat->pole();


Pisz podobne rzeczy. Z tego co mi mowia to nie wolno pisac w klasie HTMLa (tagow, znacznikow np .<a>, <p> itd, zawsze zwracaj wartosc w funkcji (return).


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
Quantum
post
Post #11





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


  1. class kwadrat {
  2. public $bok;
  3. public $pole;
  4. function pole() {
  5. $this->pole=$this->bok*$this->bok;
  6. return $this->pole;
  7. }
  8.  
  9. }
  10.  
  11. $obKwadrat=new kwadrat();
  12. $obKwadrat->bok=5 // bok;
  13. echo $obKwadrat->pole();


Niepotrzebnie zadeklarowana zmienna $pole, bezsens nadawać jej akcesor publiczny i przypisywać wartość w przypadku gdy ją zwracasz, po co Ci dodatkowy dostęp przez $obKwadrat->pole ?

Wiem, że podałeś tylko przykład, ale lepiej uczyć kogoś od początku poprawnie używać OOP.

  1. class pole
  2. {
  3. public function kwadrat($bok)
  4. {
  5. return pow($bok, 2);
  6. }
  7.  
  8. public function prostokat($bok1, $bok2)
  9. {
  10. return $bok1*$bok2;
  11. }
  12.  
  13. public function szescian($bok)
  14. {
  15. return 6*pow($bok, 2);
  16. }
  17. }
  18.  
  19. class objetosc
  20. {
  21. public function szescian($bok)
  22. {
  23. return pow($bok, 3);
  24. }
  25. }
  26.  
  27. $pole = new pole;
  28. print $pole->kwadrat(6);
  29. print $pole->szescian(3);
  30. $objetosc = new objetosc;
  31. print $objetosc->szescian(4);


Klas nie tworzysz dla jednej funkcji, w tym przypadku podzielimy je na pole i objętość, a w niej metody dla poszczególnych figur geometrycznych.

Pozdrawiam smile.gif

Ten post edytował sniffer32 17.10.2009, 22:48:28
Go to the top of the page
+Quote Post
MateuszS
post
Post #12





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


czemu nie uzywasz wew klasy $this-> ?


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
marcio
post
Post #13





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Bo zmienne sa parametrami funkcji a nie polami danej klasy.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
kamil1114
post
Post #14





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


A czy umiałby mi ktoś wytłumaczyć do czego służy odwołanie $this. Czytam kursy , ale nie mogę tego zrozumieć. Po co to się stosuje i w jakich sytuacjach ?

Mam na przykład taki kod:
  1. <?php
  2. class pole{
  3.  
  4. function prostokat($a,$b){
  5. $pole=$a*$b;
  6. echo "$pole";
  7. }
  8.  
  9. function kwadrat($a){
  10. $pole=$a*$a;
  11. echo "$pole";
  12. }
  13.  
  14. function trojkat($a,$h){
  15. $pole=($a*$h)/2;
  16. echo "$pole";
  17. }
  18.  
  19.  
  20.  
  21. }
  22. $a=3;
  23. $b=4;
  24.  
  25.  
  26. $policz=new pole();
  27.  
  28. echo "Pole prostokata jest rowne:<br/>";
  29. $policz->prostokat($a,$b);
  30.  
  31. echo "<br/>A pole trojkata<br/>";
  32. $policz->trojkat($a,$h=5);
  33. ?>


I tutaj nie zastosowałem odwołania $this i wszystko działa.
Go to the top of the page
+Quote Post
shark121
post
Post #15





Grupa: Zarejestrowani
Postów: 62
Pomógł: 5
Dołączył: 31.03.2008

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


$this używamy odwołując się do czegoś wewnątrz klasy. Chcąc zrobić coś ze zmienną/metodą wewnątrz klasy użyjesz $this->Metoda(); albo $this->Zmienna;

Poza klasą czyli jak już gdzieś się do niej odwołasz i będziesz miał na przykład $Klasa = new Klasa; i będziesz chciał się odwołać do tej samej zmiennej lub metody to napiszesz $Klasa->Metoda(); lub $Klasa->Zmienna;
Go to the top of the page
+Quote Post
kamil1114
post
Post #16





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Mniej , więcej rozumiem , ale czy bez utworzenia wcześniej referencji ($this) , można też się odwołać do zmiennej lub funkcji. Bo wydaje mi się , że ja się odwołałem do funkcji , a nie użyłem $this.

  1. <?php
  2. class pole{
  3.  
  4. function prostokat($a,$b){
  5. $pole=$a*$b;
  6. echo "$pole";
  7. }
  8.  
  9. function kwadrat($a){
  10. $pole=$a*$a;
  11. echo "$pole";
  12. }
  13.  
  14. function trojkat($a,$h){
  15. $pole=($a*$h)/2;
  16. echo "$pole";
  17. }
  18.  
  19.  
  20.  
  21. }
  22. $a=3;
  23. $b=4;
  24.  
  25.  
  26. $policz=new pole();
  27.  
  28. echo "Pole prostokata jest rowne:<br/>";
  29. $policz->prostokat($a,$b); //TUTAJ SIE ODWOLALEM
  30.  
  31. echo "<br/>A pole trojkata<br/>";
  32. $policz->trojkat($a,$h=5); // I TUTAJ
  33. ?>




Proszę o pomoc.

Ten post edytował kamil1114 1.11.2009, 18:55:01
Go to the top of the page
+Quote Post
Smertius
post
Post #17





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

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


$this używasz tylko wtedy kiedy odwołujesz się wewnątrz klasy do metod i zmiennych tej klasy. Np.
  1. class Pole
  2. {
  3. private $a=5;
  4. private $b=3;
  5. function oblicz_pole()
  6. {
  7. $wynik=$this->a*$this->b;
  8. return $wynik;
  9. }
  10. }
  11. $oblicz= new pole;
  12. $pole=$oblicz->oblicz_pole; //Zwróci wynik 15
Go to the top of the page
+Quote Post
kamil1114
post
Post #18





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Czyli nie zadziałało by takie coś:
  1. $wynik=$a*$b;
?
A czy na zewnątrz klasy też tego się używa ?
Go to the top of the page
+Quote Post
askone
post
Post #19





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


Hej

Patrząc na Twe pierwsze próby z programowaniem obiektowym zauważyłem, iż kierujesz się w złą stronę... Uogólniając OOP polega na tym aby zamknąc w ramach klasy wlasciwosci i metody indywidualne dla danego obiektu... W Twoim przypadku kod klasy powinien wygladac tak:

  1. class Kwadrat {
  2. public $a;
  3.  
  4. public function pole()
  5. {
  6. $pole = $a * $a;
  7. echo $pole;
  8. }
  9. }
  10.  
  11. class Trojkat {
  12. public $a;
  13. public $h;
  14.  
  15. public function pole()
  16. {
  17. $pole = 0.5 * $a * $h;
  18. echo $pole;
  19. }
  20. }
  21.  


Oczywiście to tylko propozycja szkieletu, bo idąc dalej można by zdefiniowac klase abstrakcyjna Figura i po niej dziedziczyć powinny konkretne klasy Kwadrat, Prostokat, Trojkat...

Pozdrawiam


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
Smertius
post
Post #20





Grupa: Zarejestrowani
Postów: 156
Pomógł: 31
Dołączył: 23.02.2009
Skąd: Sanok

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


Cytat(kamil1114 @ 1.11.2009, 19:14:39 ) *
Czyli nie zadziałało by takie coś: [PHP] pobierz, plaintext
  1. $wynik=$a*$b;
[PHP] pobierz, plaintext ?


Nie zadziała

Cytat(kamil1114 @ 1.11.2009, 19:14:39 ) *
A czy na zewnątrz klasy też tego się używa ?


Nie, $this używamy tylko wewnątrz klasy
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 14:14