Wie der Name "Objekt-orientierte Programmierung" nahelegt, ist das Objekt der Kernpunkt des Interesses.
Ein wunderschönes Beispiel stammt aus dem Buch "Java-Programmierhandbuch und Referenz für die Java-2-Platfform" von Stefan Middendorf und Reiner Singer:
In der objektorientierten Programmierung besteht die Grundidee darin, Objekte
der realen Welt abzubilden. Das Konzept der objektorientierten Programmierung
sieht zunächst keine Daten oder Prozeduren vor. Statt dessen können
nur sogenannte Botschaften an ein Objekt geschickt werden. Das Objekt reagiert
dann in seiner spezifischen Weise auf die Botschaften. Ein charakteristisches
Beispiel für diese Denkweise wäre eine Anweisung wie: "Tischlein,
deck' Dich!".
Hier wird dem Objekt "Tischlein" eine Botschaft geschickt. Leider
reagieren reale Tische kaum auf diese Botschaft. Bei diesem Ansatz steht das
Problem selbst, das "Was", im Vordergrund, und nicht das "Wie".
Alle Objekte, die dieselben Methoden verstehen und dieselben Merkmale haben (wobei sie sich in der konkreten Ausprägung der Merkmale unterscheiden können) bilden eine Klasse von Objekten. Eine Klasse legt damit den Typ eines Objektes fest, sie besitzt einen Mechanismus, um Objekte zu erzeugen. Dabei wirkt die Beschreibung der Klasse wie eine Schablone, die angibt, wie ein Objekt dieser Klasse aussehen muss.
Das ist zwar alles wunderschön formuliert, wer aber ganz neu in der OOP und in der Programmierung ist, wird damit aber nicht so viel anfangen können. Daher jetzt alles noch einmal schön anschaulich und kleinschrittig:
Computer können auf vielfältige Art und Weise programmiert werden. Naheliegend ist aber der Wunsch, dies auf eine für den Menschen möglichst angenehme und verständliche Art und Weise tun zu können. Dies versucht die Objektorientierung - vor dem Hintergrund, dass wir auch im Alltag laufend mit Objekten zu tun haben. Wo man geht und steht und sich umsieht - überall Objekte. Auf der Straße zum Beispiel ein VW Passat, ein BMW 320, ein Mercedes 220, ein Opel Astra, usw. (dies sind alles geschützte Markenbezeichnungen). Konkreter handelt es sich um ein VW-Passat-Objekt, um ein BMW-320-Objekt, um ein Mercedes-220-Objekt, um ein Opel-Astra-Objekt. Diese Objekte haben verschiedene Eigenschaften, objektorientiert ausgedrückt Attribute: Schiebedach, Fensterheber, Motor, Lenkrad, ABS, ESP, Farbe, usw.. Diese Attribute sind mit geeigneten Werten belegt, z.B. Schiebedach: nein; Fensterheber: nein; Motor: 4-Zylinder, Benzin, 115 PS; Lenkrad: ja; ABS: ja; ESP: nein; Farbe: weiß. Des weiteren kann das Objekt bestimmte Dinge machen, objektorientiert ausgedrückt bestimmte Methoden ausführen - natürlich nicht einfach so, sondern nach dem Zusenden einer entsprechenden Botschaft: wenn ich den Zündschlüssel drehe, startet der Motor; wenn ich auf das Bremspedal stehe, wird das Auto langsamer, usw..
Es gibt auf unseren Straßen sehr viele verschiedene Auto-Objekte, kaum zwei Auto-Objekte werden in allen ihren Attributen übereinstimmen, auch kann nicht jedes Auto-Objekt jede Methode ausführen. Aber dennoch besitzen sie offenkundig so starke Gemeinsamkeiten, dass schon jedes Kleinkind in der Lage ist, diese zu erkennen, denn es sagt zu den ganzen Auto-Objekten einfach nur: Auto! Damit sind alle diese Objekte klassifiziert worden, denn sie gehören alle zur Klasse Auto. Genau so leicht fällt es einem Kleinkind, z.B. ein Eiche-Objekt, ein Birke-Objekt, ein Ahorn-Objekt, ein Buche-Objekt der Klasse Baum zuzuordnen.
Für uns Menschen ist es offenbar naheliegend und leicht zu leisten, gleichartige Objekte einer gemeinsamen Klasse zuzuordnen. Die Klasse beschreibt also wie eine Vorlage, wie eine Schablone, was die Merkmale der Objekte sein müssen, wenn sie zu dieser Klasse gehören sollen. Oder umgekehrt, was getan werden muss, um Objekte zu bauen, zu konstruieren, dass sie dieser Klasse entsprechen. Die Objekt-Orientierte Programmierung OOP bildet nun diese Sicht der Dinge - Klassen, nach deren Vorlage konkrete Objekte hergestellt werden, die bestimmte Attribute haben und bestimmte Botschaften verstehen und daraufhin bestimmte Methoden ausführen - in der Programmierung von Computern ab. Derartige Programmiersprachen sind objektorientierte Programmiersprachen wie SmallTalk, C++ und Java.