12 Objektorientiert programmieren in PHP 5

Größe: px
Ab Seite anzeigen:

Download "12 Objektorientiert programmieren in PHP 5"

Transkript

1 Objektorientiert programmieren in PHP 5 In den vergangenen beiden Kapiteln haben wir erläutert, wie Sie sich Objekte, Klassen, Methoden und Attribute vorstellen können und wie Sie Ihre Klassen und Objekte für Ihre Webanwendung entwickeln. Wie Sie Ihre Klassen sowie deren Methoden und Attribute in PHP darstellen, erfahren Sie in diesem Kapitel. Ebenfalls erklären wir hier, wie Sie den Zugriff auf Methoden und Attribute unterschiedlich gegen unerwünschten Zugriff schützen und Beziehungen zwischen Objekten in PHP darstellen können Die wichtigsten objektorientierten Sprachelemente Wir gehen in unserem Buch auf einige PHP-Sprachelemente ein, mit denen Sie objektorientiert programmieren können. Hier wollen wir mit den wichtigsten Möglichkeiten zur Abbildung von Klassen in PHP beginnen Klassen definieren Eine Klasse definieren wir in PHP mit dem Sprachelement class. Entsprechend gängiger Kodierungsstandards empfehlen wir, den Klassennamen großzuschreiben, wie beispielsweise bei der folgenden Klasse Artikel: Klassen werden mit class dargestellt class Artikel // Hier werden Attribute und Methoden der Klasse beschrieben Der Einfachheit und Eindeutigkeit halber sollten Sie jede Klasse in einer separaten Datei abspeichern. Dabei schlagen wir vor, dass Sie der Datei den gleichen Namen wie der programmierten Klasse geben und dabei die Dateinamen großschreiben. Pro Klasse eine Datei

2 Objektorientiert programmieren in PHP 5 Bei eingebundenen Dateien keine Leerzeilen außerhalb der Skript-Tags Einbinden von Klassen mit require_once Mit new ein neues Objekt erzeugen Bei der Speicherung der Klassen müssen Sie darauf achten, dass der Klassencode außerhalb der Skript-Tags und keine Zeilen, auch keine Leerzeilen, enthält. Diese Zeilen können bei Seitenaufrufen (so genannten Header-Aufrufen) zu Fehlern im Programm führen, da sie vom PHP-Interpreter als bereits ausgegebener HTML-Code interpretiert werden. Sie haben eine Klasse erstellt und in einer separaten Datei abgespeichert. Der Bauplan für ein Artikelobjekt existiert nun. Erstellen Sie jetzt eine neue PHP-Datei, in der Sie zuerst die Artikel-Klasse mit require_once bekannt machen müssen. Sie können jetzt mit Hilfe des new-operators in der neuen Datei ein neues Objekt erzeugen, d. h. ein Objekt nach dem Baumuster oder dem Bauplan der Artikel-Klasse. Das neu erzeugte Artikelobjekt wird dabei im System gespeichert und die Referenz auf das neue Objekt in der gleichen Zeile der Variablen $Artikel zugewiesen. Über die Variable $Artikel haben Sie dann im weiteren Verlauf Zugriff auf das Objekt. // Bauplan einbinden require_once Artikel.php ; // Objekt Artikel erzeugen $Artikel = new Artikel(); Erzeugen eines Objektes Wenn Sie mit new ein neues Artikel-Objekt erzeugen, spricht man auch vom Instanziieren eines Artikels oder im Falle des erzeugten Artikelobjektes von einer Artikelinstanz. Das Artikelobjekt hat alle Eigenschaften, die in der Klasse Artikel definiert wurden. Eine Variable für Objekte wird am besten großgeschrieben da andere Variablen in der Regel kleingeschrieben werden, erkennen Sie so die großgeschriebene Variable sofort als eine Objektvariable. Ein Objekt wird somit immer nach folgendem Muster erzeugt (und zwar entsprechend dem Bauplan der angegebenen Klasse): $Variablenname = new Klassenname(); Bitte beachten Sie, dass Objekte nur bis zum Aufruf einer neuen Internetseite existieren. In der Beschreibung des Programmierbeispiels auf den Webseiten zum Buch ( erhaltensieeinige Hinweise, wie Sie Objekte auch über einen Seitenwechsel hinweg retten können.

3 12.1 Die wichtigsten objektorientierten Sprachelemente Attribute verwenden Sie wissen nun, wie Sie Ihre Klassen in PHP darstellen können. Nun wollen wir für eine Klasse Link verschiedene Attribute definieren. Attribute werden in PHP-Klassen als Klassenvariablen Variablen einer Klasse dargestellt. Dabei wird vor jeder Klassenvariablen das Sprachelement var vorangestellt. Attribute werden mit»var«dargestellt class Link // Variablendeklaration und -definition var $linkid = 33; var $objektid = null; var $parameter; Im obigen Beispiel haben wir drei Attribute für die Klasse Link definiert und deklariert. Die Variablen können Sie jeweils mit einem Initialisierungswert definieren zum Beispiel 33 für $linkid und null für $objektid. Damit haben Sie für die deklarierten Klassenattribute einen Anfangswert 33 bzw. null definiert. Das Attribut $parameter hat einen undefinierten Initialisierungswert. Wenn Sie ein Objekt erzeugen, dann sind die Attribute bereits mit diesem Initialisierungswert voreingestellt. Die Attribute schreiben Sie am besten immer klein. Setzt sich der Attributname aus mehreren Wörtern zusammen, dann beginnen Sie das Folgewort mit einem Großbuchstaben und hängen es direkt an das erste Wort an. Auf die Attribute einer Klasse können Sie mit dem Klassenoperator -> zugreifen. require_once Link.php ; // Objekt Link erzeugen $Link = new Link(); // Die Variable linkid des Objektes in $Link ausgeben echo $Link->linkId; Variablendeklaration und -definition sind gleichzeitig möglich Zugriff auf Klassenelemente mit»->«nachdem wir die Klasse Link mit require_once im aktuellen Programm bekannt gemacht haben, können wir das Linkobjekt mit new erzeugen. Ab diesem Zeitpunkt können wir auf die Attribute der Link-Klasse in der oben dargestellten Art und Weise zugreifen. Unmittelbar hinter der

4 Objektorientiert programmieren in PHP 5 Variablen $Link folgt also das Sprachelement -> und danach das Attribut der Klasse, auf welches wir zugreifen wollen. Im obigen Beispiel greifen wir also auf das Attribut linkid des Linkobjektes, das über die Referenz in $Link ansprechbar ist, lesend zu. Wenn Sie auf ein Attribut des Objektes schreibend zugreifen, dann ändern Sie damit den Objektzustand. $Link->linkId = 3; Vorsicht beim Umgang mit Public-Attributen! Wenn Sie den Zugriff auf Attribute uneingeschränkt ermöglichen wollen, dann reicht die Deklaration der Klassenvariablen wie oben beschrieben aus. Ein solches Attribut ist dann public (öffentlich). Public- Zugriffe sollten Sie jedoch weitgehend vermeiden. Wenn Sie auf die Attribute nur über klasseneigene Methoden zugreifen, dann haben Sie die gesamten Klassendaten besser gekapselt und somit besser vor unerwünschten Zugriffen geschützt. Wie Sie den Klassenschutz in PHP umsetzen können, erläutern wir später in diesem Kapitel Methoden schreiben Methoden mit Mit den Methoden können Sie auf die Attribute einer Klasse zugreifen»function«definieren und den Zustand von Objekten ändern. Methoden werden in PHP 5 mit dem Sprachelement function beschrieben. Entsprechend den Funktionen beim prozeduralen Programmieren können Sie bei einer Methode auch verschiedene Parameter übergeben. Die Methode einer Klasse kann jedoch ähnlich den Attributen immer nur in Verbindung mit der Klasse bzw. dessen Objekt aufgerufen werden. Eine Methode wird üblicherweise immer nach den Attributen innerhalb der entsprechenden Klasse platziert. Wir empfehlen, dass Sie den Methodennamen nach Möglichkeit mit einem kleingeschriebenen Verb beginnen. Beispielsweise können Sie die Wörter eines längeren Methodennamens optisch voneinander trennen, indem Sie alle Wörter nach dem ersten Wort mit einem großen Buchstaben beginnen zwischen den Wörtern ist dabei jedoch kein Leerzeichen. Zum Beispiel: Listing 12-1 Auszug aus Mitarbeiter.php class Mitarbeiter // Variablendefinition und -deklaration var $personalnummer = 33; var $gehalt = 1000; function getpersonalnummer() return $this->personalnummer;

