Vorteil von Klassen in PHP?!

xtramen01

Erfahrenes Mitglied
Hallo Leute,

ich möchte was dazu lernen und mich nun mit Klassen auseinandersetzen.
Habe schon viel dazu gelesen. Leider ist mir das alles ein wenig zuuu trocken erläutert.

Mir fehlen irgendwie die Beispiele, welche auch für einen Anfänger dieser Thematik geeignet sind.

Vielleicht findet einer von euch die Zeit mir, anhand eines einfachen Beispiels, zu erläutern wo genau der Vorteil von Klassen liegt.

Am besten wäre ein wenig beliebiger Codeschnipsel mit einem Lösungsweg OHNE Klasse und dann derselbe Weg MIT einer Klasse.

Das wäre echt sehr nett von euch. Vielleicht geht dann der Knoten bei mir auf :-)

Danke und Gruss
 
Hi xtramen01,

deine Frage ist eine gute Frage ;) Die kann man sicherlich nicht nur mit einem Post erklären :)

Aber ich habe dir mal ein paar Threads zusammen-gegoogelt, welche deine Frage versuchen zu beantworten. Auch wenn die folgenden Links eher C++-Lastig sind, da gibts nicht allzu viele Unterschiede im Verständnis ;)

http://www.c-plusplus.de/forum/viewtopic-var-t-is-41462.html
http://www.issociate.de/board/post/430379/Vorteile_OOP.html

Zusammenfassend kann ich dir da noch ein paar Stichworte geben:

- Kapselung der Daten
- Jede Klasse weiss selbst, wie sie sich zu verhalten hat (Andere wissen, was sie macht, aber nicht wie)
- Wiederverwendbarkeit
- Bessere Lesbarkeit
- Wartbarkeit (Programm muss nur an einer Stelle geändert werden)
- Vererbung, Spezialisierung

Wenn du willst, kann ich dir morgen noch ein paar Dokumente aus der Schule rüberschicken, mit denen hab ich das ganze relativ schnell erlernen können.

Gruß
BK
 
Auf das Klassen Beispiel auf das ich früher immer gestoßen bin, als ich mich damit angefangen habe zu befassen, ist das Auto Beispiel. Dadurch konnt ich mir es ganz gut herleiten und erklären. Kennst du das Beispiel? Wenn nicht sag mir bescheid, dann such ich es dir raus, oder erkläre es dir eben.
 
Hi ihr beiden,

danke für die Antworten.
SO langsam aber sicher kapier ich zumindest welchen Sinn und Zweck Klassen erfüllen sollen.
Auch wenn noch das technische Verständnis fehlt, aber das kommt sicher wenn ich mich mehr damit befasse und ein paar gute Themen dazu lese.

@Bratkartoffel,

gute Idee mit den Dokumenten, freu mich schon drauf :-)

@Interritor,

Das Beispiel kenn ich leider nicht, denke aber da werd ich mal nach googeln :-)

Danke und Gruss
 
Ich finde der beste Weg das zu Begreifen ist es einfach mal versuchen umsetzen und nach einer gewissen Weile bekommst Du den Dreh gut raus.
Um mal bei einen Auto zu bleiben dem Beispiel das hier angesprochen wurde.Eine Klasse wird benutzt um ein Objekt zu kreieren in dem wir eine Instanz der Klasse bilden.
Versetzen wir uns in die wilde Welt der Phantasie und stellen uns vor wir hätten ein Autohaus wo wir mehere Autos verkaufen wollen. Ein Objekt (in dem Falle nun ein Auto) hat immer gewisse Eigenschaften wie ein Baujahr, einen Hersteller und ein Tankvolumen.

Aber nicht jedes Auto hat das gleiche Baujahr oder das gleiche Tankvolumen da gibt es Unterschiede, also können wir sagen das wir mehere Objekte brauchen um mehere Autos darstellen zu können.

PHP:
<?php
class Auto {
    
    private $baujahr     = 0;
    private $hersteller  = "keiner";
    private $tankvolumen = 0;
    
    public function setBaujahr($bj){
        $this->baujahr = $bj;
    }
    
    public function setTankvolumen($vol){
        $this->tankvolumen = $vol;
    }
    
    public function setHersteller($hst){
        $this->hersteller = $hst;
    }
    
    public function getBaujahr(){
        return $this->baujahr;
    }
    
    public function getTankvolumen(){
        return $this->tankvolumen;
    }
    
