====== Objektorientierte Programmierung ====== Die objektorientierte Programmierung erweitert die Konzepte der strukturierten Programmierung um Begriffe wie **Klassen, Objekte, Kapselung, Vererbung** und **Polymorphie**. Diese relativ abstrakten Konzepte finden sich in ähnlicher Form in vielen modernen Programmiersprachen. Sie werden auch als Kriterium dafür betrachtet, dass man eine Programmiersprache als objektorientiert bezeichnen kann. * Klassen ermöglichen die Zusammenfassung von Daten und Funktionen. Damit kann man explizit zum Ausdruck bringen, dass bestimmte Daten und Funktionen zusammengehören. Eine solche Zusammenfassung ist in nicht objektorientierten Programmiersprachen in der Regel nicht möglich. Die Zusammenfassung von Daten und Funktionen ermöglicht es, wichtige Programmdaten vor unbeabsichtigter Veränderung zu schützen und so die **Kaspelung** zu realisieren. * **Vererbung** ermöglicht die Konstruktion neuer Klassen aus vorhandenen. Die neuen Klassen übernehmen die Elemente der Basisklassen und können zusätzliche Elemente haben. Sie unterscheiden sich in den zusätzlichen Elementen von den Basisklassen und sind in den geerbten mit ihnen identisch. Auf diese Weise kann man eine Basisklasse als Baustein wiederverwenden und die abgeleitete Klasse als Erweiterung der Basisklasse betrachten. * Vererbung ist außerdem die Grundlage für die **Polymorphie**, die unter anderem eine einfache Erweiterung von Programmen ermöglicht. Klassen können sehr hilfreiche Programmbausteine sein. In den letzten Jahren hat sich die Überzeugung durchgesetzt, dass nspruchsvolle und komplexe Programme (wie mit grafischen Benutzeroberflächen) ohne die objektorientierten Konzepte kaum mehr mit vertretbarem Aufwand realisiert werden können. * [[:informatik:oop:Kapselung]] * [[:informatik:oop:Erzeugen und Verwenden von Klassen]] * [[:informatik:oop:Vordefinierte Klassen]] * [[:informatik:oop:Konstruktoren und Destruktoren]] * [[:informatik:oop:Vererbung]] * [[:informatik:oop:Polymorphie]]