-
Könntest du das ganz kurz mal erläutern? Danke...
"Ganz kurz" ist gut, da haben andere 1200 Seiten Schinken drüber geschrieben
![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Aber ich kann ja mal versuchen, dass an einem kleinen Beispiel zu erklären.
Gehen wir davon aus, dass wir eine Simulation von einem Hausbau programmieren wollen. Das Haus soll einen Keller, Erdgeschoss und eine erste Etage bekommen. Jede dieser Etagen benötigt natürlich einen Fussboden, es muss tapeziert werden und Möbel gekauft werden.
Wenn wir jetzt funktional programmieren, dann schreiben wir uns für jede dieser Aufgaben eine Funktion/Prozedur und übergeben zum jeweiligen Zeitpunkt den Keller/Erdgeschoss/1.Etage als Parameter an diese Funktionen, damit die Vorgänge erledigt werden.
Wenn wir unseren Hausbau objekt-orientiert betrachten, dann wäre jede Etage ein Objekt für sich, dass bestimmte Methoden beinhaltet, in unserem Fall (Fussboden verlegen, tapezieren und Möbel kaufen). Diese Funktionen werden jetzt nicht mehr allgemein betrachtet, sondern jedes Objekt hat diese Methoden.
Wenn wir noch kurz die Vererbung betrachten, ein wichtiger Bestandteil objekt-orientierter Programmierung, dann kann man ja sagen, dass der Keller, das Erdgeschoss und die 1. Etage gleiche Funktionen/Methoden beinhalten, also auf der gleichen Grundbasis aufbauen. Somit können wir uns eine Grundklasse bauen, die in Pseudocode ungefähr so aussieht.
Code:
class Etage {
procedure FussbodenVerlegen;
procedure Tapezieren;
procedure MoebelKaufen;
}
Das wäre jetzt unsere Grundklasse, von der wir jetzt ableiten werden und die einzelnen Etagen spezialisieren. Die Idee ist aber das wichtigste, dass gleiche Objekte von einer gemeinensamen Basisklasse abgeleitet werden.
Wenn wir jetzt den Keller modellieren, leiten wir von unserer Etagen-Klasse einfach ab, was bedeutet, dass unsere Keller-Klasse die Methoden/Prozeduren der Grundklasse erbt, also auch inne hat.
Code:
class Keller extends(erbt von) Etage {
procedure SpeisekammerBauen;
}
class ErsteEtage extends Etage {
procedure WendeltreppeBauen;
}
Wie man hier jetzt sieht, spezialisieren wir unsere Basisklasse, von der wir ableiten und nichts anderes ist objekt-orientierte Programmierung.
Ich hoffe, es ist ein bisschen klar geworden, welche Idee dahinter steckt.
Gruß