Koncepcja programowania obiektowego pierwotnie pojawiła się w Simuli 67, języku zaprojektowanym do
zastosowań symulacyjnych, stworzonym przez Ole-Johana Dahla i Kristena Nygaarda z Norsk Regnesentral w Oslo. (Mówi się, że pracowali oni nad symulacjami zachowania się statków i mieli kłopoty z opanowaniem wszystkich zależności, jakie wywierały na siebie nawzajem wszystkie parametry statków w symulacji. Wtedy wpadli na pomysł, by pogrupować typy statków w różne klasy obiektów, a każda z klas sama odpowiadałaby za określanie własnych danych i zachowań.) Później koncepcja została dopracowana w języku Smalltalk, stworzonym w Simuli w Xerox PARC, ale zaprojektowanym jako w pełni dynamiczny system, w którym obiekty mogą być tworzone i modyfikowane "w locie", a nie system oparty na statycznych programach.
Programowanie obiektowe zyskało status techniki dominującej w połowie lat 80., głównie ze względu na wpływ C++, stanowiącego rozszerzenie języka C. Dominacja C++ została utrwalona przez wzrost popularności graficznych interfejsów użytkownika, do tworzenia których programowanie obiektowe nadaje się szczególnie dobrze.
W tym okresie cechy obiektowe dodano do wielu języków programowania, w tym Ady, BASIC-a, Lisp-a, Pascala i innych. Dodanie obiektowości do języków, które pierwotnie nie były do niej przystosowane zrodziło szereg problemów z kompatybilnością i konserwacją kodu. Z kolei "czysto" obiektowym językom brakowało cech, z których programiści przyzwyczajeni byli korzystać. By zapełnić tę lukę podejmowano liczne próby stworzenia języków obiektowych dostarczających jednocześnie "bezpiecznych" elementów proceduralności. Eiffel Bertranda Meyera był wczesnym przykładem w miarę udanego języka spełniającego te założenia; obecnie został on w zasadzie całkowicie zastąpiony przez Javę, głównie za sprawą pojawienia się Internetu, dla którego Java dostarcza szeregu użytecznych funkcji.
Podobnie, jak programowanie funkcyjne doprowadziło do udoskonalenia technik takich, jak programowanie strukturalne, do współczesnych metod projektowania oprogramowania obiektowego zaliczają się takie usprawnienia, jak wzorce projektowe (ang. design patterns), design by contract i języki modelowania (np. UML).
Obiektowość rozprzestrzeniła się dość znacznie, jednak zwykle w systemach hybrydowych, w połączeniu z programowaniem niskopoziomowym (assembler), funkcyjnym (Ocaml, niektóre dialekty Lispa), sieciowym (Java), skryptowym (Perl, Python, Ruby) itd. Systemy czysto obiektowe typu Smalltalka nie znalazły zbyt szerokiego zastosowania.
Źródło: Wikipedia
2. Nasza pierwsza klasa.
<?php class NaszaKlasa // 1 { public $Input; //2 } $Obiekt = new NaszaKlasa; //3 $Obiekt->Input = 'Hello World!'; //4 echo $Obiekt->Input; //5 ?>
Teraz zajmiemy się omówieniem każdej linii naszej pierwszej klasy o nazwie "NaszaKlasa".
1. Stworzenie klasy o nazwie "NaszaKlasa",
2. Tworzymy pole o nazwie "Input". Nazwę pola zawsze musimy poprzedzić znakiem dolara, tak jak każdą zmienną. Ponad to pole możemy poprzedzić jednym ze słów kluczowych: public, private, protected (omówimy je wa dalszej części artykułu),
3. Tworzymy nowy obiekt klasy i przypisujemy go zmiennej "$Obiekt",
4. Przypisujemy wartość "Hello World!" polu "Input",
5. Wyświetlamy zawartości pola "Input".
Zapisu "$Obiekt->Input" możemy używać jak zwykłej zmiennej. Czyli:
<?php $Obiekt = new NaszaKlasa; $Obiekt->Input = 'Hello World!'; if($Obiekt->Input == 'Cześć' || 'Hello World!') { echo $Obiekt->Input; } else { echo 'Nie powiedziałeś cześć :D'; } ?>
3. Metody klasy.
Teraz stworzymy nową klasę, do której dodamy dwie metody. Pierwszą o nazwie "Lacz()", która będzie odpowiedzialna za połączenie z bazą danych oraz zwrócenie odpowiedniego komunikatu, a druga "Close()" będzie zamykała połączenie.
<?php class MySQL // 1 { public $Host, $Name, $User, $Pass, $Message = 'Nawiązano połączenie z bazą danych.'; //2 protected $Connect; //3 public function Lacz() { $this->Connect = mysql_connect($this->Host, $this->User, $this->Pass) or die($this->Message = 'Bład: '.mysql_error()); mysql_select_db($this->Name, $this->Connect) or die($this->Message = 'Bład: '.mysql_error()); return $this->Message; } public function Close() { $this->Message = 'Zakończono połączenie z bazą danych.'; mysql_close($this->Connect) or die($this->Message = 'Bład: '.mysql_error()); return $this->Message; } } $SQL = new MySQL(); $SQL->Host = 'localhost'; $SQL->Name = ''; $SQL->User = 'root'; $SQL->Pass = ''; echo $SQL->Lacz(); echo $SQL->close(); ?>
Jak już pewnie zauważyliście metody są podobne do zwykłych funkcji,a właściwie można powiedzieć, że są to funkcje:) Z tą tylko różnicą, że można je poprzedzić jednym ze słów kluczowych. Jeśli chcemy wywołać metodę stosujemy taki zapis: $Obiekt->nazwaMetody(); , gdzie $Obiekt to zmienna, do której przypisaliśmy obiekt klasy. Nazwę metody musimy poprzedzić znakami: "->" To nie takie trudne
![;)](/public/style_emoticons/default/wink.png)
4. Słowa kluczowe.
W programowaniu obiektowym mamy do dyspozycji słowa kluczowe, z którymi zapoznałeś się już wcześniej. Teraz dla przykładu wyobraź sobie klasę,w której część pól ma być dostępna tylko w klasie. Aby tego dokonać nazwy pól lu metod poprzedzamy słowem kluczowym "protected". Jednak gdy chcesz mieć dostęp do wszystkich metod i pól poprzedzasz sie słowem "public". Zostało nam jeszcze "private", które robi właściwie to samo co "protected". W następnej części wprowadzenia dowiesz się jeszcze, więcej o słowach kluczowych.
5. Zakończenie.
Mam nadzieję, że to krótkie wprowadzenie do programowania obiektowego w PHP coś pomogło. Już niebawem kolejna część. W niej między innymi o: konstruktorach i destruktorach, __get(), __set() i __call(), dokładne omówienie słów kluczowych, statystyczne elementy klasy oraz dziedziczenie.