5 12.1 Die wichtigsten objektorientierten Sprachelemente 185 function setpersonalnummer($parameter) $this->personalnummer = $parameter; function getgehalt() return $this->gehalt; function getgehaltplus($bonus) return $this->getgehalt() + $bonus; Üblicherweise werden für jedes Attribut zwei Methoden geschrieben. Die set-methode benutzen Sie zum Ändern eines Attributinhaltes. Die get-methode können Sie zum Auslesen eines Attributes verwenden. In den set- und get-methoden können Sie die Attributwerte auch zusätzlich modifizieren, bevor das Attribut überschrieben bzw. ausgegeben wird. In der Methode getgehaltplus wird z. B. zu dem Attributwert von gehalt vor der Rückgabe des Wertes noch der Inhalt des Methodenparameters $bonus hinzuaddiert. Ähnlich wie bei den Attributen eines in einer Variablen gespeicherten Objektes können Sie auf die public-methoden mit Hilfe des Sprachelements -> zugreifen. Dabei müssen Sie den Operator -> direkt nach der Objektvariablen platzieren, unmittelbar gefolgt von der Methode, ggf. mit Angabe von Parametern. Objektzustand mit setund get-methoden ändern Listing 12-2 require_once Mitarbeiter.php ; Anwendung von Mitarbeiter.php // Objekt Mitarbeiter erzeugen (Auszug) $Mitarbeiter = new Mitarbeiter(); // Die Variable personalnummer des Objektes in $Mitarbeiter ausgeben echo $Mitarbeiter->getPersonalNummer(); // Zum Gehalt zuerst 2 addieren, dann ausgeben echo $Mitarbeiter->getGehaltPlus(2);

6 Objektorientiert programmieren in PHP 5 Mit»$this«auf objekteigene Attribute und Methoden zugreifen Nachdem wir die Mitarbeiter-Klasse eingebunden und das Mitarbeiterobjekt erzeugt haben (und gleichzeitig über die Referenz in der Variablen $Mitarbeiter zugreifbar machen), holen wir über die Methode getpersonalnummer() das Attribut personalnummer und mit der Methode getgehaltplus das um 2 erhöhte Gehalt aus dem Mitarbeiterobjekt. Wie Sie auf Attribute und Methoden eines Objektes über eine Variable zugreifen können, wissen Sie jetzt. Wenn Sie innerhalb der Methode einer Klasse auf ein Attribut oder eine andere Methode des eigenen Objektes zugreifen wollen, dann benötigen Sie ein weiteres PHP- Sprachkonstrukt. Innerhalb einer Methode können Sie mit dem Sprachelement $this auf objekteigene Attribute und Methoden zugreifen. Jedes Objekt hat seine eigenen Attribute und Methoden, immer gemäß dem in der Klasse definierten Baumuster. Sollten Sie mehrere Objekte erzeugt haben, gilt $this immer nur für das jeweils eigene Objekt. Mit $this->personalnummer sprechen Sie also das Attribut $personalnummer im eigenen Objekt an. Mit $this- >getpersonalnummer() rufen Sie die entsprechende Methode innerhalb des eigenen Objektes auf. class Mitarbeiter // Variablendefinition und -deklaration var $personalnummer = 33; function getpersonalnummer() return $this->personalnummer; Den Konstruktor eines Objekts anwenden Sie wollen bereits bei der Erzeugung eines Objektes dieses in einen von Ihnen definierten Zustand bringen? Mit dem Konstruktor einer speziellen Methode ist dies möglich. Listing 12-3 Auszug aus Link.php class Link // Variablendefinition und -deklaration var $linkid = 33; // Konstruktor function construct($neuerlink)

7 12.1 Die wichtigsten objektorientierten Sprachelemente 187 $this->setlinkid($neuerlink); // alle anderen Methoden function setlinkid($parameter) $this->linkid = $parameter; // ggf. weitere Anweisungen, welche bei der // Objekterzeugung durchgeführt werden sollen function getlinkid() return $this->linkid; Um den Konstruktor im Code zu den einzelnen Klassen immer leicht und schnell zu finden, sollten Sie diesen als allererste Methode vor allen anderen Methoden definieren. Der Konstruktor heißt immer: construct() Beachten Sie dabei die zwei Unterstriche vor construct(). Der Konstruktor wird, falls vorhanden, automatisch bei der Erzeugung des Objektes mittels new von PHP aufgerufen. Damit können Sie den Objektzustand direkt beim Erzeugen Ihres Objektes definieren. Sie brauchen die»methode«construct() nicht selbst aufzurufen, dies erledigt PHP beim Erzeugen des Objektes für Sie. Im obigen Beispiel setzt der Konstruktor das Attribut $linkid auf den neuen Wert $neuerlink. Damit wird der bei der Variablendeklaration definierte Wert 33 überschrieben. Folgender Code verdeutlicht die Funktion des Konstruktors: require_once Link.php ; // Objekt Link erzeugen $Link = new Link(77); // incl. Aufruf des Konstruktors! // Die Variable linkid des Objektes in $Link ausgeben echo $Link->getLinkId(); // = 77 und nicht 33! Der Konstruktor muss immer» construct()«heißen Konstruktoren werden bei der Objekterzeugung automatisch aufgerufen Listing 12-4 Anwendung von Mitarbeiter.php (Auszug) Ohne den Konstruktor würde das PHP-Skript den Wert 33 ausgeben. Mit der Methode getlinkid() wird der aktuelle vom Konstruktor bereits überschriebene Attributwert zurückgegeben (also 77). Wenn Sie

8 Objektorientiert programmieren in PHP 5 Der Konstruktor kann auch weggelassen werden Auch bei Konstruktor mehrere Parameter möglich In PHP 4 heißen Konstruktoren anders! keine Zustandsänderung bei der Erzeugung des Objektes benötigen, dann können Sie den Konstruktor auch weglassen der Code funktioniert auch ohne Konstruktor. Sie können den Konstruktor sowohl ohne Parameter als auch mit Parameter definieren. Bei der Objekterzeugung müssen Sie diese Parameter in der Klammer hinter der Klasse entsprechend mit angeben. Beispielsweise übergeben Sie mit $Link = new Link(77) dem Link-Konstruktor die Zahl 77 in der Klasse Link würde der Konstruktor dann function construct($parameter) lauten. In PHP 4 hatte der Konstruktor den gleichen Namen wie die Klasse. Der Konstruktor hätte in obigem Beispiel also function Link() geheißen (da die Klasse auch Link heißt). Auch in PHP 4 wurde der Konstruktor bei der Objekterzeugung automatisch aufgerufen Den Destruktor eines Objekts nutzen Mit dem»destruktor«objekte in einen definierten Endzustand versetzen Früher oder später werden Sie sich eine Methode wünschen, die von PHP ähnlich dem Konstruktor beim Löschen eines Objektes automatisch aufgerufen wird. Diese Methode stellt Ihnen PHP mit dem so genannten Destruktor zur Verfügung. Beim Löschen eines Objektes können Sie mit Hilfe des Destruktors das Objekt in einen definierten Endzustand versetzen. Zum Beispiel können Sie so bestehende Datenbankverbindungen abbrechen oder Objekte speichern. Der Destruktor wird beim Löschen eines Objektes immer automatisch aufgerufen. Sie brauchen sich also um den Aufruf der»methode«destruktor nicht zu kümmern. Damit der Destruktor im Code zu den einzelnen Klassen immer leicht und schnell gefunden werden kann, sollte dieser direkt nach dem Konstruktor definiert werden alternativ nach allen anderen Methoden. class Datenbankzugriff // Variablendefinition und -deklaration var $database = null; // Konstruktor function construct() // Datenbankverbindung herstellen $this->database = DB::connect("mysql://user:passwort@host/dbname); // Destruktor

9 12.1 Die wichtigsten objektorientierten Sprachelemente 189 function destruct() // Datenbankverbindung schließen $this->database->close(); // weitere Methoden Mit dem Konstruktor im obigen Beispiel wird eine Verbindung zum Da- DerDestruktormuss tenbankserver aufgebaut, sobald ein Objekt gemäß der Klasse Datenbankzugriff erzeugt wird. Wenn das Objekt gelöscht werden soll, wird heißen immer» destruct«vor dem endgültigen Löschen der Destruktor aufgerufen, in welchem die Datenbankverbindung wieder unterbrochen wird. Der Destruktor muss immer destruct heißen. Vor dem Methodennamen destruct stehen zwei Unterstriche. In PHP 4 gab es noch keinen Destruktor. Diese Funktionalität wur- Vergleich mit PHP 4 de erst mit dem Erscheinen der Version 5 von PHP hinzugefügt. In PHP 5 kann der Destruktor auch weggelassen werden. Sie müs- DerDestruktoristeine sen den Destruktor nur definieren, wenn Sie beim Löschen des Objektes Kann-Methode verschiedene Abläufe sicherstellen wollen Beziehungen in Klassen darstellen Sie haben nun erfahren, wie Sie eine Klasse und deren Attribute und Methoden in PHP 5 darstellen können. Verschiedene Klassen können miteinander in Beziehung stehen. Wie Sie diese Beziehungen zwischen zwei Klassen in PHP 5 abbilden können, zeigen wir Ihnen im Folgenden. 1:n-Beziehungen abbilden In unserer Beispielanwendung gibt es eine 1:n-Beziehung zwischen den Klassen Artikel undartikelgruppe: Sie können einen Artikel zu genau einer Artikelgruppe zuordnen, einer Artikelgruppe können Sie jedoch mehrere Artikel zuordnen. Wie wäre es, wenn Sie der Artikelgruppe sagen könnten, dass sie den Preis aller dazugehörenden Artikel um einen bestimmten Betrag erhöhen sollte? Das schaffen Sie nur, wenn die Artikelgruppe weiß, welche Artikel zur Gruppe gehören. Diese 1:n-Beziehung können Sie mit Hilfe einer Liste in PHP in der Artikel-Klasse abbilden. Dazu definieren Sie in der Klasse Artikel ein- Abbildung 12.1 Direkte Beziehungen zwischen zwei Klassen

