Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sens dziedziczenia i jego zasada, na przykładzie klasy DB i klasy galerii
yasiek
post
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 4.06.2006
Skąd: Strzeszyce/Kraków

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


Powiedzmy, że opanowałem już tworzenie obiektów w php. Jednak to moje "opanowanie" to właściwie podstawy. Chciałbym zrozumieć jeszcze kilka rzeczy, a większośc artykułów jakie znalazłem, to albo dla całkowicie początkujących, albo dla totalnie zaawansowanych.

Przytoczmy na przykład dwie klasy:

klasa DB: odpowiedzialna za operacje na bazie danych; główne funkcje - konstruktor, który łączy z bazą, funkcja query, fetchAssoc, numRows no i close.

klasa gallery - no i powiedzmy, że chciałbym mieć tutaj funkcje odpowiedzialne za wprowadzanie rysunków, wyświetlanie według kategorii, według usera, wyświetlanie jednego obrazka itp itd

No i teraz moje pytanie(a) - czy klasa gallery powinna dziedzyczyć klasę (po klasie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) DB? no i w jaki sposób? czy powinna mieć własnego konstruktora? które funkcję powinny mieć status private, public (i na co one pozwalają)?i jak użyć klasy macierzystej w klasie "pochodnej"?

Wiem, ze dużo zagadnień i zapewne odpowiedzi będą nieco dłuższe niż pytania, dlatego jak ktoś znajdzie chwilkę, to byłbym niezmiernie wdzięczny, gdyby coś tutaj napisał (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

P.S. ups.. sorry za tamten temat... widocznie gdzieś wcisnąłem niepotrzebnie enter... proszę o wyrzucenie tamtego wątku i z góry dzięki!

Ten post edytował yasiek 25.08.2006, 10:16:08
Go to the top of the page
+Quote Post
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(yasiek @ 25.08.2006, 11:13 ) *
czy klasa gallery powinna dziedzyczyć klasę (po klasie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) DB? no i w jaki sposób?
Oczywiście że nie.
Co ma wspólnego baza danych z galerią? NIC.

Cytat(yasiek @ 25.08.2006, 11:13 ) *
czy powinna mieć własnego konstruktora?
Tak, każda klasa powinna mieć konstruktor.
Klasy pochodne mogę dodatkowo wykonywać w swoim konstruktorze, konstruktor klasy bazowej.

Cytat(yasiek @ 25.08.2006, 11:13 ) *
które funkcję powinny mieć status private, public (i na co one pozwalają)?i jak użyć klasy macierzystej w klasie "pochodnej"?
A jakie tylko chcesz, to zalezy co Twoja klasa ma robić.
Piszesz że opanowałeś podstawy, a widać że nawet manuala do końca nie przeczytałeś skoro nie wiesz jak klasy bazowej w klasie dziedziczącej i nie znasz różnicy pomiędzy private i public.
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #3





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Nie. Widac zupelnie nie zrozumiełeś idei oop. Nie martw się - większośc osób tak ma.
Uzywanie klas to nie to samo co programowanie obiektowe - można używac klas, ale nie programować obiektowo. Programowania obiektowe to pewien szczególny sposób myślenia o aplikacji, w którym ogromną wagę przykłada się do projektowania.
Opowiedz sobie na pytanie: Co ma wspólnego klasa galerii z klasą DB?
Jeśli nie ma nic wspólnego, to dlaczego ma po niej dziedziczyć? Czy galeria jest specjalizacją klasy DB? Rozszerza ją?
Nie. Nie ma z nią nic wspólnego i jako taka nie powinna po niej dziedziczyć.

Do klasy macierzystej (rodzicielskiej) odwołujsze się przez słowo kluczowe parent

  1. <?php
  2. class A{
  3.  
  4. function pisz(){print "Hello world!";}
  5.  
  6. }
  7.  
  8. class B extends A{
  9. function __construct(){
  10. parent::pisz();
  11. }
  12. }
  13. $obiekt=new B();
  14. //wyświetli Hello world!
  15. ?>


Pozdrawiam.
Go to the top of the page
+Quote Post
yasiek
post
Post #4





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 4.06.2006
Skąd: Strzeszyce/Kraków

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


Cytat
Piszesz że opanowałeś podstawy, a widać że nawet manuala do końca nie przeczytałeś skoro nie wiesz jak klasy bazowej w klasie dziedziczącej i nie znasz różnicy pomiędzy private i public.

Ok, w takim razie nie opanowałem podstaw - proszę o wybaczenie. Chodzi mi o przedstawienie w praktyktyce. Private - tylko w metody danej klasy, public - danej i pochodnej. Dobrze mówię? no i jak w takim razie w klasie gallery wykonywać zapytania sql używając klasy db?

Cytat
Nie. Widac zupelnie nie zrozumiełeś idei oop. Nie martw się - większośc osób tak ma.

No mniej więcej łapie to od strony teoretycznej. Ale nie wiem jak z praktyką... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował yasiek 25.08.2006, 10:33:29
Go to the top of the page
+Quote Post
mike
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(yasiek @ 25.08.2006, 11:30 ) *
No mniej więcej łapie to od strony teoretycznej. Ale nie wiem jak z praktyką... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Nie obraź sie ale daleki jesteś od złapania teoretycznego (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Dziedziczenie jest to nic innego jak rozszerzanie.

OOP to mapowanie rzeczywistości na obiekty. Weźmy na przykład pokój.
Mamy klasy: Mebel, Wyposażenie, Urządzenie.

Teraz mamy klasy: Szafa, Stołek, Łóżko, .... Wszystkie one dziedziczą po czym? Po Meblu.
Mamy klasy: Kaloryfer, RuraWŚcianie, ... One dziedziczą po Wyposażenie
A klasy: DVD, Komputer, HiFi, Ołówek, ..., dziedziczą po Urządzenie.

Programowanie w OOP jest to przedstawianie rzeczywistości za pomocą obiektów i definiowanie między nimi zależności.

Na przykład możesz stworzyć klasę: Ubranie. Do niej: Majtki, Portki, Kurtka, one dziedziczą po Ubranie.
A wspomniana wcześniej Szafa jest kolekcją Ubrań.

Możesz też zrobić klasy UrządzenieElektroniczne i UrządzenieZwykłe dziedziczące po Urządzenie i dopiero teraz zdecydować po którym urządzeniu będzie dziedziczyć każda z klas: DVD, Komputer, HiFi, Ołówek


To jest OOP
Go to the top of the page
+Quote Post
yasiek
post
Post #6





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 4.06.2006
Skąd: Strzeszyce/Kraków

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


Cytat
Nie obraź sie ale daleki jesteś od złapania teoretycznego


Jasne, ze się nie obrażę (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) gdybym to wszystko wiedział i rozumiał, o nic bym nie pytał (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Dzięki mike za wymowne przykłady (ten z majtkami jest najlepszy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Mniej więcej to rozumiem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) na przykład tworzysz sobie klasę samochód a później od niej Opel, Seat, Lexus (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) i tak dalej. Tylko powiedz mi, jak w takim razie wykorzystac klasę obługującą mysql, do tego, żeby dodać informację o zdjęciu do galerii, pobrać odpowiednią ilość zdjeć i tak dalej? Myslałem, ze tu też mogę użyć dziedziczenia, no bo klasa gllery, opierałaby się w pewnym sensie na DB i wykorzystywała jej funkcje - no ale racja, to nie jest żadne rozszerzenie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 16.09.2025 - 02:51