PlusPedia wird derzeit technisch modernisiert. Aktuell laufen Wartungsarbeiten. Für etwaige Unannehmlichkeiten bitten wir um Entschuldigung; es sind aber alle Artikel zugänglich und Sie können PlusPedia genauso nutzen wie immer.
Neue User bitte dringend diese Hinweise lesen:
Anmeldung - E-Mail-Adresse Neue Benutzer benötigen ab sofort eine gültige Email-Adresse. Wenn keine Email ankommt, meldet Euch bitte unter NewU25@PlusPedia.de.
Hinweis zur Passwortsicherheit:
Bitte nutzen Sie Ihr PlusPedia-Passwort nur bei PlusPedia.
Wenn Sie Ihr PlusPedia-Passwort andernorts nutzen, ändern Sie es bitte DORT bis unsere Modernisierung abgeschlossen ist.
Überall wo es sensibel, sollte man generell immer unterschiedliche Passworte verwenden! Das gilt hier und im gesamten Internet.
Aus Gründen der Sicherheit (PlusPedia hatte bis 24.07.2025 kein SSL | https://)
Bei PlusPedia sind Sie sicher: – Wir verarbeiten keine personenbezogenen Daten, erlauben umfassend anonyme Mitarbeit und erfüllen die Datenschutz-Grundverordnung (DSGVO) vollumfänglich. Es haftet der Vorsitzende des Trägervereins.
PlusPedia blüht wieder auf als freundliches deutsches Lexikon.
Wir haben auf die neue Version 1.43.3 aktualisiert.
Wir haben SSL aktiviert.
Hier geht es zu den aktuellen Aktuelle Ereignissen
Objektorientierte Programmierung: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Die '''objektorientierte Programmierung''' (kurz '''OOP''') ist | Die '''objektorientierte Programmierung''' (kurz '''OOP''') ist eine Technik der [[Software]]entwicklung und eine [[Kategorie]] für [[Computerprogramm]]e bzw. [[Programmiersprache]]n. Die Grundidee besteht darin, den Aufbau der Software an den Grund[[struktur]]en und Objekten desjenigen Bereichs der Wirklichkeit auszurichten, der die gegebene Anwendung betrifft. Ein Modell dieser Strukturen wird in der [[Entwurf]]sphase aufgestellt. Die Umsetzung dieser Denkweise erfordert die Einführung verschiedener Konzepte, insbesondere die Unterscheidung von [[Klasse (Objektorientierung)|Klassen]], Attributen und Methoden. In [[Smalltalk-80 (Programmiersprache)|Smalltalk]] und in [[Python (Programmiersprache)|Python]] ist fast alles ein Objekt. Andere objektorientierte Programmiersprachen wie [[Java Programmiersprache|Java]], [[C++]] oder [[Delphi (Programmiersprache|Delphi]] ziehen dies nicht konsequent durch. OOP ist eine Weiterentwicklung des Grundsatzes aus der [[Informatik]], wonach zwischen [[Daten]] und Programm getrennt wird. | ||
Der [[Internationale Organisation für Normung|ISO/IEC-2382-15]]-Standard von 1999 definiert den Begriff ''object-oriented'' wie folgt: | |||
{{Zitat | |||
|Text=Pertaining to a technique or a programming language that supports objects, classes, and inheritance. | |||
|Sprache=en | |||
|Autor=ISO/IEC 2382-15 | |||
|Übersetzung=Bezieht sich auf eine Technik oder Programmiersprache, welche Objekte, Klassen und Vererbung unterstützt. | |||
|ref=<ref>{{cite web|url=http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=7257|title=ISO 2382-15: 1998 Information technology – Vocabulary – Part 15: Programming languages; Revision of first edition ISO 2382-15: 1985 |language=englisch |publisher=iso.org |accessdate=2012-06-04 |date=1999}}</ref>}} | |||
== Begriffe == | == Begriffe == | ||
=== Klasse === | === Klasse === | ||
Eine Klasse ist eine Schablone aus der zur Laufzeit ein Objekt erzeugt wird | Zur besseren Verwaltung gleichartiger Objekte bedienen sich die meisten Programmiersprachen des Konzeptes der Klasse. Eine Klasse ist eine Schablone, aus der zur Laufzeit ein Objekt erzeugt wird (Instanzierung). Eine Klasse kann ein [[Datentyp]] sein. Darüber hinaus enthält die Klasse auch Methoden, die nicht nur beschreiben was der Datentyp enthält, sondern auch was man damit machen kann. | ||
In Python ist zum Beispiel der Typ einer Variable ein Objekt. | |||
=== Attribute === | |||
Attribute sind | Attribute sind Eigenschaften der Objekte (Fenster, Schaltflächen, Laufleisten, Menüs, usw.) wie Farbe, Größe und Ausrichtung. In der Programmiersprache [[C#]] sind Attribute [[Metadaten]], die an ein Feld oder einen Codeblock wie Assemblys, öffentliche [[Variable (Programmierung)|Variablen]] und [[Datentyp]]en angehängt sind, und entsprechen Annotationen in Java. | ||
=== Methoden === | |||
Methoden sind im Prinzip Prozeduren und Funktionen, die mit den | Methoden sind im Prinzip Prozeduren und Funktionen, die mit den Objekten arbeiten können. | ||
== Terminologie == | |||
{| class="wikitable" | {| class="wikitable" | ||
|- style="background-color:#BDD8C6;" | |- style="background-color:#BDD8C6;" | ||
Zeile 40: | Zeile 44: | ||
=== Kapselung === | === Kapselung === | ||
Namensräume sind "Kapselung im Kleinen". | Namensräume sind "Kapselung im Kleinen". | ||
Zeile 93: | Zeile 95: | ||
==== Beispiele ==== | ==== Beispiele ==== | ||
===== | ===== Fahrzeuge ===== | ||
* Klasse CFahrzeug (Attribute: Höchstgeschwindigkeit, maximale Zuladung, Farbe - Methode: Fahren) | * Klasse CFahrzeug (Attribute: Höchstgeschwindigkeit, maximale Zuladung, Farbe - Methode: Fahren) | ||
** Klasse CKraftfahrzeug (Attribute: Art des Antriebs, Leistung - Methode: Starte_Motor) | ** Klasse CKraftfahrzeug (Attribute: Art des Antriebs, Leistung - Methode: Starte_Motor) | ||
*** Klasse CPersonenkraftwagen (Attribute: Anzahl der Sitzplätze) | *** Klasse CPersonenkraftwagen (Attribute: Anzahl der Sitzplätze) | ||
=== Introspektion === | === Introspektion === |
Aktuelle Version vom 12. September 2025, 14:33 Uhr
Die objektorientierte Programmierung (kurz OOP) ist eine Technik der Softwareentwicklung und eine Kategorie für Computerprogramme bzw. Programmiersprachen. Die Grundidee besteht darin, den Aufbau der Software an den Grundstrukturen und Objekten desjenigen Bereichs der Wirklichkeit auszurichten, der die gegebene Anwendung betrifft. Ein Modell dieser Strukturen wird in der Entwurfsphase aufgestellt. Die Umsetzung dieser Denkweise erfordert die Einführung verschiedener Konzepte, insbesondere die Unterscheidung von Klassen, Attributen und Methoden. In Smalltalk und in Python ist fast alles ein Objekt. Andere objektorientierte Programmiersprachen wie Java, C++ oder Delphi ziehen dies nicht konsequent durch. OOP ist eine Weiterentwicklung des Grundsatzes aus der Informatik, wonach zwischen Daten und Programm getrennt wird. Der ISO/IEC-2382-15-Standard von 1999 definiert den Begriff object-oriented wie folgt:
„Pertaining to a technique or a programming language that supports objects, classes, and inheritance.“
„Bezieht sich auf eine Technik oder Programmiersprache, welche Objekte, Klassen und Vererbung unterstützt.“
– ISO/IEC 2382-15[1]
Begriffe
Klasse
Zur besseren Verwaltung gleichartiger Objekte bedienen sich die meisten Programmiersprachen des Konzeptes der Klasse. Eine Klasse ist eine Schablone, aus der zur Laufzeit ein Objekt erzeugt wird (Instanzierung). Eine Klasse kann ein Datentyp sein. Darüber hinaus enthält die Klasse auch Methoden, die nicht nur beschreiben was der Datentyp enthält, sondern auch was man damit machen kann.
In Python ist zum Beispiel der Typ einer Variable ein Objekt.
Attribute
Attribute sind Eigenschaften der Objekte (Fenster, Schaltflächen, Laufleisten, Menüs, usw.) wie Farbe, Größe und Ausrichtung. In der Programmiersprache C# sind Attribute Metadaten, die an ein Feld oder einen Codeblock wie Assemblys, öffentliche Variablen und Datentypen angehängt sind, und entsprechen Annotationen in Java.
Methoden
Methoden sind im Prinzip Prozeduren und Funktionen, die mit den Objekten arbeiten können.
Terminologie
Begriff | B2 | B3 |
---|---|---|
Superklasse | Basisklasse | Oberklasse |
Subklasse | ||
Methode | ||
Attribute | ||
Exempar |
Instanzen / Objekte
Aus einer Klasse (Schablone) kann eine Instanz / ein Objekt gebildet werden. Dieser Schritt wird instanzieren genannt.
Kapselung
Namensräume sind "Kapselung im Kleinen".
Attribute und Methoden können
Art | UML | Beschreibung |
---|---|---|
public | (+) | Auf diese Methode / dieses Attribut darf außerhalb der Klasse zugegriffen werden. |
private | (-) | Auf diese Methode / dieses Attribut darf nur innerhalb der Klasse zugegriffen werden. |
protected | (#) | Auf diese Methode / dieses Attribut darf innerhalb der Klasse und in spezialisierten (abgeleitete) Klassen verwendet werden. |
package | (~) | Auf diese Methode / dieses Attribut darf innerhalb des Packages zugegriffen werden. |
Das Ziel sollte sein, so viel wie möglich private zu deklarieren und so wenig wie nötig public.
Vererbung und Polymorphie
Klassen können von anderen Klassen abgeleitet werden (Vererbung). Vererbt werden die Daten und die Methoden. Die Methoden der abgeleiteten (spezialisierten) Klassen können überschrieben werden. Dieses Überschreiben wird Polymorphie genannt.
Vererbung ist sinnvoll, wenn Objekte konzeptionell aufeinander aufbauen.
Regeln
Ist-Ein
- Ein Personenkraftwagen ist ein Kraftfahrzeug
- Ein Kraftfahrzeug ist ein Fahrzeug
- Ein Fahrzeug ist KEIN Personenkraftwgaen - es kann auch ein Fahrrad sein.
- Ein Fahrzeug ist kein Sitz - und ein Sitz ist kein Fahrzeug:
Hat-Einen
- Ein Personenkraftwagen hat einen Sitz
Mehrfachvererbung
Eine Klasse kann unter Umständen von mehreren Klassen erben. Dies führt auch zu einer gewissen Komplexität.
Beispiel:
- Es gibt Landfahrzeuge
- Es gibt Wasserfahrzeug
- Ein Amphibienfahrzeug ist ein Landfahrzeug und ein Wasserfahrzeug
Eine Mehrfachvererbung gibt es in C++, Eiffel und in Python. In Java, Smalltalk und Ada gibt es keine Mehrfachvererbung.
Java, Delphi und c# bieten "Schnittstellen" an - damit kann die Mehrfachvererbung in einer eingeschränkten Form abgebildet werden.
Beispiele
Fahrzeuge
- Klasse CFahrzeug (Attribute: Höchstgeschwindigkeit, maximale Zuladung, Farbe - Methode: Fahren)
- Klasse CKraftfahrzeug (Attribute: Art des Antriebs, Leistung - Methode: Starte_Motor)
- Klasse CPersonenkraftwagen (Attribute: Anzahl der Sitzplätze)
- Klasse CKraftfahrzeug (Attribute: Art des Antriebs, Leistung - Methode: Starte_Motor)
Introspektion
- Introspektion ist eine Reflixion (engl. reflection) - Ein Programm hat Erkenntnisse zu seiner eigenen Struktur
- Zur Laufzeit kann abgefragt werden, welche Methoden eine Klasse hat - Welchen Typ hat eine Variable.
Klassenbibliothek
- Eine Klassenbibliothek ist ein Modul.
Siehe auch
Weblinks
Literatur
Einzelnachweise
- ↑ ISO 2382-15: 1998 Information technology – Vocabulary – Part 15: Programming languages; Revision of first edition ISO 2382-15: 1985 (englisch). iso.org (1999). Abgerufen am 4. Juni 2012.
Vergleich zu Wikipedia