10 Objektorientiert programmieren in PHP 5 fach ein Hilfsattribut in der Form einer Liste, in der Sie alle Artikelgruppenobjekte (oder deren Ids) ablegen können. Die Liste können Sie als Array oder in Objektform definieren. Mit einer Methode linkobject() können Sie die Beziehungsliste ändern. An folgendem Beispiel erkennen Sie, wie Sie eine Liste als Array umsetzen können. Listing 12-5 Beziehung zwischen Artikel und Artikelgruppe class Artikel var $listeartikelgruppe = array(); //.. function linkobject($artikelgruppe) // Artikelgruppenobjekt in Liste einfügen $listeartikelgruppe[] = $Artikelgruppe; class Artikelgruppe $Artikel = new Artikel(); $Artikelgruppe = new Artikelgruppe(); $Artikel->linkObject($Artikelgruppe); Bei der Methode linkobject() sollten Sie außerdem prüfen, ob die Artikelgruppe bereits in der Liste vorhanden ist. Wenn Sie eine Beziehung zwischen zwei Objekten löschen wollen, dann brauchen Sie lediglich eine Methode deletelink() zu schreiben. Dieser Methode übergeben Sie das Objekt, zu dem Sie die Beziehung löschen wollen. In der Methode können Sie dann das als Parameter übergebene Objekt in der Beziehungsliste suchen und löschen. Im Kapitel 11 zur Objektmodellierung ab Seite 161 können Sie Weiteres zur Klassenmodellierung und deren grafischen Darstellung lesen. An dieser Stelle wollen wir noch darauf aufmerksam machen, dass Sie die Beziehungsliste immer auf der n-seite definieren sollten. Sie sind damit prinzipiell in der Lage, eine 1:n-Beziehung zwischen Objekten in PHP abzubilden. Eine elegantere Darstellung von Beziehungen im Zusammenhang mit Datenbanken stellen wir Ihnen bei der Beschreibung der Beispielanwendung auf den Webseiten zum Buch vor. Für unsere Beispielanwendung bilden wir die Beziehungen auf einer Datenbank ab. Dabei stellen wir mit Hilfe der DB_DataObject-Klasse jede einzelne Tabelle der Datenbank dar. Da sich die Beziehung zwischen zwei Klassen in den unterschiedlichen Tabellen widerspiegelt, wird die-

11 12.1 Die wichtigsten objektorientierten Sprachelemente 191 se Beziehung auch in den entsprechenden Klassen mit DB_DataObject- Funktionalität abgebildet. Wie Sie eine 1:n-Beziehung einfacher mit Hilfe der DB_DataObject- Klassen aus PEAR bearbeiten können, erfahren Sie bei der Beschreibung der Beispielanwendung auf den Webseiten zum Buch. n:m-beziehungen abbilden Die Beziehung zwischen einer Farbe und einem Artikel in unserer Beispielanwendung ist eine n:m-beziehung: Ein Artikel ist in mehreren Farben lieferbar und in einer bestimmten Farbe gibt es mehrere unterschiedliche Artikel. Abbildung 12.2 n:m-beziehung zwischen zwei Klassen Rein programmiertechnisch gesehen, können Sie diese n:m-beziehung wieder mit Hilfe einer Liste (als Array oder in Objektform) darstellen. Dafür müssen Sie sowohl in der Klasse Artikel alsauchinderklasse Farbe eine Beziehungsliste definieren. In beiden Klassen benötigen Sie wieder die linkobject-methode, um die Beziehungsliste zu ändern. Wollten Sie jetzt eine n:m-beziehung hinzufügen, dann müssen Sie über die Methode linkobject() nicht nur das Farbobjekt in die Liste des eigenen Artikelobjektes, sondern auch das eigene Artikelobjekt in die Liste des anderen Farbobjektes einklinken. Folgendes Beispiel mit den beiden miteinander in Beziehung stehenden Klassen Artikel und Farbe verdeutlicht dies: class Artikel var $Liste = array(); function linkobject($farbe) // Farbobjekt in Liste einfügen $Liste[] = $Farbe; Listing 12-6 Auszug aus Artikel.php // aktuelles Artikelobjekt in die Liste der Farben einfügen $Farbe->linkObject($this);

12 Objektorientiert programmieren in PHP 5 Abbildung 12.3 Aufgelöste n:m- Beziehung zwischen zwei Klassen Damit können Sie n:m-beziehungen in PHP abbilden. Wie bei den 1:n- Beziehungen gibt es auch bei den n:m-beziehungen die Möglichkeit, die Objekte und deren Beziehungen auf einer Datenbank abzulegen und die gesamte Struktur mit Hilfe der DB_DataObject-Klassen darzustellen. Für jede Tabelle gibt es dabei wieder ein separates Objekt. Bei der n:m- Beziehung ist dabei jedoch notwendig, dass Sie eine Hilfstabelle definieren. Die Hilfstabelle reduziert die Komplexität der n:m-beziehung auf zwei einfache 1:n-Beziehungen. Die Abbildung 12.3 zeigt Ihnen die vereinfachte Darstellung der n:m-beziehung. Die Umsetzung der n:m-beziehung können Sie mit Hilfe dieser Vereinfachung mit den bereits bekannten Tipps aus der 1:n-Beziehung in PHP darstellen. Wenn Sie nun für einen Artikel die lieferbaren Farben herausfinden wollen, dann müssen Sie eine umfangreiche Programmierarbeit leisten und über die Hilfstabelle entsprechende Farben abfragen. Diese Programmierarbeit sollten Sie im Artikelobjekt verstecken. Mit einer Methode getfarben können Sie eine Liste aller lieferbaren Farben erstellen und zurückgeben. Wie Sie eine 1:m-Beziehung einfacher mit Hilfe der PEAR-Klasse DB_DataObject bearbeiten können, erfahren Sie in der Beschreibung zum Beispielprogramm auf den Webseiten zum Buch. Über solche speziellen Methoden können Sie also die n:m-beziehungen weiter vereinfachen. Die spezielle Methode fragt dabei über die Hilfsklasse alle Objekte ab, die indirekt mit dem eigenen Objekt in Beziehung stehen. Die Frage, in welcher Klasse diese spezielle Methode am besten platziert wird, hängt vom Anwendungsfall ab. Will man z. B. wissen, wie viele Artikel einer Farbe existieren, dann platziert man die spezielle Methode getfarben in der Farb-Klasse. Will man hingegen eher wissen, in welchen Farben ein Artikel lieferbar ist, dann sollte eine solche Methode in der Artikel-Klasse stehen.

13 12.2 Vererbungsmechanismen Vererbungsmechanismen Stellen Sie sich vor, Sie hätten viele Klassen, die zwar vieles gemeinsam haben, jedoch im Detail sehr unterschiedlich sein können. Das riecht nach viel Arbeit und doppelt geschriebenem Code. Das muss nicht sein. Mit der objektorientierten Programmierung können Sie gezielt Klasseneigenschaften von der einen Klasse auf die andere Klasse»vererben«. Wie das geht und wie Sie die Vererbung gezielt beeinflussen können, beschreiben wir hier Einfachvererbung In PHP können Klassen, wie in anderen objektorientierten Sprachen auch, verschiedene Eigenschaften (Attribute und Methoden) von anderen Klassen erben. In PHP ist lediglich die Einfachvererbung möglich. Also das Erben von Vorfahren in einer Linie (z. B. Mutter zu Kind). Das Erben von mehreren Vorfahren gleichzeitig (Mehrfachvererbung, z. B. Mutter zu Kind und gleichzeitig von Vater zu Kind) ist in PHP nicht möglich was uns nicht daran hindert, die Vorteile der Einfachvererbung zu nutzen. In diesem Buch haben wir zur Erklärung von Objekten bereits einen Fast-Food-Laden zur Hilfe genommen. Dieser Fast-Food-Laden ist eine Firma genauso wie ein Baumarkt, ein Automobilzulieferer oder eine Bäckerei. Allen gemeinsam sind folgende Punkte: Klasseneigenschaften können vererbt werden Jede Firma gehört einer bestimmten Branche an. Gemeinsame Alle Firmen haben einen Namen. Eigenschaften Jede Firma hat ein Geschäftsgebäude, in dem die Arbeit verrichtet wird. Zu jedem Geschäftsgebäude gehört eine eindeutige Adresse. verschiedener Objekte Bei jeder Firma arbeiten Mitarbeiter. Jede Firma nimmt Geld ein und gibt Geld aus.... Würden wir nun für jede Firma eine Klasse in PHP 5 schreiben, so könnten wir in jeder Klasse die oben genannten Gemeinsamkeiten mit entsprechenden Attributen und Methoden angeben. Das kann ziemlich aufwendig sein, da wir gleiche Sachverhalte für jede Firma erneut beschreiben müssten. Was wäre, wenn man diese Gemeinsamkeiten nur einmal formulieren müsste also nicht bei jeder Firma separat? Damit würden wir uns viel Arbeit sparen. Auch Änderungen von z. B. Firmengebäuden oder Mitarbeiter könnten leichter durchgeführt werden, da diese nur bei der einmaligen Definition aller Gemeinsamkeiten und nicht bei allen Firmen durchgeführt werden müssten. Gemeinsamkeiten sollten nur einmal definiert werden

