Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
Letztes Update: 04.09.2007 20:49:50

Navigation

Seite Startseite
Seite Aktuelles
Seite Seite News*
Seite Seite Pressemitteilungen*
Seite SELFPHP
Seite Seite Über SELFPHP
Seite Seite Werbung
Seite Seite Kontakt
Seite Seite Unsere Banner
Seite Seite Impressum
Seite Qozido
Seite Seite Diving Edition
Seite Seite Snorkeling Edition
Seite SELFPHP Dokumentation
Seite Seite PHP-Skripte
Seite Seite PHP Befehlsreferenz
Seite Seite PHP 5 Praxisbuch
Seite Seite PHP Code Snippets
Seite Seite SELFPHP in Buchform
Seite Anbieterverzeichnis
Seite Seite Globale Branchen
Seite Seite Webhosting/Server
Seite Services
Seite Seite Forum*
Seite Seite RSS-Feeds*
Seite Seite Downloads*
Seite Seite Gratis-Video-Lektionen*
Seite Seite SELFPHP auf Heft-CD*
Seite Seite Newsletter*
Seite Internet Security
 sponsored by  
Seite Stellenangebote*
Sedo - Bei uns wird PHP großgeschrieben
Seite Premium-Partner   
Webhosting/Serverlösungen
Seite Produktempfehlung   
Seite Seite SteadyBackup

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  
 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 100.000 Beiträgen finden Sie sicher die passende Antwort!*  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!*

Vorname: 
Name:
E-Mail:
 




 

Praxis – Lebewesen




Hier ein abschließendes Beispiel zu den OOP-Erweiterungen, damit Sie sich ein Bild davon machen können, welch schöpferischer Akt sich im Einsatz objektorientierter Programmierung verbirgt.

<?php

// Schnittstelle
// Gewährleistet die Kommunikation zwischen Klassen
interface Wachstum {
  // Zu implementierende Methode
  function altern();
}

// Abstraktion einer Klasse
abstract class Lebewesen implements Wachstum {
  // Eigenschaften schützen, sodass über ein
  // Objekt kein direkter Zugriff möglich ist!
  protected $alter = 0;
  protected $geschlecht;

  public function altern(){}

  public final function getAlter() {
    return $this->alter;
  }
}

// Klasse Mensch wird durch die Superklasse
// Lebewesen erweitert (Vererbung)
class Mensch extends Lebewesen {
  protected static $vorfahre = "Affe";
  protected $name;
  
  // Konstruktor
  public function __construct($name, $geschlecht) {
    $this->name = $name;
    $this->geschlecht = $geschlecht;
    $this->altern();
  }
  
  // Destruktor
  public function __destruct() {
    echo "<br>...und so scheidet ".$this->name." dahin";
  }
  
  // Finale Methoden
  public final function altern() {
    $this->alter++;
  }
  
  public final function getName() {
    return $this->name;
  }
  
  public function umbenennen($neuerName) {
    $this->name = $neuerName;
  }
  
  public function geburtstagFeiern() {
    $this->altern();
    echo "trööööt";
  }
  
  // Statische Methoden
  public static final function neueEvolutionstheorie($neuerVorfahre) {
    Mensch::$vorfahre = $neuerVorfahre;
  }
  
  public static final function getVorfahre() {
    return Mensch::$vorfahre;
  }
}

// Klasse Deutscher erbt von Mensch
class Deutscher extends Mensch {
  public function __construct($name, $geschlecht) {
    parent::__construct($name, $geschlecht);
  }
  
  public function umbenennen($neuerName, $geduldsfaden=false) {
    $erfolg = $this->behoerdengang($geduldsfaden);
    if ($erfolg) $this->name = $neuerName;
  }

  // Private Methode
  private function behoerdengang($geduldsfaden) {
    try {
     if (!$geduldsfaden)
      throw new Exception("Umbennenung fehlgeschlagen!");
      return true;
    } catch (Exception $prop) {
      echo $prop->getMessage()."<br>";
      return false;
    }
  }
}


// Autor erzeugen (Objekt)
$autor = new Mensch("Matthias", "m");

// Auf die Methode getName() zugreifen
echo $autor->getName()."<br>";

// Autor umbenennen
$autor->umbenennen("Matze");

// Neuen Namen ausgeben
echo "Neuer Name: ".$autor->getName()."<br>";

// Folgende Codezeile erzeugt einen Fehler
// da die Eigenschaft geschützt ist!
// echo $autor->geschlecht;

// An das Alter gelangt man mit Hilfe der
// Funktion getAlter()
echo "Alter des Autors: " . $autor->getAlter() ."<br>";

// Stammt Autor vom Mensch ab?
if ($autor instanceof Mensch) {
echo $autor->getName()." ist ein Mensch!<br>";
}

// Wer sind die Vorfahren der Menschen
echo "Der Mensch ist ein Nachfahre von ".Mensch::getVorfahre()."<br>";

// Neue Theorie
Mensch::neueEvolutionstheorie("Alien");

// Wer sind nun die Vorfahren der Menschen
echo "Der Mensch ist ein Nachfahre von ".Mensch::getVorfahre()."<br>";

// Autorin erzeugen (Objekt)
$autorin = new Deutscher("Caroline", "w");

// Die Methode behoerdengang ist über
// das Objekt nicht zu erreichen, da
// diese als private gekennzeichnet ist!
// $autorin->behoerdengang(true);

// Gibt den Ausnahmefall aus, da das
// zweite Argument false ist (throw/catch).
$autorin->umbenennen("Caro", false);

?>

Ausgabe
Matthias
Neuer Name: Matze
Alter des Autors: 1
Matze ist ein Mensch!
Der Mensch ist ein Nachfahre von Affe
Der Mensch ist ein Nachfahre von Alien
Umbennenung fehlgeschlagen!

...und so scheidet Matze dahin
...und so scheidet Caroline dahin



 




 sponsored by

Sedo - Bei uns wird PHP großgeschrieben


VERIO - An NTT Communications Company


HighText iBusiness


Webspace-Verkauf.de


video2brain




 Premium-Partner
 Webhosting/Serverlösungen

BPI-Systeme


Premium-Partner Pixel X


Premium-Partner First Colo


Premium-Partner dogado Internet




Qozido


© 2001-2008 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt