Springe zu einem wichtigen Kapitel
Objektorientierte Programmierung Definition
Die objektorientierte Programmierung (OOP) ist ein Paradigma der Computerprogrammierung, bei dem das Softwaredesign auf Daten oder Objekten und nicht auf Funktion und Logik basiert.
Diese Programmiermethode eignet sich gut für große, komplexe Programme, die aktualisiert oder aktiv gewartet werden. Dazu gehören:
- Fertigungsprogramme
- Build-Programme
- Mobile Apps
Beispielsweise kann die objektorientierte Programmierung verwendet werden, um Systemsimulationssoftware zu erstellen.
Der erste Schritt in der objektorientierten Programmierung besteht darin, alle Objekte zu sammeln, mit denen ein Programmierer arbeiten möchte, und festzustellen, wie sie zueinander in Beziehung stehen. Dies ist eine Aufgabe namens Datenmodellierung.
Struktur der objektorientierten Programmierung
Die Struktur oder Bausteine der objektorientierten Programmierung umfassen:
- Eine Klasse ist ein benutzerdefinierter Datentyp, der als Blaupause für einzelne Objekte, Attribute und Methoden dient.
- Ein Objekt ist eine Instanz einer Klasse, die mit speziell definierten Daten erstellt wurde. Objekte können realen Objekten oder abstrakten Entitäten entsprechen.
- Eine Methode ist eine innerhalb einer Klasse definierte Funktion, die das Verhalten eines Objekts beschreibt. Alle Methoden in einer Klassendefinition beginnen mit einer Referenz auf das Instanzobjekt. In Objekten enthaltene Unterprogramme werden auch als Instanzmethoden bezeichnet. Programmierer verwenden Methoden, um die Wiederverwendbarkeit zu erhöhen oder Funktionalitäten jeweils in einem Objekt zu kapseln.
- Attribute werden in der Klassenvorlage definiert und repräsentieren den Zustand des Objekts. Objekte haben Daten, die in Attributfeldern gespeichert sind. Klassenattribute gehören zur Klasse selbst.
Objektorientierte Programmierung Grundlagen
Was sind die Grundlagen der objektorientierten Programmierung?
Die objektorientierte Programmierung ermöglicht eine natürliche Modellierung, steigert die Entwicklereffizienz durch Wiederverwendbarkeit von Programmelementen und reduziert die Anwendungskomplexität durch Abstraktion und Kapselung.
Abstraktion
Objekte legen nur die internen Mechanismen offen, die für die Verwendung durch andere Objekte relevant sind, wodurch unnötiger Implementierungscode verborgen wird. Abgeleitete Klassen können seine Funktionalität erweitern.
Dieses Konzept ermöglicht es Entwicklern, im Laufe der Zeit problemlos zusätzliche Änderungen und Ergänzungen vorzunehmen.
Kapselung
Dieses Prinzip besagt, dass alle wesentlichen Informationen im Objekt enthalten sind und nur ausgewählte Informationen offengelegt werden. Die Implementierung und der Status jedes Objekts werden innerhalb der Klasse, in der es definiert ist, privat gehalten. Kein anderes Objekt hat Zugriff auf diese Klasse oder die Berechtigung, Änderungen daran vorzunehmen. Es kann nur eine Liste öffentlicher Funktionen oder Methoden aufgerufen werden.
Diese Eigenschaft zum Verbergen von Daten erhöht die Programmsicherheit und verhindert versehentliche Datenbeschädigung.
Vererbung
Klassen können Code aus anderen Klassen wiederverwenden. Beziehungen und Unterklassen zwischen Objekten können angegeben werden, sodass Entwickler gemeinsame Logik wiederverwenden und gleichzeitig eine klare Hierarchie beibehalten können. Dieses Merkmal der objektorientierten Programmierung erzwingt eine tiefere Datenanalyse, reduziert die Entwicklungszeit und gewährleistet ein höheres Maß an Genauigkeit.
Polymorphismus
Objekte sind so konzipiert, dass sie zusammenarbeiten und in vielen Formen vorkommen. Das Programm bestimmt die Bedeutung oder Verwendung, die für jeden Lauf dieses Objekts von der übergeordneten Klasse erforderlich ist, wodurch die Notwendigkeit einer Codeduplizierung reduziert wird. Dann wird eine Unterklasse erstellt, um die Funktionalität der Elternklasse zu erweitern.
Polymorphismus ermöglicht es verschiedenen Arten von Objekten, dieselbe Schnittstelle zu passieren.
Objektorientierte Programmierung Prinzipien
In den 1990er-Jahren wurden viele objektorientierte Programmiersprachen entwickelt, um das Programmieren komplexer Anwendungen zu erleichtern. Die objektorientierte Programmierung (OOP) macht Anwendungen robuster, einfacher zu warten und weniger fehleranfällig.
Die objektorientierte Programmierung basiert auf folgenden Prinzipien:
- Objekt-Klassen-Beziehung
- Kapselungsprinzip
- Objektidentität
- Konstruktoren und Dekonstruktoren
Objekt-Klasse-Beziehung
Eine Klasse ist ein abstrakter Oberbegriff für Dinge (Objekte), die eine gemeinsame Struktur oder ein gemeinsames Verhalten haben.
Ein Objekt ist eine Instanz einer Klasse, die zur Laufzeit verfügbar ist, wenn Speicherplatz verfügbar wird. Ein Objekt kann auch als Instanz einer Klasse bezeichnet werden. Wenn eine Instanz einer Klasse erstellt wird, wird dies als Instanziierung bezeichnet. Die Beziehung zwischen Klassen und Instanzen wird als Objektklasse- oder Instanzbeziehung bezeichnet.
Wenn Du Auto als Klasse definierst, dann ist Dein rotes Auto ein Objekt (eine Instanz) der Klasse Auto.
Kapselungsprinzip
Eine Klasse und damit ihre Instanzen sind durch folgende Eigenschaften gekennzeichnet:
- Attribute (oder Daten) beschreiben die Struktur eines Objekts innerhalb einer Klasse: die Teile des Objekts und die darin enthaltenen Informationen.
- Operationen (oder Methoden, Elementfunktionen) beschreiben das Verhalten von Objekten einer Klasse. Operationen können Parameter haben.
- Zusicherungen sind Bedingungen und Regeln, die Objekte erfüllen müssen.
- Beziehungen können zu anderen Klassen gegeben werden.
Beispielsweise kann ein Auto Attribute wie Farbe, Marke, Geschwindigkeit usw. haben.
Es gibt Methoden wie Anfahren des Autos, Beschleunigen des Autos, Bremsen, Parken des Autos usw.
Das Fahrzeugbeschleunigungsverfahren erhält Parameter wie: Soll-Ende Geschwindigkeit, zum Beispiel 50 km/h. Eine vernünftige Behauptung für die Geschwindigkeitseigenschaft ist, dass sie ≥ 0 ist.
Die Klasse Auto kann eine (später zu spezifizierende) Beziehung mit der Klasse Fahrzeug haben.
Klassen kombinieren Eigenschaften und Methoden zu einer Einheit. Standardmäßig sind Eigenschaften nur über die Methoden der Klasse zugänglich. Dies wird als eingeschränkter oder gekapselter Zugriff bezeichnet. Eigenschaften und Methoden sind entweder:
- für den externen Zugriff freigegeben (sie werden dann öffentlich (public) gemacht).
- oder vor Zugriff geschützt (dann sind sie geschützt (protected) oder sogar privat (private)).
Beispielsweise kann der direkte Zugriff auf das Geschwindigkeitsattribut von Objekten der Klasse Car geschützt werden und ist nur über die (öffentlichen) Methoden Accelerate Car und Brake Car möglich.
Objektidentität
Ein Objekt kann unabhängig von den spezifischen Werten seiner Attribute eindeutig von anderen Objekten unterschieden werden.
Selbst wenn ein Auto die gleiche Marke und Farbe hat und gleich schnell fährt wie Deins, ist es immer noch ein anderes Auto.
Konstruktoren und Dekonstruktoren
Die Erstellung und Zerstörung eines Objekts einer Klasse erfolgt mit speziellen Methoden, Konstruktoren oder Destruktoren. Sie stellen benötigten oder frei gewordenen Speicherplatz zur Verfügung. Es kann mehrere Konstruktoren geben, z. B. ohne oder mit gleichzeitiger Initialisierung, sie unterscheiden sich nur in Anzahl und Typ ihrer Parameter.
Objektorientierte Programmierung Beispiele
Simula gilt als die erste objektorientierte Programmiersprache, aber viele andere Programmiersprachen werden heute mit OOP verwendet. Einige Programmiersprachen eignen sich jedoch besser für die objektorientierte Programmierung als andere.
Nicht alle Programmiersprachen unterstützen die objektorientierte Programmierung. Beispielsweise ist C++ und Pascal rein prozedural. Sprachen wie C++ oder Object Pascal erlauben OOP, erzwingen es aber nicht. Die resultierenden Programme können eine Mischung verschiedener Modelle sein. Gleiches gilt für Sprachen wie Hypertext Preprocessor (PHP) oder Perl, die durch Erweiterungen mit OOP kompatibel sein können. Andere wie Eiffel, Smalltalk, Java oder C# sind vollständig objektorientiert.
Objektorientierte Programme Entwurf
Wie in der imperativen oder funktionalen Programmierung Entwerfen (und damit Modellieren) des eigentlichen Algorithmus (Problem) ist ein wichtiges Thema.
Für das OO-Design gibt es eine Unified Modeling Language (UML):
- UML ist eine konzeptionelle Sprache zur Modellierung von Softwaresystemen.
- UML ist eine Art Pseudocode, der jedoch eine wohldefinierte Semantik hat und von vielen Programmen verarbeitet werden kann.
- UML-Code selbst ist nicht ausführbar. Dennoch wird UML von vielen Experten als Prototyp für die nächste Generation von Programmiersprachen betrachtet.
Mehr zum UML Diagramm findest Du in einer eigenständigen Erklärung auf StudySmarter!
Vorteile objektorientierte Programmierung
In der folgenden Tabelle kannst Du Dich über die Vorteile von OOP informieren.
Vorteile – OOP | Beschreibung |
Modularität | Durch die Kapselung können Objekte in sich abgeschlossen sein, was das Debuggen und die gemeinsame Entwicklung erleichtert. |
Wiederverwendbarkeit | Code kann durch Vererbung wiederverwendet werden, was bedeutet, dass ein Team denselben Code nicht mehr als einmal schreiben muss. |
Produktivität | Durch die Verwendung von Bibliotheken und wiederverwendbarem Code können Programmierer neue Programme schneller erstellen. |
Leichte Erweiterbarkeit und Skalierbarkeit | Programmierer können Systemfunktionen unabhängig voneinander implementieren. |
Schnittstellenbeschreibungen | Das Schreiben eines externen Systems ist einfach, da Nachrichtenaustauschtechniken verwendet werden, um zwischen Objekten zu kommunizieren. |
Sicherheit | Kapselung und Abstraktion verbergen komplexen Code, erleichtern die Wartung von Software und schützen Internetprotokolle. |
Flexibilität | Polymorphismus ermöglicht es einer einzelnen Funktion, der Klasse zu entsprechen, in der sie platziert ist. Außerdem können verschiedene Objekte dieselbe Schnittstelle passieren. |
Nachteile objektorientierte Programmierung
Das objektorientierte Programmiermodell wurde von Entwicklern aus vielen Gründen kritisiert. Die größte Sorge ist, dass sich OOP zu sehr auf die Datenkomponente der Softwareentwicklung und nicht genug auf Berechnungen oder Algorithmen konzentriert. Außerdem kann das Schreiben von OOP-Code komplexer sein und das Kompilieren kann länger dauern.
Aus diesem Grund stehen folgende Alternativen zur Verfügung:
- Funktionale Programmierung: Dazu gehören Sprachen denn Erlang und Scala, welche für Fernmeldewesen und fehlertolerante Systeme verwendet werden.
- Strukturierte oder modulare Programmierung: Dazu gehören Sprachen wie PHP und C#.
- Imperative Programmierung: Diese Alternative zu OOP konzentriert sich eher auf Funktionen als auf Templates und beinhaltet C++ und Java.
- Deklarative Programmierung: Diese Programmiermethode befasst sich mit Aussagen darüber, was die Aufgabe oder das gewünschte Ergebnis ist, nicht wie es erreicht werden soll. Dazu gehören Prolog und Lisp.
- Logische Programmierung: Diese Methode basiert hauptsächlich auf formaler Logik und verwendet Sprachen wie Prolog. Sie umfasst eine Reihe von Aussagen, die Fakten oder Regeln über den Problembereich darstellen. Dabei wird sich auf Aufgaben, die von regelbasierten logischen Abfragen profitieren können, konzentriert.
Objektorientierte Programmierung - Das Wichtigste
- Objektorientierte Programmierung Definition: Die objektorientierte Programmierung (OOP) ist ein Paradigma der Computerprogrammierung, bei dem das Softwaredesign auf Daten oder Objekten und nicht auf Funktion und Logik basiert.
- Objektorientierte Programmierung Grundlagen: Die objektorientierte Programmierung ermöglicht eine natürliche Modellierung, steigert die Entwicklereffizienz durch Wiederverwendbarkeit von Programmelementen und reduziert die Anwendungskomplexität durch Abstraktion und Kapselung.
- Objektorientierte Programmierung Prinzipien: Die objektorientierte Programmierung basiert auf folgenden Prinzipien:
- Objekt-Klassen-Beziehung
- Kapselungsprinzip
- Objektidentität
- Konstruktoren und Dekonstruktoren
Nachweise
- inztitut.de: Objektorientierte Programmierung. (28.11.2022)
- grimm-jaud.de: Objektorientierte Programmierung. (28.11.2022)
- ibm.com: Objekt-Oriented Programming. (28.11.2022)
- homepage.thm.de: Einführung in die Objektorientierte Programmierung. (28.11.2022)
Lerne mit 7 Objektorientierte Programmierung Karteikarten in der kostenlosen StudySmarter App
Du hast bereits ein Konto? Anmelden
Häufig gestellte Fragen zum Thema Objektorientierte Programmierung
Wie programmiert man objektorientiert?
In der imperativen oder funktionalen Programmierung ist das Entwerfen (und damit Modellieren) des eigentlichen Algorithmus (Problem) ein wichtiges Thema. Für das OO-Design gibt es eine Unified Modeling Language (UML).
Warum objektorientiert Programmieren?
Diese Programmiermethode eignet sich gut für große, komplexe Programme, die aktualisiert oder aktiv gewartet werden. Dazu gehören:
- Fertigungsprogramme
- Build-Programme
- Mobile Apps
Was versteht man unter objektorientierter Programmierung?
Die objektorientierte Programmierung (OOP) ist ein Paradigma der Computerprogrammierung, bei dem das Softwaredesign auf Daten oder Objekten und nicht auf Funktion und Logik basiert.
Über StudySmarter
StudySmarter ist ein weltweit anerkanntes Bildungstechnologie-Unternehmen, das eine ganzheitliche Lernplattform für Schüler und Studenten aller Altersstufen und Bildungsniveaus bietet. Unsere Plattform unterstützt das Lernen in einer breiten Palette von Fächern, einschließlich MINT, Sozialwissenschaften und Sprachen, und hilft den Schülern auch, weltweit verschiedene Tests und Prüfungen wie GCSE, A Level, SAT, ACT, Abitur und mehr erfolgreich zu meistern. Wir bieten eine umfangreiche Bibliothek von Lernmaterialien, einschließlich interaktiver Karteikarten, umfassender Lehrbuchlösungen und detaillierter Erklärungen. Die fortschrittliche Technologie und Werkzeuge, die wir zur Verfügung stellen, helfen Schülern, ihre eigenen Lernmaterialien zu erstellen. Die Inhalte von StudySmarter sind nicht nur von Experten geprüft, sondern werden auch regelmäßig aktualisiert, um Genauigkeit und Relevanz zu gewährleisten.
Erfahre mehr