14 Objektorientiert programmieren in PHP 5 Eine Klasse für alle Gemeinsamkeiten aller Firmen Listing 12-7 Die Klasse Firma Definieren wir also zuerst eine Klasse mit allen Gemeinsamkeiten und nennen diese Klasse ganz allgemein Firma. Der Einfachheit halber definieren wir set- und get-methoden nur für die Attribute $name, $branche und $einnahmen sowie den Konstruktor. class Firma // Variablendefinition und -deklaration var $name = null; var $branche = null; var $einnahmen = 0; // Konstruktor function construct($branche) $this->branche = $branche; // alle anderen Methoden function setname($name) $this->name = $name; function getname() return $this->name; function seteinnahmen($einnahmen) $this->einnahmen = $einnahmen; function geteinnahmen() return $this->einnahmen; Durch folgendes Codebeispiel können Sie nun mit Hilfe der Klasse Firma den Namen der Firma sowie deren Einnahmen verändern oder abfragen: Listing 12-8 Anwendung von Firma.php (Auszug) require_once Firma.php ; // Zwei Firmenobjekte erzeugen

15 12.2 Vererbungsmechanismen 195 $Baumarkt = new Firma( Baumarkt ); // Firma ist Baumarkt $FastFood = new Firma( Fast-Food-Laden ) // Firma ist Fast-Food-Laden // Namen der Firmen definieren $Baumarkt->setName( Baubiber ); $FastFood->setName( McObject ); // Einnahmen der Firmen definieren $Baumarkt->setEinnahmen(12544,59); $FastFood->setEinnahmen(27642,32); // Ausgeben der Firmendaten echo Die Firma. $Baumarkt->getName(). aus der Branche. $Baumarkt->getBranche(). hatte Einnahmen in Höhe von. $Baumarkt->getEinnahmen(). EUR<br /> ; echo Die Firma. $FastFood->getName(). aus der Branche. $FastFood->getBranche(). hatte Einnahmen in Höhe von. $FastFood->getEinnahmen(). EUR <br /> ; Wir mussten hier für die unterschiedlichsten Firmen nur eine Klasse schreiben. Ob Baumarkt oder Fast-Food-Laden Daten wie Firmenname, Branche oder Einnahmen können mit Hilfe der Klasse Firma gut verwaltet werden. Kommen wir nun zu den Besonderheiten. Ein Fast-Food-Laden bietet zum Beispiel eine gewisse Anzahl von Getränken und Speisen an ein Baumarkt eher nicht. Wir könnten nun alle möglichen Attribute in die Klasse Firma packen. Das ist jedoch nicht sinnvoll, da ansonsten die Klasse etwas unübersichtlich wird. Wir schreiben nun für den Fast- Food-Laden eine eigene Klasse, die jedoch alle Eigenschaften (Attribute und Methoden) der Klasse Firma erbt. class FastFoodLaden extends Firma // Variablendefinition und -deklaration var $getraenke = 0; var $speisen = 0; Spezielle Eigenschaften einer Firma sind in einer speziellen Klasse Listing 12-9 Die Klasse FastFoodLaden function setgetraenke($getraenke) $this->getraenke = $getraenke; function getgetraenke() return $this->getraenke;

16 Objektorientiert programmieren in PHP 5 function setspeisen($speisen) $this->speisen = $speisen; function getspeisen() return $this->speisen; Die spezielle Klasse erbt alle gemeinsamen Eigenschaften In obigem Beispiel vererbt die Klasse Firma der Klasse FastFoodLaden alle Eigenschaften. Die Klasse FastFoodLaden hat also, ohne dies in der Klasse zu deklarieren, auch alle Attribute und Methoden der Klasse Firma. Also auch die Attribute $name, $branche, $einnahmen sowie die entsprechenden Methoden. Dabei ist zu beachten, dass vor dem Klassenbeginn mit require_once die Firmenklasse in die Datei der Klasse FastFoodLaden eingebunden wird. Im Klassenmodell der Abbildung 12.4 wird dargestellt, dass die Klasse FastFoodLaden Eigenschaften von der Klasse Firma erbt. Abbildung 12.4 Klasse FastFoodLaden erbt von der Klasse Firma Ein Objekt mit»extends«vom anderen ableiten Die Klasse FastFoodLaden wurde durch das PHP-Sprachelement extends von der Mutterklasse Firma abgeleitet. Die Klasse FastFoodLaden wird in diesem Zusammenhang auch Kind der Mutterklasse Firma genannt. Ein neuer Konstruktor oder Destruktor muss nicht definiert

17 12.2 Vererbungsmechanismen 197 werden falls vorhanden wird der Konstruktor oder Destruktor der Mutterklasse verwendet. Mit Hilfe der neuen, von der Klasse Firma abgeleiteten Klasse Fast- FoodLaden kann das obige Beispiel nun wie folgt aussehen: require_once Firma.php ; require_once FastFoodLaden.php ; // Zwei Firmenobjekte erzeugen $Baumarkt = new Firma( Baumarkt ); $FastFood = new FastFoodLaden( Fast-Food-Laden ); // Namen der Firmen definieren $Baumarkt->setName( Baubiber ); $FastFood->setName( McObject ); Listing Anwendung von FastFoodLaden.php (Auszug) // Einnahmen der Firmen definieren $Baumarkt->setEinnahmen(12544,59); $FastFood->setEinnahmen(27642,32); // Definition von Speisen und Getränken $FastFood->setGetraenke(4); $FastFood->setSpeisen(10); // Ausgeben der Firmendaten echo Die Firma. $Baumarkt->getName(). aus der Branche. $Baumarkt->getBranche(). hatte Einnahmen in Höhe von. $Baumarkt->getEinnahmen(). EUR <br /> ; echo Die Firma.$FastFood->getName(). aus der Branche. $FastFood->getBranche(). hatte Einnahmen in Höhe von. $FastFood->getEinnahmen(). EUR mit. $FastFood->getGetraenke(). Getraenken und. $FastFood->getSpeisen(). Speisen erzielt<br /> ; Hier wird, im Gegensatz zum ersten Beispiel, mit der Objektvariablen $FastFood ein Objekt der Klasse FastFoodLaden erzeugt nicht wie im ersten Beispiel der Klasse Firma. Für die zweite Firma werden dann mit den Methoden setgetraenke() und setspeisen() die Anzahl von Getränken und Speisen definiert. Bei der Ausgabe der Firmendaten werden die Getränke- und Speisenanzahl mit ausgegeben. Diese Eigenschaften waren in der Mutterklasse noch nicht vorhanden. Der Aufruf der Methoden setgetraenke() und setspeisen() beim Objekt $Baumarkt würde einen Fehler verursachen, da die beiden Methoden nur in der Klasse FastFoodLaden, jedoch nicht in der Klasse Firma existieren. Die Klasse Firma vererbt zwar ihre Eigenschaften an die Mutterklasse vererbt immer an eine Kindklasse nicht umgekehrt

18 Objektorientiert programmieren in PHP 5 Ableiten bedeutet vererben und vereinfachen Klasse FastFoodLaden dies gilt jedoch nicht für den umgekehrten Fall. Die Klasse FastFoodLaden besitzt also zu den geerbten Eigenschaften zusätzliche ganz individuelle Eigenschaften, welche in der Klasse Firma nirgends zu finden sind. Stellen Sie sich vor, sie hätten alle Attribute und Methoden der Klasse Firma nochmal in der Klasse FastFoodLaden definieren müssen. Diesen Aufwand haben Sie sich durch das Ableiten der Klasse Firma gespart. Wenn Sie die Klasse FastFoodLaden genauer betrachten, ist diese Klasse dadurch auch übersichtlicher geworden (sämtliche Attribute und Methoden der Klasse Firma müssen nicht nochmal geschrieben werden) Attribute und Methoden überschreiben Geerbte Eigenschaften können überschrieben werden Listing Auszug aus Albfirma.php Wir haben im obigen Beispiel die Klasse FastFoodLaden von der Klasse Firma mit dem Sprachelement extends abgeleitet. In der Kindklasse FastFoodLaden sind also auch die Attribute und Methoden der Mutterklasse Firma verfügbar, auch wenn diese in der Kindklasse nicht definiert wurden. Nun gibt es Fälle, in denen zwar eine Methode der Mutterklasse auch in der Kindklasse verfügbar sein sollte, jedoch mit einer leicht veränderten Funktionalität. Damit man die entsprechende Methode nicht über einen neuen Namen ansprechen muss, gibt es die Möglichkeit, Methoden zu überschreiben. Dabei definiert man in der Kindklasse die entsprechende Methode nochmal, obwohl diese in der Mutterklasse bereits existiert. In der Kindklasse wird die überschriebene Methode jedoch mit einer anderen Funktionalität ausgerüstet. Auf diese Weise können Attribute und Methoden der Mutterklasse überschrieben werden. Zur Verdeutlichung dieser Vorgehensweise, wollen wir noch einmal auf unser Firmenbeispiel zurückgreifen. Nehmen Sie an, dass eine neue Firma ab sofort in einer neuen Währung, den»alb-talern«, arbeitet und nicht mehr in Euro. Dazu leiten wir die Firma-Klasse zu einer neuen Albfirma-Klasse ab. Um die Firma zu anderen Firmen kompatibel zu halten, speichern wir die Daten nach wie vor in der Währung Euro ab. Lediglich die Änderung der Einnahmen und das Lesen der Einnahmen soll mit der neuen Alb-Taler-Währung (1 Alb-Taler = 42 Euro) durchgeführt werden. class Albfirma extends Firma var $wechselkurs = 42; //Euro pro Alb-Taler

