Programm 1 (objektorientiert)

4.2.1.2 PHP-Programm und Vergleich mit anderen Programmiersprachen

Auf den nächsten Seiten folgt ein Vergleich von mehreren Programmiersprachen - das obige Klassendiagramm wird zur Veranschaulichung identisch in PHP und in 2 weitere Programmiersprachen (Java und C#) übersetzt.


Datei p01.php
<!doctype html> <!-- Programm "p01.php" --> <html> <head> <meta charset="iso-8859-1" /> <meta name="author" content="Beringer Alfred" /> <meta name="description" content="Programmieren mit PHP 5" /> <title>Programm 1 (objektorientiert)</title> </head> <body> <pre>
<?php // relativer Pfad zum privaten Projektverzeichnis const PFAD = "../../"; require_once PFAD . "ooSkripte/daoKlassen/LesenSchueler0.class.php"; require_once PFAD . "ooSkripte/daoKlassen/AusgebenP01.class.php"; // Der Einfachheit halber wird der Dateiname mit dem Pfad fix vorgegeben: $EINGABEDATEI = PFAD . "Dateien/vormerk.dat"; // ***************************************************************************** $edaten = new LesenSchueler0(); $ausgabe = new AusgebenP01(); $edaten->oeffnen($EINGABEDATEI); $edaten->lesen(); while (!$edaten->getEof()) { $ausgabe->setSchueler($edaten->getSchueler()); $ausgabe->schreibenZeile(); $edaten->lesen(); } $edaten->schliessen(); // ***************************************************************************** ?>
</pre> <p> </p><hr /><p> </p> <footer> <address id="ende"> Copyright &#169; 2009<br /> Letzte Aktualisierung: 2013-10-30<br /> Beringer Alfred<br /> Wögerer Wolfgang </address> </footer> </body> </html>


Datei Schueler0.class.php
<?php class Schueler0 { private $schuelerdaten; public function getSchuelerdaten() { return $this->schuelerdaten; } public function setSchuelerdaten($schuelerdaten) { $this->schuelerdaten = $schuelerdaten; } public function __toString() { return "Schülerdaten = " . $this->schuelerdaten; } } ?>


Datei LesenSchueler0.class.php
<?php require_once PFAD . "ooSkripte/modelKlassen/Schueler0.class.php"; class LesenSchueler0 { // Länge eines Datensatzes const SATZLAENGE = 80; // Datenobjekt für die zu lesenden Daten private $schueler; // Verbindungsobjekt zur Datei private $datei; private $eof = FALSE; public function getSchueler() { return $this->schueler; } public function getEof() { return $this->eof; } public function oeffnen($dateiname) { $this->datei = fopen($dateiname, "rb") or die("<p>Die Datei <b>$dateiname</b> existiert nicht.</p>"); } public function lesen() { // Objekt für Datensatz instanzieren: $this->schueler = new Schueler0(); // Datensatz lesen (Zeichenkette mit fixer Länge): $datensatz = fread($this->datei, self::SATZLAENGE); if (feof($this->datei)) { $this->eof = TRUE; return; } $this->schueler->setSchuelerdaten($datensatz); } public function schliessen() { fclose($this->datei); } } ?>


Datei AusgebenP01.class.php
<?php require_once PFAD . "ooSkripte/modelKlassen/Schueler0.class.php"; class AusgebenP01 { // Datenobjekt für die auszugebenden Daten private $schueler; public function setSchueler(Schueler0 $schueler) { $this->schueler = $schueler; } public function schreibenZeile() { printf("%s<br />", $this->schueler->getSchuelerdaten()); } } ?>


JAVA

Datei Programm1.java
package at.beringer.phpBuch; public class Programm1 { // Der Einfachheit halber wird der Dateiname fix vorgegeben: private static final String EINGABEDATEI = "vormerk.dat"; public static void main(String[ ] args) { P01 prog = new P01(); prog.start(EINGABEDATEI); } }


Datei P01.java
package at.beringer.phpBuch; import at.beringer.phpBuch.daoKlassen.*; public class P01 { public void start(String datei) { LesenSchueler0 edaten = new LesenSchueler0(); AusgebenP01 ausgabe = new AusgebenP01(); boolean ok; ok = edaten.oeffnen(datei); if (!ok) return; ok = edaten.lesen(); while (!edaten.getEof()) { if (ok) { ausgabe.setSchueler(edaten.getSchueler()); ausgabe.schreibenZeile(); } else { System.out.println("Falsche Daten!"); } ok = edaten.lesen(); } edaten.schliessen(); } }


Datei Schueler0.java
package at.beringer.phpBuch.modelKlassen; public class Schueler0 { private String schuelerdaten; public String getSchuelerdaten() { return schuelerdaten; } public void setSchuelerdaten(String schuelerdaten) { this.schuelerdaten = schuelerdaten; } @Override public String toString() { return "Schülerdaten = " + schuelerdaten; } }


Datei LesenSchueler0.java
package at.beringer.phpBuch.daoKlassen; import at.beringer.phpBuch.modelKlassen.*; import java.io.*; public class LesenSchueler0 { private static final int SATZLAENGE = 80; private Schueler0 schueler; private FileInputStream edatei; private DataInputStream esatz; private boolean eof = false; public Schueler0 getSchueler() { return schueler; } public boolean getEof() { return eof; } public boolean oeffnen(String dateiname) { boolean ok = true; try { edatei = new FileInputStream(dateiname); esatz = new DataInputStream(edatei); } catch (IOException exc) { System.out.println("Fehler! Datei kann nicht geöffnet werden. " + exc.getMessage()); ok = false; } return ok; } public boolean lesen() { boolean ok = true; byte[] bytesFix = new byte[SATZLAENGE]; String datensatz; int anzGelesen; try { // Objekt für Datensatz instanzieren: schueler = new Schueler0(); // Datensatz lesen (Zeichenkette mit fixer Länge): anzGelesen = esatz.read(bytesFix); if (anzGelesen < 0) { throw new EOFException(); } datensatz = new String(bytesFix); schueler.setSchuelerdaten(datensatz); } catch (EOFException exc) { System.out.println("EOF"); // diese Ausgabe dient nur zum Testen eof = true; } catch (IOException exc) { System.out.println("Fehler! Datensatz konnte nicht gelesen werden. " + exc.getMessage()); schueler = null; // kein Datensatz bei einem Fehler ok = false; } return ok; } public boolean schliessen() { boolean ok = true; try { esatz.close(); } catch (IOException exc) { System.out.println("Fehler! Datei konnte nicht geschlossen werden. " + exc.getMessage()); ok = false; } return ok; } }


Datei AusgebenP01.java
package at.beringer.phpBuch.daoKlassen; import at.beringer.phpBuch.modelKlassen.*; public class AusgebenP01 { private Schueler0 schueler; public void setSchueler(Schueler0 schueler) { this.schueler = schueler; } public void schreibenZeile() { System.out.printf("%s%n", schueler.getSchuelerdaten()); } }


C#

Datei Programm1.cs
using System; namespace Beringer.phpBuch.Programm1 { public class Programm1 { // Der Einfachheit halber wird der Dateiname fix vorgegeben private static readonly String EINGABEDATEI = "schueler.dat"; public static void Main(String[] args) { P01 prog = new P01(); prog.Start(EINGABEDATEI); } } }


Datei P01.cs
using System; using Beringer.phpBuch.DaoKlassen; namespace Beringer.phpBuch.Programm1 { public class P01 { public void Start(String datei) { LesenSchueler0 edaten = new LesenSchueler0(); AusgebenP01 ausgabe = new AusgebenP01(); bool ok; ok = edaten.Oeffnen(datei); if (!ok) return; ok = edaten.Lesen(); while (!edaten.Eof) { if (ok) { ausgabe.SchuelerProp = edaten.SchuelerProp; ausgabe.SchreibenZeile(); } else { Console.WriteLine("Falsche Daten!"); } ok = edaten.Lesen(); } edaten.Schliessen(); } } }


Datei Schueler0.cs
using System; namespace Beringer.phpBuch.ModelKlassen { public class Schueler0 { private String schuelerdaten; public String Schuelerdaten { get { return schuelerdaten; } set { schuelerdaten = value; } } override public String ToString() { return "Schülerdaten = " + schuelerdaten; } } }


Datei LesenSchueler0.cs
using System; using System.IO; using Beringer.phpBuch.ModelKlassen; namespace Beringer.phpBuch.DaoKlassen { public class LesenSchueler0 { private static readonly int SATZLAENGE = 80; private Schueler0 schueler; private FileStream edatei; private BinaryReader esatz; private bool eof = false; public Schueler0 SchuelerProp { get { return schueler; } } public bool Eof { get { return eof; } } public bool Oeffnen(String dateiname) { bool ok = true; try { edatei = new FileStream(dateiname, FileMode.Open); esatz = new BinaryReader(edatei); } catch (IOException exc) { Console.WriteLine("Fehler! Datei kann nicht geöffnet werden." + exc.Message); ok = false; } return ok; } public bool Lesen() { bool ok = true; byte[] bytes; char[] chars; String datensatz; try { // Objekt für Datensatz instanzieren: schueler = new Schueler0(); // Datensatz lesen (Zeichenkette mit fixer Länge): bytes = esatz.ReadBytes(SATZLAENGE); if (bytes.Length <= 0) { throw new EndOfStreamException(); } chars = new char[bytes.Length]; Array.Copy(bytes, chars, bytes.Length); datensatz = new String(chars); schueler.Schuelerdaten = datensatz; } catch (EndOfStreamException exc) { Console.WriteLine("EOF"); // diese Ausgabe dient nur zum Testen eof = true; } catch (IOException exc) { Console.WriteLine("Fehler! Datensatz kann nicht gelesen werden." + exc.Message); schueler = null; // kein Datensatz bei einem Fehler ok = false; } return ok; } public void Schliessen() { esatz.Close(); } } }


Datei AusgebenP01.cs
using System; using Beringer.phpBuch.ModelKlassen; namespace Beringer.phpBuch.DaoKlassen { public class AusgebenP01 { private Schueler0 schueler; public Schueler0 SchuelerProp { set { schueler = value; } } public void SchreibenZeile() { Console.Write("{0}\n", schueler.Schuelerdaten); } } }



Weiter zu
Kapitel 4.2.2.2 - Programm 2 (objektorientiert)
Kapitel 4.2.3.2 - Programm 3 (objektorientiert)
Kapitel 8.7.1 - Demo-Programm (Werte- und Referenztypen)
Kapitel 9.1.4 - Demo-Programm (Parameterübergabe)
Kapitel 14.2 - Beispiel mit Datenerfassung (Dateien, objektorientiert)
Kapitel 15.1.1 - SQL-Skript
Kapitel 15.2 - Einführende Beispiele (Datenbanken, prozedural)
Kapitel 15.3 - Beispiel mit Datenerfassung (Datenbanken, objektorientiert)
Kapitel 16.1.2 - Projektpfad - Include-Datei "projektpfad.inc.php"
Zurück
zum Anfang dieses Kapitels
zu Kapitel 3.2.1.2 - Programm 1 (prozedural)
zu Kapitel 3.2.2.2 - Programm 2 (prozedural)
zu Kapitel 3.2.3.2 - Programm 3 (prozedural)
zum Inhaltsverzeichnis