Hallo Harry,
die genaue Definition von Objektorientierung konnte ich leider nicht mehr finden, aber im Groben und Ganzen sagt diese folgendes aus: Mit der Objektorientierung versucht man die Dinge und Vorgänge der realen Welt nachzubilden.
Das beste Beispiel dafür ist die Natur:
Es gibt verschiedene Klassen, aus denen wiederum andere Klassen abgeleitet sind, z.B. ist die Klasse der Säugetiere von der Klasse Lebewesen abgeleitet. Auch die Klasse Vogel ist von dieser Klasse Lebewesen abgeleitet.
Die Klasse Lebewesen stellt dabei verschiedene Methoden und Attribute bereit, z.B. die Methoden leben() und sterben() und das Attribut lebensdauer.
Abgeleitete Klassen implementieren jedoch diese Methoden anders und setzen auch die Attribute anders.
Eine von der Klasse Säugetier abgeleitete Klasse Mensch implementiert z.B. die Methode leben() anders, als die Klasse Vogel. Auch die lebensdauer ist bei Objekten dieser Klasse anders.
Die abgeleiteten Klassen können wiederum eigene Attribute und Methoden besitzen, die die Superklasse, also die Vaterklasse, nicht besitzt.
So wird z.B. bei der Klasse Mensch eine Methode sprechen() implementiert sein, die bei der Vaterklasse Säugetier keinen Sinn macht, da z.B. ein Objekt der Klasse Tiger, welche ja auch von Säugetier abgeleitet ist, diese Methode nicht implementiert bzw. benötigt.
Das Ganze kann man jetzt natürlich noch viel weiter verfeinern.
Es bildet sich also eine riesige Hierarchie.
Die Kommunikation unter den einzelnen Klassen, wenn sie denn stattfinden soll, findet dann über wohldefinierte Schnittstellen statt.
Dabei kann man solch eine Überlegung auf eigentlich alles anwenden, z.B. auch auf einen PC. Dieser ist aus verschiedenen Objekten aufgebaut, einem Netzteil, einer Festplatte, einer CPU, …
Da die Kommunikations-Schnittstellen in einem PC genormt sind, kann man z.B. die Objekte austauschen und trotzdem funktioniert das Ganze in sich (zumindest bei PCs _sollte_ es so sein *g).
Man kann also ein CD-ROM-Laufwerk durch einen CD-Brenner ersetzen, hat im Prinzip keinen großartigen Aufwand betrieben und plötzlich viel mehr Funktionalität.
Ähnlich bei einem Auto, bei dem man einen stärkeren Motor einbaut.
Bei strukturiertem Programmieren wird im Prinzip für jedes Problem eine eigene Lösung gefunden und der Code ist danach nur bedingt wiederverwendbar.
Bei der Objektorientierung kann der Code, solange er wohldefinierte Schnittstellen und gutüberlegte Klassenstrukturierung aufweist, immer wieder verwendet werden.
So kann z.B. der Code einer Klasse Kunde in einer Bank, in einem Supermarkt oder auch in einem Reisebüro verwendet werden.
Kunde hat immer bestimmte Eigenschaften (Attribute) und Funktionen (Methoden). Wenn man zusätzlich welche benötigt, dann kann man z.B. eine Klasse BankKunde ableiten, die die zusätzlichen Attribute kontonummer und kreditWürdigkeit hat.
Die Attribute vorname, nachname, geburtsdatum und anschrift erbt sie jedoch von der Vaterklasse.
Wenn man die Objektorientierung einmal verstanden hat, so sieht man bei genauerem Hinsehen an jedem Tag unzählige Objekte, Methoden, Attribute, …
Ich hoffe, meine Erklärung war einigermaßen verständlich.
Ciao, Bill