19 12.2 Vererbungsmechanismen 199 function setwechselkurs($wechselkurs = Null) $this->wechselkurs = $wechselkurs; function getwechselkurs() return $this->wechselkurs; function seteinnahmen($einnahmen) $this->einnahmen = $einnahmen * $this->getwechselkurs(); function geteinnahmen() return $this->einnahmen / $this->getwechselkurs(); Bei der Mutterklasse Firma wurde noch kein Attribut für den Wechselkurs definiert. In der Kindklasse definieren wir daher den $wechselkurs als ein neues Attribut. Ebenso programmieren wir die entsprechenden set- und get-methoden zu diesem Attribut. In der Klasse Firma gibt es bereits die set- und get-methoden für das Attribut $einnahmen. Wir wollen, dass diese Methoden ab sofort in»alb-taler«arbeiten. Dazu müssen wir die beiden Methoden überschreiben. Bei der Methode seteinnahmen() multiplizieren wir die übergebenen Einnahmen vor dem Speichern mit dem Wechselkurs. In der Methode geteinnahmen() teilen wir das Einnahmen-Attribut vor der Rückgabe durch den Wechselkurs. Damit überschreiben wir die gleichnamige Methode der Mutterklasse Firma und verändern so das Erbgut in der Kindklasse. Wenn Sie nun eine Albfirma erzeugen, dann können Sie den beiden Methoden die Einnahmen in der Währung Alb-Taler übergeben, speichern aber alle Werte nach wie vor in Euro. Folgendes Beispiel verdeutlicht das: require_once Albfirma.php ; $Albfirma = new Albfirma(); $Albfirma->setEinnahmen(3.450); // Alb-Taler echo Einnahmen (Alb-Taler):. $Albfirma->getEinnahmen(). <br /> ; echo Einnahmen (Euro):. $Albfirma->einnahmen; Mit Überschreiben das Erbgut einer Klasse neu definieren Listing Anwendung von Albfirma.php (Auszug)

20 Objektorientiert programmieren in PHP 5 Wenn Sie die Einnahmen der Albfirma in Euro handhaben möchten, dann können Sie nach wie vor auf die Methoden der Mutterklasse zurückgreifen. Wie am folgenden Beispiel (siehe dazu ) aufgezeigt, müssen Sie dazu nur die entsprechende Methode der Mutterklasse aufrufen. class Albfirma extends Firma function geteinnahmeneuro() return Firma::getEinnahmen(); Da die Methode geteinnahmen() der Mutterklasse in Euro arbeitet, kann der Rückgabewert dieser Methode in der Methode geteinnahmeneuro() der Kindklasse aufgerufen werden. Den Aufruf von geteinnahmen() mit :: wollen wir im folgenden Abschnitt zu Objekt- und Klassenaufrufen näher betrachten Objekt- und Klassenaufrufe Statische Methodenaufrufe Objektaufrufe mit»->«sie können die Methoden eines Objektes auf zwei verschiedene Weisen aufrufen. Bisher haben Sie die Objektaufrufe einer Methode kennen gelernt. Hier wollen wir Ihnen die statischen Methodenaufrufe oder Klassenaufrufe vorstellen. Damit werden Sie in der Lage sein, vorgefertigte Lösungen durch Vererbung noch effektiver zu nutzen. Ein Objekt ist ein Exemplar einer Klasse bzw. ein reales»exemplar«nach dem Baumuster der entsprechenden Klasse. Zu diesem Objekt gehören sämtliche Werte aller Attribute, welche zusammen einen gewissen Objektstatus ergeben. Jedes Objekt hat also immer einen durch die Attributwerte definierten Zustand. Der Zustand kann mit Hilfe der Methoden geändert werden. Auf die Methoden eines Objekts wird bekanntermaßen mit -> zugegriffen. Mit $Baumarkt = new Firma( Baumarkt ); $FastFood = new Firma( Fast-Food-Laden ); werden zwei Objekte nach dem Baumuster der Klasse Firma erzeugt. Das Objekt in $Baumarkt hat z. B. mit dem Attribut branche den Status eines Baumarkts. Das Objekt in $FastFood hat den Zustand eines Fast- Food-Ladens.

21 12.2 Vererbungsmechanismen 201 Die Klasse an sich ist lediglich das Baumuster oder der Bauplan für die Objekte. In diesem Bauplan sind keine Attributwerte gespeichert, weshalb eine Klasse an sich auch keinen Zustand haben kann. Im Bauplan ist lediglich eine Anweisung der Konstruktor hinterlegt, in welchem Zustand ein Objekt direkt nach dem Erzeugen versetzt werden soll und über welche Methoden in welcher Art und Weise der Zustand des Objektes später geändert werden kann. Bei der objektorientierten Programmierung kann nun der Bauplan einer Klasse real genutzt werden, ohne dass man gleich ein neues Objekt erzeugt. Zum Beispiel kann auf die Methode connect() der Klasse DB zugegriffen werden, ohne nach dem Baumuster dieser Klasse zuerst ein Objekt zu erzeugen. // funktioniert auch ohne vorheriges "new DB();" $db = DB::connect($dsn); Aufrufe von Methoden in Klassen statische Methodenaufrufe Durch DB stellen wir sicher, dass eine Methode der gleichnamigen Klas- Klassenaufrufe mit»::«se aufgerufen wird. Vor den beiden Doppelpunkten steht also der Klassenname. Die Doppelpunkte haben die gleiche Wirkung wie -> in Zusammenhang mit $variable oder einem Objekt (Ausnahme: statische Methodenaufrufe in Kapitel ab Seite 207). Hinter den Doppelpunkten wird dann der Methodennamen definiert. Mit connect() wird also die entsprechende Methode der vor dem Doppelpunkt angegebenen Klasse aufgerufen. Wenn Sie in einer abgeleiteten Klasse z. B. den Konstruktor neu programmieren, dann können Sie trotzdem (auch wenn der Konstruktor der Mutterklasse überschrieben ist) auf den Mutterklassenkonstruktor und auf alle Attribute der Mutterklasse zugreifen falls definiert, auch auf andere überschriebene Methoden: class Mutter var $name = null; function construct() echo $this->name; class Kind extends Mutter function construct() $this->name = Max Muster ; Mutter:: construct();

22 Objektorientiert programmieren in PHP 5 Vergleich: Klassenaufruf mit klassenbezogenem include Mutterklasse mit parent aufrufen. Mit der Klasse Kind leiten Sie die Mutterklasse Mutter ab. In der Kindklasse überschreiben Sie den Konstruktor. Im überschriebenen Konstruktor der Kindklasse Kind definieren Sie das Attribut $name undrufen den Konstruktor der Mutterklasse auf. Nur im Konstruktor der Mutter wird das Attribut $name am Bildschirm ausgegeben. Würden Sie nun ein Objekt der Kindklasse mit z. B. $Kind = new Kind(); aufrufen, so könnten Sie auf dem Bildschirm die Ausgabe des Namens erkennen, obwohl diese Ausgabe in der Kindklasse nicht definiert wurde. Da Sie im Konstruktor der Kindklasse den Konstruktor der Mutterklasse aufrufen, kommt die Funktionalität des Mutterklassenkonstruktors trotzdem zum Tragen. Für eingefleischte Skripter könnte man einen solchen Klassenaufruf auch folgendermaßen umschreiben: Man inkludiert an der Stelle des Klassenaufrufes den Code der aufgerufenen Methode. In obigem Beispiel könnte im Konstruktor der Kindklasse auch statt Mutter:: construct() der Code echo $this->name; stehen mit dem gleichen Ergebnis. Wollen Sie die Methode einer Mutterklasse in einer Kindklasse aufrufen, dann können Sie sich auch des Schlüsselwortes parent bedienen. Die obige Kindklasse würde dann folgendermaßen aussehen: class Kind extends Mutter function construct() $this->name = Max Muster ; parent:: construct(); Achtung: Konstruktor- Falle Der Vorteil dabei ist, dass Sie den eigentlichen Namen der Mutterklasse gar nicht mehr kennen müssen. Sollten Sie die Klassenbezeichnung der Mutterklasse ändern, dann funktioniert der Aufruf parent:: construct(); immer noch der Aufruf des Mutterkonstruktors mittels Mutter:: construct(); dagegen würde dann nicht mehr funktionieren. Beachten Sie bitte Folgendes: Wenn Sie in einer Kindklasse einen Konstruktor definieren, dann wird der Konstruktor der Mutterklasse nicht automatisch aufgerufen. Den Mutterklassenkonstruktor müssen Sie im Kindklassenkonstruktor wie oben aufgezeigt selbst aufrufen Abstrakte Klassen und Methoden Es gibt Situationen, in denen wir gemeinsame Funktionalität in einer Mutterklasse zwar definieren, jedoch spezielle Funktionselemente und

