Programowanie obiektowe

Tutaj dyskutujemy o PHP oraz zgłaszamy i rozwiązujemy problemy dotyczące tego języka.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Programowanie obiektowe

Post przez Morfidon »

Skoro rozszerzasz klasę Cat o AnimalAbstract to tak jakbyś skopiował całą zawartość AnimalAbstract do Cat. Więc od tego momentu $this odwoła się do tego co znajduje się w Cat.
tajger
Zaawansowany
Zaawansowany
Posty: 223
Dołączył(a): niedziela, 11 marca 2012, 03:08
Lokalizacja: Poland
Contact:

Re: Programowanie obiektowe

Post przez tajger »

Ok, zrozumiałem. Wiem czemu błędnie myślałem przez cały czas, teraz dopiero do tego doszedłem.

Nie ważne gdzie zadeklarujesz zmienną w klasie czy pod funkcjami czy nad nimi to i tak się do niej odwołasz bo to jest programowanie obiektowe.
Np. tutaj, kod nie leci po kolei jak w strukturze, linia po linii, żeby się widział i mógł wypisać wartość.
$a = new Dom;
echo $a->cena;

class Dom
{
public $cena=20;
}
Wynik zostanie wypisany 20.

W programowaniu strukturalnym np.tutaj nie wypisze nam obecnego rezultatu:
echo $a;
$a=5;
Jeśli się mylę to mnie poprawcie. :)
Zawsze walcz do końca i nigdy się nie poddawaj!
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Programowanie obiektowe

Post przez Morfidon »

Nie do końca w PHP to przejdzie w C++ już nie. Mimo wszystko staraj się mieć zachowaną kolejność deklaracji.
tajger
Zaawansowany
Zaawansowany
Posty: 223
Dołączył(a): niedziela, 11 marca 2012, 03:08
Lokalizacja: Poland
Contact:

Re: Programowanie obiektowe

Post przez tajger »

Jak na razie wszystko powoli łapię, ale stanąłem teraz na wyjątkach.
Za bardzo nie zrozumiałem jego celu użycia, po się używa wyjątków i jak często?
Zawsze walcz do końca i nigdy się nie poddawaj!
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Programowanie obiektowe

Post przez Morfidon »

Bardzo praktyczny przykład obsługi wyjątków znajdziesz w kursie MySQLi. W kursie PHP również pokazuje je na praktycznym przykładzie używasz je wtedy, gdy zdarzą się wyjątkowe sytuacje i chcesz aby kod (w bloku try), który jest za miejscem wystąpienia wyjątku nie został odpalony.
tajger
Zaawansowany
Zaawansowany
Posty: 223
Dołączył(a): niedziela, 11 marca 2012, 03:08
Lokalizacja: Poland
Contact:

Re: Programowanie obiektowe

Post przez tajger »

Wiesz do czego służy agregacja?
Klasy mogą oprócz właściwości i metód zawierać obiekty innych klas. Zawieranie takie nosi nazwę agregacji.

Spotkałem się w Internecie z takim przykładem:
class Traba{
public $dlugoscTraby;
}
class Slon
{
public $traba;
public function zmienDlugos( $nowe ){
$this->traba->dlugoscTraby = $nowe;
}
}
$dumbo = new Slon;
$dumbo->traba = new Traba;
$dumbo->traba->dlugoscTraby = 2;
echo $dumbo->traba->dlugoscTraby;
$dumbo->zmienDlugosc(3);
Zawsze walcz do końca i nigdy się nie poddawaj!
tajger
Zaawansowany
Zaawansowany
Posty: 223
Dołączył(a): niedziela, 11 marca 2012, 03:08
Lokalizacja: Poland
Contact:

Re: Programowanie obiektowe

Post przez tajger »

Doszedłem do klonowania właśnie i ta agregacja tam się pojawiła. Stosowałeś ją wcześniej? W jakich przypadkach się jej używa. W sieci znalazłem taki przykład jak wcześniej napisałem (post wyżej), oprócz tego:
http://pl.wikipedia.org/wiki/Agregacja_(programowanie_obiektowe) który jest opisany, że jest to podobne do dziedziczenia bardzo.
Zawsze walcz do końca i nigdy się nie poddawaj!
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Programowanie obiektowe

Post przez Morfidon »

Przecież to logiczne, że możesz użyć innego obiektu w klasie.

Zastanów się. Tak naprawdę kiedy korzystasz z liczb całkowitych, czyli (integer) to możesz zapisywać w zmiennej liczby całkowite. Gdy zrobisz zmienną typu jakiejś klasy to możesz w niej zapisywać to co pozwoliłeś sam zapisać do takiego typu zmiennej.

W PHP to trochę jest może mniej zrozumiałe bo w domyśle tworząc zmienną np:

$a

to możesz do niej zapisać co się żywnie podoba ze wzg. na to jak bardzo uprościli ten język twórcy PHP, jednak w C#, C++, Java i podobnych musisz i możesz tylko zapisać wartości do zmiennej tylko takie jakie określisz.

Kiedy korzystasz? Gdy potrzebujesz. Gdy tworzysz auto, to auto składa się z 4 kół. Czyli Auto to klasa, a w klasie Auto masz 4 obiekty typu klasy Kolo.
tajger
Zaawansowany
Zaawansowany
Posty: 223
Dołączył(a): niedziela, 11 marca 2012, 03:08
Lokalizacja: Poland
Contact:

Re: Programowanie obiektowe

Post przez tajger »

Zakończyłem dzisiaj kurs PHP i jestem bardzo zadowolony, że pojąłem naprawdę dużo. Tak jak wspominałem najpierw zacząłem PHP do części obiektowej potem kurs MySQL do 10 rozdziału i powrót do obiektówki. Polecam wszystkim tak, aby zrozumieli też jak działa strukturalne pisanie zapytań, bo teraz pewnie będę już je obiektowo robił. Praktykowanie podczas słuchania kursu jest super metodą do jak najszybszej nauki i pochłaniania wiedzy. Nie omieszkam, że wspomagam się też materiałami z Internetu. W projektowaniu obiektowym omówiłeś naprawdę dużo.

Miałbym jeszcze do ciebie pytanie w tym dziale:
Jak omówiłbyś własnymi słowami HERMETYZACJA i POLIMORFIZM ?
Zawsze walcz do końca i nigdy się nie poddawaj!
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Programowanie obiektowe

Post przez Morfidon »

Hermetyzacja polega na tym, aby trzymać składowe klas jako pola prywatne i dostawać się do nich jedynie przy pomocy funkcji.

Natomiast na temat polimorfizmu prowadziliśmy już na forum długą konwersację:
http://videokurs.pl/forum/c-net-f24/lek ... fizm#p1268
Post Reply