Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Klasy abstrakcyjne w PHP 4

Przykład: Hierarchia obiektów

Chcemy stworzyć klasę abstrakcyjną, która będzię się znajdować na szczycie naszej piramidy klas. Klasę nazwiemy Object. Nasza klasa będzie służyła do zapewnienia podstawowej funkcjonalności klasom z naszej hierarchi lub zmuszała do posiadania jej. Tymi metodami będą:

  • metoda reprezentująca nasza klasę w postaci łańcucha znaków
  • metoda służąca porównaniu jednej instancji obiektu do drugiej

Poniżej jest przedstawiona nasza klasa.

<?php
class Object
{
	function Object()
	{
		if(!is_subclass_if($this,"Object"))
		{
			trigger_error("Instancja klasy Object jest zabroniona.",E_USER_ERROR);
			return NULL;
		}
	}
}
?>

Zdefiniowaliśmy więc klasę na której możemy budować nasza hierarchię obiektów. Teraz przyjrzymy się temu przykładowi w dzialaniu. Wyobraźmy sobie, iż tworzymy aplikację do zarządzania zasobami ludzkimi. Jedną z oczywistych klas będzie klasa rerezentująca pracownika ("Employee"). Zapewne według purystow programowania obiektowego najpierw należało by stowrzyć model Osoby, a taka dopiero będzie mogła nosić pracowniczy kapelusz - ale to jest temat na osobny artykuł. Spójrzmy na klasę pracownika.

<?php
class Employee extends Object
{
	//zmienne klasy
	var $_id;
	var $_ssn;
	var $_firstName;
	var $_lastName;

	function Employee($id, $ssn, $firstName, $lastName)
	{
		//przypisanie wartosci
		$this->_id=$id;
		$this->_ssn=$ssn;
		$this->_firstName=$firstName;
		$this->_lastName=$lastName;
	}

	function toString()
	{
		$info="ID: ".$this->_id."\n";
		$info.="SSN: ".$this->_ssn."\n";
		$info.="Pierwsze imię: ".$this->_firstName."\n";
		$info.="Ostatnie imię: ".$this->_lastName."\n";
		return $info;
	}
}
?>

Łatwo zauważyc, że klasa pracownika ("Employee") zapewnia implementację metody toString(). Nie zawiera natomiast implementacji metody porównującej("equals"), jakoże dziedziczy tę funkcjonalność po klasie bazowej. Może się zdarzyć również, iż klasa dziedzicząca będzie na tyle skomplikowana, że będzie można się pokusić o wlasną implementację tej metody. Patrząc na powyższy przykład i zakładając, że będziemy budować naszą hierarchię w oparciu o klasę Object, możemy założyc, że każda z klas w naszej aplikacji będzie posiadać metody equals() oraz toString().

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (0)
Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System