23 12.2 Vererbungsmechanismen 203 Methoden erst in den davon abgeleiteten Klassen programmieren. In solchen Fällen haben Sie die Möglichkeit, eine Klasse zu definieren, jedoch die Erzeugung eines Objektes dieser Klasse nicht zu erlauben also die Ableitung der Klasse zu erzwingen. Eine so definierte Klasse wird als abstrakt bezeichnet und mit dem Schlüsselwort abstract versehen. Zu diesem Zweck können Sie mit abstrakten Methoden arbeiten. Dazu definieren Sie eine Methode in der Mutterklasse ohne Funktionalität eine Methode, in der nichts getan wird. In der Mutterklasse können Sie diese Methode bereits aufrufen. Erst in der Kindklasse aber füllen Sie die abstrakte Methode mit Funktionalität bzw. Code. Mit dem Schlüsselwort abstract können Sie den Programmierer zum Überschreiben abstrakter Methoden zwingen. abstract class Mutter function construct() $this->dospecial(); Überschreiben von Methoden in der Kindklasse erzwingen // Abstrakte Methode abstract function dospecial(); class Kind extends Mutter function dospecial() // Spezielle Funktion der Kindklasse // z.b. echo Alles klar ; Im Konstruktor der Mutterklasse Mutter wird bereits mit der Methode dospecial() gearbeitet, obwohl in dieser Methode keinerlei Funktion hinterlegt ist. Die abstrakte Methode dospecial() wird erst in der von der Mutterklasse abgeleiteten Kindklasse Kind definiert. Bitte beachten sie, dass Sie die Mutterklasse sowie deren abstrakte Methode als abstract definieren. Bei einer abstrakten Methode dürfen Sie keinen Anweisungsteil (auch keine geschweiften Klammern) definieren. In der Kindklasse müssen Sie alle abstrakten Methoden überschreiben. Vorteilhaft sind abstrakte Methoden dann, wenn Sie in den von einer Mutterklasse abgeleiteten Klassen spezielle Funktionalität unter- Bereits in der Mutterklasse kann mit einer erst in der Kindklasse definierten abstrakten Methode gearbeitet werden

24 Objektorientiert programmieren in PHP 5 bringen wollen, auf die Sie jedoch für viele Kindklassen gemeinsam in der Mutterklasse zugreifen möchten. Das folgende, etwas einfachere Beispiel macht den Umgang mit abstrakten Methoden nochmal deutlich: abstract class Firma var $name = n.n. ; var $branche = n.n. ; // Konstruktor function construct($branche) $this->branche = $branche; $this->showfirma(); // Abstrakte Methode abstract function showfirma(); // alle anderen Methoden function setname($name) $this->name = $name; function getname() return $this->name; class FastFoodLaden extends Firma // Variablendefinition und -deklaration var $getraenke = 0; function showfirma() echo Die Firma. $this->getname(). aus der Branche. $this->getbranche(). hatte Einnahmen mit. $this->getgetraenke(). Getränken und. $this->getspeisen(). Speisen erzielt<br /> ; function setgetraenke($getraenke) $this->getraenke = $getraenke;

25 12.2 Vererbungsmechanismen 205 function getgetraenke() return $this->getraenke; class SonstigeFirma extends Firma function showfirma() echo Die Firma. $this->getname(). ist aus der Branche. $this->getbranche(). <br /> ; Das prinzipielle Beispiel kennen Sie ja bereits aus dem Kapitel zur Einfachvererbung (Seite 193). Wir haben die Ausgabe der Firmendaten in die showfirma()-methode verlagert. Die gesamten Firmendaten müssen nun also nicht mehr aufwendig jedes Mal neu bei einem Objekt der Klassen programmiert werden ein Aufruf von showfirma() genügt. In der Mutterklasse Firma haben wir die showfirma()-methode abstrakt definiert. In den abgeleiteten Klassen FastFoodLaden und SonstigeFirma wird die abstrakte Klasse überschrieben dort haben wir die genaue Ausgabe der Firmendaten programmiert. Ganz nebenbei vereinfacht sich dann auch der Code für die Anwendung der Klassen wie folgt: require_once SonstigeFirma.php ; require_once FastFoodLaden.php ; // Zwei Firmen erzeugen $Baumarkt = new SonstigeFirma( Baumarkt ); $FastFood = new FastFoodLaden( Fast-Food-Laden ); // Namen der Firmen definieren $Baumarkt->setName( Baubiber ); $FastFood->setName( McFast ); Vorteile einer abstrakten show-methode // Definition von Speisen und Getränken $FastFood->setGetraenke(4); $FastFood->setSpeisen(10); // Ausgeben der Firmendaten $Baumarkt->showFirma(); $FastFood->showFirma();

26 Objektorientiert programmieren in PHP 5 Das Besondere an diesem Beispiel ist nun, dass sofort beim Erzeugen des Objekts die Methode showfirma() im Konstruktor aufgerufen wird. Die Firmendaten werden nun immer auch direkt nach der Objekterzeugung am Bildschirm ausgegeben. Da zum Zeitpunkt der Objekterzeugung lediglich die Branche definiert ist, wird auch nur die Branche richtig ausgegeben. Nach dem Ändern der Objektzustände (Name ändern, Einnahmen ändern, Getränke- und Speisenanzahl ändern bei der Fast- Food-Firma) werden dann die beiden Firmendaten nochmals ausgegeben nun mit den geänderten Daten. Das gleiche Ergebnis hätten Sie auch erzielen können, indem Sie in der showfirma()-methode der Mutterklasse Firma mit Hilfe eines switch-konstruktes je nach Branche unterschiedliche Ausgaben generiert hätten dann eben nicht so schön und nicht objektorientiert. Sie hätten dann bereits in der Mutterklasse eigentlich noch nicht bekannte Informationen, wie Getränke- oder Speisenanzahl, verarbeiten müssen final und static Mit dem Schlüsselwort abstract können Sie das Überschreiben von Methoden erzwingen. PHP 5 bietet Ihnen darüber hinaus die Möglichkeit, mit dem Schlüsselwort final das Überschreiben von Methoden zu unterbinden. Außerdem können Sie in PHP 5 mit der Angabe von static Methoden nicht wie gewohnt für jedes erzeugte Objekt, sondern nur einmal für jede Klasse zur Verfügung stellen. Mit den Schlüsselwörtern final, static und abstract können Sie Ihre Arbeit mit Objekten noch effektiver gestalten. final final-methoden sind nicht überschreibbar Mit final können Sie das Überschreiben einer Methode verhindern. class Mutter public final function felsenfest() class Kind felsenfest() // Fehler, da Methode final! Das Schlüsselwort können Sie dabei zusammen mit public, private oder protected kombinieren.

27 12.2 Vererbungsmechanismen 207 static Um auf ein Attribut oder eine Methode sinnvoll zugreifen zu können, mussten Sie ein Objekt der entsprechenden Klasse erzeugen. Attribute und Methoden existieren also nur in erzeugten Objekten in einer Klasse lediglich als Baumuster. In PHP 5 haben Sie die Möglichkeit, statische Attribute und Methoden zu definieren. Diese Attribute und Methoden können Sie auch aufrufen, wenn Sie noch kein Objekt erzeugt haben (siehe auch Abschnitt ab Seite 200). Wenn Sie viele Objekte einer Klasse erzeugen, in der eine statische Methode definiert ist, dann gibt es die Methode nicht wie üblich mehrmals (je Objekt ein Mal), sondern nur (je Klasse) ein Mal. Statische Attribute und Methoden können Sie dann sinnvoll nutzen, wenn Sie für viele Objekte eine einheitliche objektunabhängige, aber klassenbezogene Arbeit verrichten wollen. Beispielsweise können Sie mit einem statischen Attribut und einer statischen Methode für viele erzeugte Objekte einer Datenbankklasse die Datenbankverbindung nur ein Mal herstellen und nicht für alle erzeugten Objekte der entsprechenden Klasse. class Test // Variablendeklaration protected $db; Statische Klassenelemente funktionieren ohne Objekterzeugung Statische Elemente existieren je Klasse nur ein Mal Listing statische Attribute und Methoden protected static function connectdb($host, $user, $password) $db = mysql_connect($host, $user, $password); if (!$db) die( Verbindungsfehler:. mysql_error()); else return $db; public function opendb() $this->db = $this->connectdb( host, user, password ); return $this->db; // Methodenaufruf ohne Objekterzeugung // ist nur bei static-methoden möglich! $mydb = Test::connectDB();

28 Objektorientiert programmieren in PHP 5 // oder aus irgendeinem Objekt heraus $Test = new Test(); $yourdb = $Test->openDB(); Innerhalb statisch definierter Methoden können Sie nicht mit der Objektvariablen $this arbeiten. Wenn Sie statische Methoden überschreiben, dann müssen Sie die überschreibende Methode ebenfalls als static definieren Zugriffsmöglichkeiten einschränken Zugriff auf Objekte unterschiedlich restriktiv ermöglichen public, protected und private bei Attributen public, protected und private bei Methoden Wir haben schon einige Male auf die Möglichkeit hingewiesen, Objekte unterschiedlich gegenüber dem Zugriff von außen zu schützen. Mit den Sprachelementen public, protected und private können Sie den Zugriff auf Attribute und Methoden für die eigene Klasse, abgeleitete Klassen oder fremde Klassen unterschiedlich restriktiv handhaben. Egal um welches der drei Schlüsselwörter es sich handelt public, protected oder private alle Schlüsselwörter werden im PHP-Code in folgender Weise verwendet: Bei Attributen steht das Schlüsselwort direkt vor dem Attribut. Dabei wird das Sprachelement var weggelassen. class Beispiel [Schlüsselwort] [$Attributname]; Entsprechend wir das Schlüsselwort bei Methoden direkt vor dem Sprachelement function angegeben. class Beispiel [Schluesselwort] function [Methodennamen]() //... Wenn Sie wie bisher Attribute mit var und Methoden nur mit function definieren, dann werden diese automatisch als public interpretiert. An folgendem Beispiel können Sie sich einen ersten Überblick zur Funktionsweise der Zugriffsbeschränkungen erarbeiten. Danach gehen wir auf die einzelnen Möglichkeiten detailliert ein.

