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 © 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