Objektorientierte Programmierung

Du kennst Dich gut mit Computern aus und hast vielleicht sogar etwas Programmiererfahrung. Du hast also den Begriff objektorientierte Programmierung schon oft gehört und Dich gefragt, was das genau ist? Die Antwort auf diese Frage findest Du in dieser Erklärung.

Objektorientierte Programmierung Objektorientierte Programmierung

Erstelle Lernmaterialien über Objektorientierte Programmierung mit unserer kostenlosen Lern-App!

  • Sofortiger Zugriff auf Millionen von Lernmaterialien
  • Karteikarten, Notizen, Übungsprüfungen und mehr
  • Alles, was du brauchst, um bei deinen Prüfungen zu glänzen
Kostenlos anmelden
Inhaltsangabe

    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 – OOPBeschreibung
    ModularitätDurch die Kapselung können Objekte in sich abgeschlossen sein, was das Debuggen und die gemeinsame Entwicklung erleichtert.
    WiederverwendbarkeitCode kann durch Vererbung wiederverwendet werden, was bedeutet, dass ein Team denselben Code nicht mehr als einmal schreiben muss.
    ProduktivitätDurch 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.
    SchnittstellenbeschreibungenDas Schreiben eines externen Systems ist einfach, da Nachrichtenaustauschtechniken verwendet werden, um zwischen Objekten zu kommunizieren.
    SicherheitKapselung und Abstraktion verbergen komplexen Code, erleichtern die Wartung von Software und schützen Internetprotokolle.
    FlexibilitätPolymorphismus 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:

    1. Funktionale Programmierung: Dazu gehören Sprachen denn Erlang und Scala, welche für Fernmeldewesen und fehlertolerante Systeme verwendet werden.
    2. Strukturierte oder modulare Programmierung: Dazu gehören Sprachen wie PHP und C#.
    3. Imperative Programmierung: Diese Alternative zu OOP konzentriert sich eher auf Funktionen als auf Templates und beinhaltet C++ und Java.
    4. 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.
    5. 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

    1. inztitut.de: Objektorientierte Programmierung. (28.11.2022)
    2. grimm-jaud.de: Objektorientierte Programmierung. (28.11.2022)
    3. ibm.com: Objekt-Oriented Programming. (28.11.2022)
    4. homepage.thm.de: Einführung in die Objektorientierte Programmierung. (28.11.2022)
    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. 

    Teste dein Wissen mit Multiple-Choice-Karteikarten

    Wahr oder FalschEine Klasse ist ein benutzerdefinierter Datentyp, der als Blaupause für einzelne Objekte, Attribute und Methoden dient.

    Wahr oder FalschAttribute 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.

    Wahr oder FalschKlassen 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.

    Weiter
    1
    Ü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
    StudySmarter Redaktionsteam

    Team Objektorientierte Programmierung Lehrer

    • 9 Minuten Lesezeit
    • Geprüft vom StudySmarter Redaktionsteam
    Erklärung speichern

    Lerne jederzeit. Lerne überall. Auf allen Geräten.

    Kostenfrei loslegen

    Melde dich an für Notizen & Bearbeitung. 100% for free.

    Schließ dich über 22 Millionen Schülern und Studierenden an und lerne mit unserer StudySmarter App!

    Die erste Lern-App, die wirklich alles bietet, was du brauchst, um deine Prüfungen an einem Ort zu meistern.

    • Karteikarten & Quizze
    • KI-Lernassistent
    • Lernplaner
    • Probeklausuren
    • Intelligente Notizen
    Schließ dich über 22 Millionen Schülern und Studierenden an und lerne mit unserer StudySmarter App!