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: (4)
Literówka c.d.
Środa 21 Marzec 2007 3:24:56 pm - skyfly <przemekkus_at_interia.pl>

listingach :)

Literówka
Środa 21 Marzec 2007 3:23:49 pm - skyfly <przemekkus_at_interia.pl>

We wszystkich listningach zamiast "is_subclass_if" ma być oczywiście "is_subclass_of".

abstrakcja
Sobota 28 Styczeń 2006 6:18:42 pm - emp

Abstrakcja jest ale nie ma dziedziczenia wielorakiego.. tylko interfejsy a to jest kapa w prownaniu z mozliwosciami jakie daje welorakie dziedziczenie... jak mozna usuwac jakies udogodnienia tylko dlatego ba sa programisci ktorzy nie umieja z nich skorzystac... przyklad javy rezygnacia z wiekszosci udogodnien jest spowodowana tym by programisci popelniali mniej bledow .. chory pomysl tak offtopik ;)

Brak danych
Piątek 13 Styczeń 2006 10:45:21 pm - ..:: pingu ::.. <pingu_at_interia.pl>

literowka w podstronie:
Implementacja klas abstrakcyjnych w PHP 4.
na samym koncu (tzn koncowy akapit)
W PHP 4 nie ma różnicuy pomiędzy metodą abstrakcyjną oraz nieabstrakcyjną

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2022 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System