Anfängerfrage zu Objektorientierung
Hallo,
ich schreibe gerade mein erstes objektorientiertes Programm.
Nun habe ich eine, wahrscheinlich vollkommen banale, Frage.
Beispiel:
Ich möchte mehrere Autoobjekte erzeugen, ein paar Opel, einige Audi und mehrere Mercedes.
Die Autos unterscheiden sich nur durch ihre Attribute.
Sollte ich nun eine Klasse "Auto" erzeugen und Klassen "Opel", "Audi" und "Mercedes" davon erben lassen?
Oder ist "Auto" die einzige Klasse und man übergibt lediglich einen Typ, der mit Switch Case die benötigten Werte setzt?
Ich würde zu ersterem tendieren, ein anderer meinte, dass die zweite Methode die richtige sei.
Mfg, Florian
ich schreibe gerade mein erstes objektorientiertes Programm.
Nun habe ich eine, wahrscheinlich vollkommen banale, Frage.
Beispiel:
Ich möchte mehrere Autoobjekte erzeugen, ein paar Opel, einige Audi und mehrere Mercedes.
Die Autos unterscheiden sich nur durch ihre Attribute.
Sollte ich nun eine Klasse "Auto" erzeugen und Klassen "Opel", "Audi" und "Mercedes" davon erben lassen?
Oder ist "Auto" die einzige Klasse und man übergibt lediglich einen Typ, der mit Switch Case die benötigten Werte setzt?
Ich würde zu ersterem tendieren, ein anderer meinte, dass die zweite Methode die richtige sei.
Mfg, Florian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 184865
Url: https://administrator.de/forum/anfaengerfrage-zu-objektorientierung-184865.html
Ausgedruckt am: 23.12.2024 um 14:12 Uhr
3 Kommentare
Neuester Kommentar
Hoi Letavino,
eigentlich brauchst du nur die Klasse Auto mit nem Attribut Marke/Hersteller. Unterklassen sind ja in der regel ja nur weiterführungen zu deiner Oberklasse.
Beispiel:
Fahrzeug (Oberklasse)
Auto (unterklasse)
Zweirad(unterklasse)
Fahrrad (unterklasse von Zweirad)
Motorrad (unterklasse von Zweirad)
etc.
Oder unterscheiden sich die Marken in ihren Attributen wesentlich?
Gruß
Schlumpf
eigentlich brauchst du nur die Klasse Auto mit nem Attribut Marke/Hersteller. Unterklassen sind ja in der regel ja nur weiterführungen zu deiner Oberklasse.
Beispiel:
Fahrzeug (Oberklasse)
Auto (unterklasse)
Zweirad(unterklasse)
Fahrrad (unterklasse von Zweirad)
Motorrad (unterklasse von Zweirad)
etc.
Oder unterscheiden sich die Marken in ihren Attributen wesentlich?
Gruß
Schlumpf
Hi Letavino,
ob Opel, Mercedes oder VW, ein Auto bleibt ein Auto mit individuellen Eigenschaften, die einfach(er) mittels Formular/DB verwaltet werden können.
Daher brauchst du eigentlich nicht den Umweg über eine Klasse zu gehen, um versch. Autos zu verwalten.
Wenn du OOP lernen willst, würde ich den Vorschlag von ITSchlumpf aufgreifen.
Meine Idee wäre jetzt: Du erstellst eine Klasse, z.B. c_fahrzeug, mit Eigenschaften, die jedes Fahrzeug hat: Hersteller, Marke (oder Modell), Baujahr . . . etc..
Die individuellen Eigenschaften verschiedener Fahrzeuge legst du in eigenen Klassen ab, also Klassen für Autos, Fahrräder etc.. die dann die Eigenschaften
von c_fahrzeug erben, die allen gemeinsam sind.
Um die Eigenschaften mit Werten zu füllen, erstellst du in der Klasse c_fahrzeug eine (oder mehrere) Methode(n) ohne Parameter und Funktion.
Ohne Funktion heißt, keine Anweisung(en). Das Gleiche machst du, um Eigenschaften auszugeben. Diese Methode(n) sind dann in der erbenden Klasse verfügbar,
und können überschrieben werden. Das heißt, in jeder erbenden Klasse wird der gleiche Methodenname verwendet, Parameter und Funktion sind individuell zu setzen.
Beispiel:
Gruß
Günni
ob Opel, Mercedes oder VW, ein Auto bleibt ein Auto mit individuellen Eigenschaften, die einfach(er) mittels Formular/DB verwaltet werden können.
Daher brauchst du eigentlich nicht den Umweg über eine Klasse zu gehen, um versch. Autos zu verwalten.
Wenn du OOP lernen willst, würde ich den Vorschlag von ITSchlumpf aufgreifen.
Meine Idee wäre jetzt: Du erstellst eine Klasse, z.B. c_fahrzeug, mit Eigenschaften, die jedes Fahrzeug hat: Hersteller, Marke (oder Modell), Baujahr . . . etc..
Die individuellen Eigenschaften verschiedener Fahrzeuge legst du in eigenen Klassen ab, also Klassen für Autos, Fahrräder etc.. die dann die Eigenschaften
von c_fahrzeug erben, die allen gemeinsam sind.
Um die Eigenschaften mit Werten zu füllen, erstellst du in der Klasse c_fahrzeug eine (oder mehrere) Methode(n) ohne Parameter und Funktion.
Ohne Funktion heißt, keine Anweisung(en). Das Gleiche machst du, um Eigenschaften auszugeben. Diese Methode(n) sind dann in der erbenden Klasse verfügbar,
und können überschrieben werden. Das heißt, in jeder erbenden Klasse wird der gleiche Methodenname verwendet, Parameter und Funktion sind individuell zu setzen.
Beispiel:
<?php
class c_fahrzeug{
protected $hersteller;
protected $marke;
protected $typ;
protected $baujahr;
protected $neu;
public function setze_eigenschaft(){
}
public function zeige_eigenschaft(){
}
};
class c_auto extends c_fahrzeug{
protected $motor;
protected $klima;
protected $navi;
protected $hifi;
public function setze_eigenschaft($hersteller,$motor){
$this->hersteller=$hersteller;
$this->motor=$motor;
}
public function zeige_eigenschaft(){
echo '<p>Hersteller Auto: '.$this->hersteller.'<p>';
echo '<p>Motor: '.$this->motor.'<p>';
}
};
class c_fahrrad extends c_fahrzeug{
protected $rahmen;
protected $schaltung;
public function setze_eigenschaft($hersteller,$rahmen){
$this->hersteller=$hersteller;
$this->rahmen=$rahmen;
}
public function zeige_eigenschaft(){
echo '<p>Hersteller Fahrrad: '.$this->hersteller.'<p>';
echo '<p>Rahmen: '.$this->rahmen.'<p>';
}
};
//Ein Auto
$auto=new c_auto;
$auto->setze_eigenschaft('VW','Diesel');
$auto->zeige_eigenschaft();
//Ein Fahrrad
$fahrrad=new c_fahrrad;
$fahrrad->setze_eigenschaft('Koga Miyata','Kohlefaser');
$fahrrad->zeige_eigenschaft();
//Ausgabe der Objekteigenschaften
echo '<pre>';
var_dump($auto);
echo '</pre>';
echo '<pre>';
var_dump($fahrrad);
echo '</pre>';
?>
Gruß
Günni