    public function getHersteller(){
        return $this->hersteller;
    }
    
    public function toString(){
        return "Das Auto vom Hersteller ".$this->hersteller." <br />".
               "wurde im Jahre ".$this->baujahr." gebaut <br />".
               "und hat ein Tankvolumen von ".$this->tankvolumen." Litern.<br /><br />";            
    }
}

$auto1 = new Auto();
$auto1->setBaujahr(1978);
$auto1->setHersteller("Opel");
$auto1->setTankvolumen(75);

$auto2 = new Auto();
$auto2->setBaujahr(1998);
$auto2->setHersteller("Skoda");
$auto2->setTankvolumen(67);

echo $auto1->toString();
echo $auto2->toString();
?>

Somit wären nun 2 Auto Objekte erstellt worden , Auto 1 und Auto 2 wobei jedes andere Eingeschaften besitzt.

Das könnte man auch auf Menschen übertragen mit Körpergröße , Namen und Alter etc ;).
 
Zuletzt bearbeitet:
Vielleicht findet einer von euch die Zeit mir, anhand eines einfachen Beispiels, zu erläutern wo genau der Vorteil von Klassen liegt.
Vorteile von Klassen anhand eines Beispiels. Ein Merkwürdiges Konstrukt, bin gespannt auf weitere Antworten.

- Kapselung der Daten
- Jede Klasse weiss selbst, wie sie sich zu verhalten hat (Andere wissen, was sie macht, aber nicht wie)
- Wiederverwendbarkeit
- Bessere Lesbarkeit
- Wartbarkeit (Programm muss nur an einer Stelle geändert werden)
- Vererbung, Spezialisierung

Das sind die Vorteile. In nur einem Post ;)
Ich gehe das genauso an und zeige mal die Vorteile von OOP allgemein:

70% der Kosten eines Programms gehen auf die Wartung zurück. Denk einmal daran, was wäre wenn du nicht mal Funktionen schreiben könntest und dein Programm entwickelt auf einmal einen Fehler. Es müsste sehr viel gändert werden (um nur ein Beispiel zu nennen).
Daraus ergeben sich ganz einfache Anforderungen an Software, die dank OOP gelöst sind (teilweise schon von Bratkartoffel genannt):
  • Wartbarkeit -> Schnittstellen-Definition, Interface
  • Fehlerbehandlung -> getrennte Ausnahmebehandlung
  • Austauschbarkeit -> Schnitstelle ist nicht die Implementierung
  • Wiederverwendbarkeit -> Code für Klassen von Objekten
  • Erweiterbarkeit -> Vererbung
  • Anpassbar an Kundenwünsche -> Redefinition von Methoden

Einige Begriffe werden dir noch nichts sagen, aber je mehr du mit OOP Arbeitest umso öfter wirst du erfahren und merken was gemeint ist. Viel Spaß mit OOP.
 
Ich werfe dann auch gleich mal eine Frage mit in die Mitte, die ich mir bisher noch nicht beantworten konnte, obwohl ich schon seit gut einem Jahr objektorientiert programmiere: welchen Sinn haben abstrakte Klassen?
 
Hauptvorteil ohne abstrakte Methoden:
  • Default-Verhalten (spart arbeit, anpassbar durch überschreiben von Methoden)
  • Wiederverwendung in mehreren konkreten oder abstrakten Unterklassen
  • weniger Code für konkrete Unterklassen

Hierzu sogar ein Beispiel (Pseudocode):
Code:
Abstrakt PKW
{
  Variable verbrauch;

  Funktion kosten100km()
  {
    Liefere verbrauch * literpreis();
  }
}

Klasse DieselPKW erweitert PKW
{
  Variable dieselpreis = 1.00;

  Funktion literpreis()
  {
    Liefere dieselpreis;
  }
}

Klasse BenzinPKW erweitert PKW
{
  Variable benzinpreis = 1.50;

  Funktion literpreis()
  {
    Liefere benzinpreis;
  }
}

Das Beispiel kann man gut mit den genannten Vorteilen vergleichen, da alle vorhanden sind.
Nicht zu sehr an PHP denken bei dem Pseudocode, da der Gültigkeitsbereich im Beispiel an JAVA angelehnt ist. Wahrscheinlich hast du deswegen noch keine Vorteile in PHP erkannt, aber sie sind auch da.
 
Zuletzt bearbeitet:
Zurück