Objektorientierung: Unterschied zwischen den Versionen
Thomas (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Thomas (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 2: | Zeile 2: | ||
'''Objektorientierung''' (kurz '''OO''') bezeichnet ein Paradigma in der Softwareentwicklung, bei dem komplexe Systeme durch das Zusammenspiel kooperierender [[Objekt|Objekte]] modelliert werden. Objektorientierung kommt vor allem in der objektorientierten Programmierung (z. B. mit [[Java]]) zum Einsatz, findet jedoch auch in vorgelagerten Phasen wie der [[Objektorientierte Analyse|objektorientierten Analyse]] und dem [[Objektorientierter_Entwurf|objektorientierten Entwurf]] (häufig in [[Unified Modeling Language|UML]]) Anwendung. | '''Objektorientierung''' (kurz '''OO''') bezeichnet ein Paradigma in der Softwareentwicklung, bei dem komplexe Systeme durch das Zusammenspiel kooperierender [[Objekt|Objekte]] modelliert werden. Objektorientierung kommt vor allem in der objektorientierten Programmierung (z. B. mit [[Java]]) zum Einsatz, findet jedoch auch in vorgelagerten Phasen wie der [[Objektorientierte Analyse|objektorientierten Analyse]] und dem [[Objektorientierter_Entwurf|objektorientierten Entwurf]] (häufig in [[Unified Modeling Language|UML]]) Anwendung. | ||
Ein [[Objekt|Objekt]] wird durch definierte [[Attribute]] (Eigenschaften) und [[Methoden]] (Verhalten) charakterisiert. Objekte können zudem miteinander kommunizieren, indem sie Informationen empfangen oder senden. | Ein [[Objekt|Objekt]] wird durch definierte [[Attribut|Attribute]](Eigenschaften) und [[Methode|Methoden]] (Verhalten) charakterisiert. Objekte können zudem miteinander kommunizieren, indem sie Informationen empfangen oder senden. | ||
Objekte sind konkrete Ausprägungen ([[Instanz|Instanzen]]) von [[Klasse|Klassen]]. Eine Klasse definiert das gemeinsame Verhalten und die Eigenschaften aller ihrer Instanzen und fungiert somit als eine Art Bauplan. Der Prozess der Objekterzeugung aus einer Klasse wird als [[Instanziierung]] bezeichnet. | Objekte sind konkrete Ausprägungen ([[Instanz|Instanzen]]) von [[Klasse|Klassen]]. Eine Klasse definiert das gemeinsame Verhalten und die Eigenschaften aller ihrer [[Instanz|Instanzen]] und fungiert somit als eine Art Bauplan. Der Prozess der Objekterzeugung aus einer Klasse wird als [[Instanziierung]] bezeichnet. | ||
== Grundlegende Konzepte == | == Grundlegende Konzepte == | ||
Zeile 10: | Zeile 10: | ||
=== Abstraktion === | === Abstraktion === | ||
Eine [[Klasse]] ist eine [[Abstraktion]] eines realen oder konzeptionellen Gegenstands in einem spezifischen Kontext. Es existiert keine universell perfekte Klassen-Definition; sie ist stets abhängig vom Verwendungszweck. So besitzt beispielsweise eine Klasse „Auto“ in einem Fahrzeugmarkt-Kontext Attribute wie „Anzahl Vorbesitzer“ oder „Kennzeichen“, während dieselbe Klasse in einem Produktionskontext Attribute wie „Herstellungskosten“ oder „Arbeitszeit“ haben könnte. | Eine [[Klasse]] ist eine [[Abstraktion]] eines realen oder konzeptionellen Gegenstands in einem spezifischen Kontext. Es existiert keine universell perfekte Klassen-Definition; sie ist stets abhängig vom Verwendungszweck. So besitzt beispielsweise eine Klasse „Auto“ in einem Fahrzeugmarkt-Kontext [[Attribut|Attribute]] wie „Anzahl Vorbesitzer“ oder „Kennzeichen“, während dieselbe Klasse in einem Produktionskontext Attribute wie „Herstellungskosten“ oder „Arbeitszeit“ haben könnte. | ||
Die Entscheidung, ob eine Eigenschaft als einfaches Attribut oder als [[Beziehung]] zu einem anderen Objekt modelliert wird, ist kontextabhängig. So könnte der „Hersteller“ eines Autos sowohl als Textattribut als auch als Verweis auf ein Objekt einer eigenen Klasse „Hersteller“ dargestellt werden. Letzteres wird insbesondere dann notwendig, wenn für den Hersteller zusätzliche Eigenschaften (wie „Firmensitz“ oder „Mitarbeiterzahl“) abgebildet werden müssen. | Die Entscheidung, ob eine Eigenschaft als einfaches [[Attribut]] oder als [[Beziehung]] zu einem anderen Objekt modelliert wird, ist kontextabhängig. So könnte der „Hersteller“ eines Autos sowohl als Textattribut als auch als Verweis auf ein Objekt einer eigenen Klasse „Hersteller“ dargestellt werden. Letzteres wird insbesondere dann notwendig, wenn für den Hersteller zusätzliche Eigenschaften (wie „Firmensitz“ oder „Mitarbeiterzahl“) abgebildet werden müssen. | ||
=== Kapselung === | === Kapselung === | ||
Zeile 18: | Zeile 18: | ||
=== Vererbung === | === Vererbung === | ||
[[Vererbung|Vererbung]] ermöglicht es einer Klasse (der [[Subtyping|abgeleiteten Klasse]] oder Subklasse), Eigenschaften und Methoden einer anderen Klasse (der [[Oberklasse|Basisklasse]] oder Oberklasse) zu übernehmen. Die abgeleitete Klasse erbt somit die Struktur und das Verhalten der Basisklasse und kann diese um eigene Attribute und Methoden erweitern oder vorhandene überschreiben. Dies ermöglicht die Wiederverwendung von Code und die Bildung hierarchischer Klassenbeziehungen. | [[Vererbung|Vererbung]] ermöglicht es einer [[Klasse]] (der [[Subtyping|abgeleiteten Klasse]] oder Subklasse), Eigenschaften und Methoden einer anderen Klasse (der [[Oberklasse|Basisklasse]] oder Oberklasse) zu übernehmen. Die abgeleitete Klasse erbt somit die Struktur und das Verhalten der Basisklasse und kann diese um eigene [[Attribut|Attribute]] und [[Methode|Methoden]] erweitern oder vorhandene überschreiben. Dies ermöglicht die Wiederverwendung von Code und die Bildung hierarchischer Klassenbeziehungen. | ||
=== Polymorphie === | === Polymorphie === | ||
[[Polymorphie]] (Vielgestaltigkeit) ist eng mit der Vererbung verbunden. Sie ermöglicht es, dass Methoden, die in einer Basisklasse definiert sind, in abgeleiteten Klassen eine spezifischere Implementierung erhalten. Ein Methodenaufruf kann sich somit zur Laufzeit auf unterschiedliche Implementierungen derselben Methodensignatur beziehen, abhängig vom tatsächlichen Typ des Objekts. | [[Polymorphie]] (Vielgestaltigkeit) ist eng mit der [[Vererbung]] verbunden. Sie ermöglicht es, dass Methoden, die in einer Basisklasse definiert sind, in abgeleiteten [[Klassen]] eine spezifischere Implementierung erhalten. Ein Methodenaufruf kann sich somit zur [[Laufzeit]] auf unterschiedliche Implementierungen derselben [[Methodensignatur]] beziehen, abhängig vom tatsächlichen Typ des Objekts. | ||
[[Kategorie:Informatik]][[Kategorie:AHR_I_Informatik_LK]] [[Kategorie:FI]] | [[Kategorie:Informatik]][[Kategorie:AHR_I_Informatik_LK]] [[Kategorie:FI]] |
Version vom 6. September 2025, 07:54 Uhr
Einführung
Objektorientierung (kurz OO) bezeichnet ein Paradigma in der Softwareentwicklung, bei dem komplexe Systeme durch das Zusammenspiel kooperierender Objekte modelliert werden. Objektorientierung kommt vor allem in der objektorientierten Programmierung (z. B. mit Java) zum Einsatz, findet jedoch auch in vorgelagerten Phasen wie der objektorientierten Analyse und dem objektorientierten Entwurf (häufig in UML) Anwendung.
Ein Objekt wird durch definierte Attribute(Eigenschaften) und Methoden (Verhalten) charakterisiert. Objekte können zudem miteinander kommunizieren, indem sie Informationen empfangen oder senden.
Objekte sind konkrete Ausprägungen (Instanzen) von Klassen. Eine Klasse definiert das gemeinsame Verhalten und die Eigenschaften aller ihrer Instanzen und fungiert somit als eine Art Bauplan. Der Prozess der Objekterzeugung aus einer Klasse wird als Instanziierung bezeichnet.
Grundlegende Konzepte
Die Objektorientierung basiert auf vier fundamentalen Konzepten:
Abstraktion
Eine Klasse ist eine Abstraktion eines realen oder konzeptionellen Gegenstands in einem spezifischen Kontext. Es existiert keine universell perfekte Klassen-Definition; sie ist stets abhängig vom Verwendungszweck. So besitzt beispielsweise eine Klasse „Auto“ in einem Fahrzeugmarkt-Kontext Attribute wie „Anzahl Vorbesitzer“ oder „Kennzeichen“, während dieselbe Klasse in einem Produktionskontext Attribute wie „Herstellungskosten“ oder „Arbeitszeit“ haben könnte.
Die Entscheidung, ob eine Eigenschaft als einfaches Attribut oder als Beziehung zu einem anderen Objekt modelliert wird, ist kontextabhängig. So könnte der „Hersteller“ eines Autos sowohl als Textattribut als auch als Verweis auf ein Objekt einer eigenen Klasse „Hersteller“ dargestellt werden. Letzteres wird insbesondere dann notwendig, wenn für den Hersteller zusätzliche Eigenschaften (wie „Firmensitz“ oder „Mitarbeiterzahl“) abgebildet werden müssen.
Kapselung
Kapselung bezeichnet das Verbergen der Implementierungsdetails eines Objekts nach außen. Eine Klasse legt über Sichtbarkeiten fest, welche ihrer Attribute und Methoden von außen zugänglich sind. Nach außen sichtbare Elemente bilden die Schnittstelle des Objekts, während dessen innerer Zustand und die Implementierung der Methoden vor direkter Einflussnahme von außen geschützt sind.
Vererbung
Vererbung ermöglicht es einer Klasse (der abgeleiteten Klasse oder Subklasse), Eigenschaften und Methoden einer anderen Klasse (der Basisklasse oder Oberklasse) zu übernehmen. Die abgeleitete Klasse erbt somit die Struktur und das Verhalten der Basisklasse und kann diese um eigene Attribute und Methoden erweitern oder vorhandene überschreiben. Dies ermöglicht die Wiederverwendung von Code und die Bildung hierarchischer Klassenbeziehungen.
Polymorphie
Polymorphie (Vielgestaltigkeit) ist eng mit der Vererbung verbunden. Sie ermöglicht es, dass Methoden, die in einer Basisklasse definiert sind, in abgeleiteten Klassen eine spezifischere Implementierung erhalten. Ein Methodenaufruf kann sich somit zur Laufzeit auf unterschiedliche Implementierungen derselben Methodensignatur beziehen, abhängig vom tatsächlichen Typ des Objekts.