29 12.3 Zugriffsmöglichkeiten einschränken 209 class Mutter public $public_var = Ich bin public ; protected $protected_var = Ich bin protected ; private $private_var = Ich bin private ; Listing Beispiel zu public, private und protected public function getpublic() echo $this->public_var. <br /> ; echo $this->protected_var. <br /> ; echo $this->private_var. <br /> ; echo <br /> ; protected function getprotected() echo $this->public_var. <br /> ; echo $this->protected_var. <br /> ; echo $this->private_var. <br /> ; echo <br /> ; private function getprivate() echo $this->public_var. <br /> ; echo $this->protected_var. <br /> ; echo $this->private_var. <br /> ; echo <br /> ; class Kind extends Mutter public function test() echo $this->public_var. <br /> ; // funktioniert echo $this->protected_var. <br /> ; // funktioniert echo $this->private_var. <br /> ; // Fehler $this->getpublic(); $this->getprotected(); $this->getprivate(); // funktioniert // funktioniert // Fehler $Test = new Kind(); echo $Test->public_var. <br /> ; // funktioniert

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Dossier: Rechnungen und Lieferscheine in Word

Dossier: Rechnungen und Lieferscheine in Word www.sekretaerinnen-service.de Dossier: Rechnungen und Lieferscheine in Word Es muss nicht immer Excel sein Wenn Sie eine Vorlage für eine Rechnung oder einen Lieferschein erstellen möchten, brauchen Sie

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Durchführung der Datenübernahme nach Reisekosten 2011

Durchführung der Datenübernahme nach Reisekosten 2011 Durchführung der Datenübernahme nach Reisekosten 2011 1. Starten Sie QuickSteuer Deluxe 2010. Rufen Sie anschließend über den Menüpunkt /Extras/Reisekosten Rechner den QuickSteuer Deluxe 2010 Reisekosten-Rechner,

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Archiv - Berechtigungen

Archiv - Berechtigungen Archiv - Berechtigungen - 1 Inhaltsverzeichnis 1. Grunddefinitionen...3 1.1. Mögliche Definitionen...3 1.1.1. Programme...3 1.1.2. Prinzipale...3 1.1.3 Archivzugriff...3 1.2. Leserichtung...3 1.2.1. Ordnerbezogen...3

Mehr

Anwendungsbeispiele Buchhaltung

Anwendungsbeispiele Buchhaltung Kostenstellen in Webling Webling ist ein Produkt der Firma: Inhaltsverzeichnis 1 Kostenstellen 1.1 Was sind Kostenstellen? 1.2 Kostenstellen in der 2 Kostenstellen in Webling 2.1 Kostenstellen erstellen

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

Sie wollen Was heißt das? Grundvoraussetzung ist ein Bild oder mehrere Bilder vom Wechseldatenträger

Sie wollen Was heißt das? Grundvoraussetzung ist ein Bild oder mehrere Bilder vom Wechseldatenträger Den Speicherplatz wechseln oder eine Sicherungskopie erstellen. Es lässt sich nicht verhindern. Manche Sachen liegen am falschen Platz, können gelöscht werden oder man will vor der Bearbeitung eine Sicherungskopie

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das

Mehr

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

SANDBOXIE konfigurieren

SANDBOXIE konfigurieren SANDBOXIE konfigurieren für Webbrowser und E-Mail-Programme Dies ist eine kurze Anleitung für die grundlegenden folgender Programme: Webbrowser: Internet Explorer, Mozilla Firefox und Opera E-Mail-Programme:

Mehr

Bauteilattribute als Sachdaten anzeigen

Bauteilattribute als Sachdaten anzeigen Mit den speedikon Attributfiltern können Sie die speedikon Attribute eines Bauteils als MicroStation Sachdaten an die Elemente anhängen Inhalte Was ist ein speedikon Attribut?... 3 Eigene Attribute vergeben...

Mehr

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

Mehr

Kostenstellen verwalten. Tipps & Tricks

Kostenstellen verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Kostenstellen erstellen 3 13 1.3 Zugriffsberechtigungen überprüfen 30 2 1.1 Kostenstellen erstellen Mein Profil 3 1.1 Kostenstellen erstellen Kostenstelle(n) verwalten 4

Mehr

Erstellen einer PostScript-Datei unter Windows XP

Erstellen einer PostScript-Datei unter Windows XP Erstellen einer PostScript-Datei unter Windows XP Sie möchten uns Ihre Druckvorlage als PostScript-Datei einreichen. Um Fehler in der Herstellung von vorneherein auszuschließen, möchten wir Sie bitten,

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Adminer: Installationsanleitung

Adminer: Installationsanleitung Adminer: Installationsanleitung phpmyadmin ist bei uns mit dem Kundenmenüpasswort geschützt. Wer einer dritten Person Zugriff auf die Datenbankverwaltung, aber nicht auf das Kundenmenü geben möchte, kann

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Excel-Schnittstelle Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Voraussetzung: Microsoft Office Excel ab Version 2000 Zum verwendeten Beispiel:

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken. In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht

Mehr

Anleitung zum Login. über die Mediteam- Homepage und zur Pflege von Praxisnachrichten

Anleitung zum Login. über die Mediteam- Homepage und zur Pflege von Praxisnachrichten Anleitung zum Login über die Mediteam- Homepage und zur Pflege von Praxisnachrichten Stand: 18.Dezember 2013 1. Was ist der Mediteam-Login? Alle Mediteam-Mitglieder können kostenfrei einen Login beantragen.

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2 Universität Osnabrück 1 3 - Objektorientierte Programmierung in Java Zur Erinnerung: Aufteilung der Schichten GUI Vorlesung 17: 3-Schichten-Architektur 2 Fachkonzept Fachkonzept - Datenhaltung Datenhaltung

Mehr

Log xmllog textlog Log() start(filename) add(message) end() instance() Abbildung 7-10: Die Protokollierungs-API mit einer einfachen Fassade

Log xmllog textlog Log() start(filename) add(message) end() instance() Abbildung 7-10: Die Protokollierungs-API mit einer einfachen Fassade HACK #76 Hack APIs mit dem Façade-Muster vereinfachen Durch die Verwendung des Façade-Entwurfsmusters können Sie die anderen Programmierern zugängliche API vereinfachen. #76 Dies ist ein Muster, von dem

Mehr

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

Anwendungsbeispiele Buchhaltung

Anwendungsbeispiele Buchhaltung Rechnungen erstellen mit Webling Webling ist ein Produkt der Firma: Inhaltsverzeichnis 1 Rechnungen erstellen mit Webling 1.1 Rechnung erstellen und ausdrucken 1.2 Rechnung mit Einzahlungsschein erstellen

Mehr

Schritt 1 - Registrierung und Anmeldung

Schritt 1 - Registrierung und Anmeldung Schritt 1 - Registrierung und Anmeldung Anmeldung: Ihre Zugangsdaten haben Sie per EMail erhalten, bitte melden Sie sich mit diesen auf www.inthega-datenbank.de an. Bitte merken Sie sich die Zugangsdaten

Mehr

Kapitel 3 Frames Seite 1

Kapitel 3 Frames Seite 1 Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern

Mehr

ICS-Addin. Benutzerhandbuch. Version: 1.0

ICS-Addin. Benutzerhandbuch. Version: 1.0 ICS-Addin Benutzerhandbuch Version: 1.0 SecureGUARD GmbH, 2011 Inhalt: 1. Was ist ICS?... 3 2. ICS-Addin im Dashboard... 3 3. ICS einrichten... 4 4. ICS deaktivieren... 5 5. Adapter-Details am Server speichern...

Mehr

Zugriff auf Daten der Wago 750-841 über eine Webseite

Zugriff auf Daten der Wago 750-841 über eine Webseite Zugriff auf Daten der Wago 750-841 über eine Webseite Inhaltsverzeichnis Einleitung... 3 Auslesen von Variablen... 4 Programm auf der SPS... 4 XML-Datei auf der SPS... 4 PHP-Script zum Auslesen der XML-Datei...

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Summenbildung in Bauteiltabellen mit If Then Abfrage

Summenbildung in Bauteiltabellen mit If Then Abfrage Summenbildung in Bauteiltabellen mit If Then Abfrage Die in Bauteiltabellen ausgelesenen Werte lassen sich in jeder Spalte als Summe berechnen. So können selbstverständlich die Flächen der in der Tabelle

Mehr

1. Zuerst muss der Artikel angelegt werden, damit später die Produktvarianten hinzugefügt werden können.

