Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Anfängerfrage zu Objektorientierung

Frage Entwicklung Java

Mitglied: Letavino

Letavino (Level 1) - Jetzt verbinden

11.05.2012 um 12:29 Uhr, 2906 Aufrufe, 3 Kommentare

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.

Mit freundlichen Grüßen, Florian
Mitglied: ITSchlumpf
11.05.2012 um 12:40 Uhr
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
Bitte warten ..
Mitglied: Letavino
11.05.2012 um 12:49 Uhr
Hallo Schlumpf,
die Attribute unterscheiden sich nicht, nur deren Werte.

Dann werde ich es mal bei der klasse Auto belassen und das ganze in Unterklassen aufsplitten, wenn markenabhängige Attributen hinzukommen sollten.

Vielen Dank für deine Hilfe!
Bitte warten ..
Mitglied: Guenni
17.05.2012 um 18:28 Uhr
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:

01.
<?php 
02.
class c_fahrzeug{ 
03.
	protected $hersteller
04.
	protected $marke
05.
	protected $typ
06.
	protected $baujahr
07.
	protected $neu
08.
	public function setze_eigenschaft(){ 
09.
		 
10.
11.
	public function zeige_eigenschaft(){ 
12.
		 
13.
14.
}; 
15.
 
16.
class c_auto extends c_fahrzeug{ 
17.
	protected $motor
18.
	protected $klima
19.
	protected $navi
20.
	protected $hifi
21.
	public function setze_eigenschaft($hersteller,$motor){ 
22.
		$this->hersteller=$hersteller
23.
		$this->motor=$motor
24.
25.
	public function zeige_eigenschaft(){ 
26.
		echo '<p>Hersteller Auto: '.$this->hersteller.'<p>'
27.
		echo '<p>Motor: '.$this->motor.'<p>'
28.
29.
}; 
30.
 
31.
class c_fahrrad extends c_fahrzeug{ 
32.
	protected $rahmen
33.
	protected $schaltung
34.
	public function setze_eigenschaft($hersteller,$rahmen){ 
35.
		$this->hersteller=$hersteller
36.
		$this->rahmen=$rahmen
37.
38.
	public function zeige_eigenschaft(){ 
39.
		echo '<p>Hersteller Fahrrad: '.$this->hersteller.'<p>'
40.
		echo '<p>Rahmen: '.$this->rahmen.'<p>'
41.
42.
}; 
43.
 
44.
//Ein Auto 
45.
$auto=new c_auto; 
46.
$auto->setze_eigenschaft('VW','Diesel'); 
47.
$auto->zeige_eigenschaft(); 
48.
 
49.
//Ein Fahrrad 
50.
$fahrrad=new c_fahrrad; 
51.
$fahrrad->setze_eigenschaft('Koga Miyata','Kohlefaser'); 
52.
$fahrrad->zeige_eigenschaft(); 
53.
 
54.
//Ausgabe der Objekteigenschaften 
55.
echo '<pre>'
56.
var_dump($auto); 
57.
echo '</pre>'
58.
 
59.
echo '<pre>'
60.
var_dump($fahrrad); 
61.
echo '</pre>'
62.
?>
Gruß
Günni
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
LAN, WAN, Wireless
gelöst Anfängerfrage Routing (10)

Frage von PharIT zum Thema LAN, WAN, Wireless ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...