1. Zuerst muss der Artikel angelegt werden, damit später die Produktvarianten hinzugefügt werden können. Produktvarianten und Downloads erstellen Produktvarianten eignen sich um Artikel mit verschiedenen Optionen wie bspw. ein Herrenhemd in den Farben blau, grün und rot sowie in den Größen S, M und L zu verkaufen.

Mehr

Einkaufslisten verwalten. Tipps & Tricks

Einkaufslisten verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Grundlegende Informationen 3 1.2 Einkaufslisten erstellen 4 1.3 Artikel zu einer bestehenden Einkaufsliste hinzufügen 9 1.4 Mit einer Einkaufslisten einkaufen 12 1.4.1 Alle

Mehr

Netzwerkeinstellungen unter Mac OS X

Netzwerkeinstellungen unter Mac OS X Netzwerkeinstellungen unter Mac OS X Dieses Dokument bezieht sich auf das D-Link Dokument Apple Kompatibilität und Problemlösungen und erklärt, wie Sie schnell und einfach ein Netzwerkprofil unter Mac

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Serienbrief aus Outlook heraus Schritt 1 Zuerst sollten Sie die Kontakte einblenden, damit Ihnen der Seriendruck zur Verfügung steht. Schritt 2 Danach wählen Sie bitte Gerhard Grünholz 1 Schritt 3 Es öffnet

Mehr

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Inhaltsverzeichnis 1. Anmeldung... 2 1.1 Startbildschirm... 3 2. Die PDF-Dateien hochladen... 4 2.1 Neue PDF-Datei erstellen... 5 3. Obelix-Datei

Mehr

SEMINAR Modifikation für die Nutzung des Community Builders

SEMINAR Modifikation für die Nutzung des Community Builders 20.04.2010 SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung ecktion SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung Bevor Sie loslegen

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Benutzeranleitung Superadmin Tool

Benutzeranleitung Superadmin Tool Benutzeranleitung Inhalt 1 Einleitung & Voraussetzungen... 2 2 Aufruf des... 3 3 Konto für neuen Benutzer erstellen... 3 4 Services einem Konto hinzufügen... 5 5 Benutzer über neues Konto informieren...

Mehr

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich Mitgliederbereich (Version 1.0) Bitte loggen Sie sich in den Mitgliederbereich mit den Ihnen bekannten Zugangsdaten

Mehr

icloud nicht neu, aber doch irgendwie anders

icloud nicht neu, aber doch irgendwie anders Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und

Mehr

Einstieg in Exact Online Buchungen erfassen. Stand 05/2014

Einstieg in Exact Online Buchungen erfassen. Stand 05/2014 Einstieg in Exact Online Buchungen erfassen Stand 05/2014 Einstieg und Grundprinzip... 2 Buchungen erfassen... 3 Neue Buchung eingeben... 4 Sonstige Buchungen erfassen... 8 Bestehende Buchungen bearbeiten

Mehr

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Um mit IOS2000/DIALOG arbeiten zu können, benötigen Sie einen Webbrowser. Zurzeit unterstützen wir ausschließlich

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Beiträge erstellen in Joomla Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Abbildung 1 - Kontrollzentrum Von hier aus kann man zu verschiedene Einstellungen

Mehr

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

5. Übung: PHP-Grundlagen

5. Übung: PHP-Grundlagen 5.1. Erstes PHP-Programm 1. Schreiben Sie PHP-Programm innerhalb einer Webseite, d.h. innerhalb eines HTML-Dokument. Ihr PHP-Programm soll einen kurzen Text ausgeben und Komentare enthalten. Speichern

Mehr

Inhalt. meliarts. 1. Allgemeine Informationen... 2 2. Administration... 2 2.1 Aufruf... 2 2.2 Das Kontextmenü... 3 3. E-Mail Vorlagen...

Inhalt. meliarts. 1. Allgemeine Informationen... 2 2. Administration... 2 2.1 Aufruf... 2 2.2 Das Kontextmenü... 3 3. E-Mail Vorlagen... Inhalt 1. Allgemeine Informationen... 2 2. Administration... 2 2.1 Aufruf... 2 2.2 Das Kontextmenü... 3 3. E-Mail Vorlagen... 4 Seite 1 von 7 meliarts 1. Allgemeine Informationen meliarts ist eine Implementierung

Mehr

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003 Nicht kopieren Der neue Report von: Stefan Ploberger 1. Ausgabe 2003 Herausgeber: Verlag Ploberger & Partner 2003 by: Stefan Ploberger Verlag Ploberger & Partner, Postfach 11 46, D-82065 Baierbrunn Tel.

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Updateanleitung für SFirm 3.1

Updateanleitung für SFirm 3.1 Updateanleitung für SFirm 3.1 Vorab einige Informationen über das bevorstehende Update Bei der neuen Version 3.1 von SFirm handelt es sich um eine eigenständige Installation, beide Versionen sind komplett

Mehr

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. In diesem Artikel werden wir Ihnen zeigen, wie Sie eine Datenbank verschlüsseln können, um den Zugriff einzuschränken, aber trotzdem noch eine

Mehr

Stapelverarbeitung Teil 1

Stapelverarbeitung Teil 1 Stapelverarbeitung Teil 1 In jedem Unternehmen gibt es von Zeit zu Zeit Änderungen in Normen und Firmenstandards, an die aktuelle und bereits bestehende Zeichnungen angepasst werden müssen. Auch Fehler

Mehr

FlowFact Alle Versionen

FlowFact Alle Versionen Training FlowFact Alle Versionen Stand: 29.09.2005 Rechnung schreiben Einführung Wie Sie inzwischen wissen, können die unterschiedlichsten Daten über verknüpfte Fenster miteinander verbunden werden. Für

Mehr

Variablen & erweiterte Aktionen nutzen

Variablen & erweiterte Aktionen nutzen 341 In Captivate können Sie mit Hilfe von Variablen Texte & Werte speichern oder Systeminformationen ausgeben. Außerdem können Sie auf Basis von Variablen komplexere Aktionen entwickeln, wie z. B. eine

Mehr

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

PHP Aufbaukurs. Tag 3. PHP5 & Klassen PHP Aufbaukurs Tag 3. PHP5 & Klassen Organisatorisches 2 Igor Olkhovskiy Dr. Dipl.- Ing. Kontakt: olkhovskiy@rrzn.uni-hannover.de PHP Aufbaukurs 19.09.2006 Folie 2 PHP. OOP. Geschichte 3 PHP/FI ( PHP 1

Mehr

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift. Briefe Schreiben - Arbeiten mit Word-Steuerformaten Ab der Version 5.1 stellt die BüroWARE über die Word-Steuerformate eine einfache Methode dar, Briefe sowie Serienbriefe mit Hilfe der Korrespondenzverwaltung

Mehr

Danke, dass sie sich für die Infoliste der Moodleveranstaltung eingetragen haben.

Danke, dass sie sich für die Infoliste der Moodleveranstaltung eingetragen haben. 1 Liebe Kolleginnen und Kollegen am WGG, Danke, dass sie sich für die Infoliste der Moodleveranstaltung eingetragen haben. In diesem Infoschreiben erhalten sie die Anleitung um sich selbstständig bei der

Mehr

FIS: Projektdaten auf den Internetseiten ausgeben

FIS: Projektdaten auf den Internetseiten ausgeben Rechenzentrum FIS: Projektdaten auf den Internetseiten ausgeben Ist ein Forschungsprojekt im Forschungsinformationssystem (FIS) erfasst und für die Veröffentlichung freigegeben, können Sie einige Daten

Mehr

Was man mit dem Computer alles machen kann

Was man mit dem Computer alles machen kann Was man mit dem Computer alles machen kann Wie komme ich ins Internet? Wenn Sie einen Computer zu Hause haben. Wenn Sie das Internet benutzen möchten, dann brauchen Sie ein eigenes Programm dafür. Dieses

Mehr

Diese Anleitung wurde erstellt von Niclas Lüchau und Daniel Scherer. Erste Anmeldung. Schritt 1: Anmeldung..2. Schritt 2: Passwort setzen 3

Diese Anleitung wurde erstellt von Niclas Lüchau und Daniel Scherer. Erste Anmeldung. Schritt 1: Anmeldung..2. Schritt 2: Passwort setzen 3 Diese Anleitung wurde erstellt von Niclas Lüchau und Daniel Scherer Inhalt Erste Anmeldung. Schritt 1: Anmeldung..2 Schritt 2: Passwort setzen 3 Schritt 3: Nachträgliches Ändern des Passworts..4 Schreiben

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Erstellung eigener Hot-Spot-Karten

Erstellung eigener Hot-Spot-Karten mit der Lernwerkstatt 7 Lieber Lernwerkstatt-User! Die Hot-Spot-Umgebung der Lernwerkstatt 7 bietet den Lehrern zukünftig viele weitere Möglichkeiten, den Computer als Medium in den eigenen Lehrplan zu

Mehr

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten Was sind Berechtigungen? Unter Berechtigungen werden ganz allgemein die Zugriffsrechte auf Dateien und Verzeichnisse (Ordner) verstanden.

Mehr

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze Ihre Interessentendatensätze bei inobroker Wenn Sie oder Ihre Kunden die Prozesse von inobroker nutzen, werden Interessentendatensätze erzeugt. Diese können Sie direkt über inobroker bearbeiten oder mit

Mehr