<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Objektorientierung</id>
	<title>Objektorientierung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Objektorientierung"/>
	<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Objektorientierung&amp;action=history"/>
	<updated>2026-04-07T13:05:45Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Demo Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://demowiki.knowlus.com/index.php?title=Objektorientierung&amp;diff=13582&amp;oldid=prev</id>
		<title>imported&gt;UnlimitedWiki: Vereinfachte Sichtweise der realen Welt wurde ersetzt durch Abstraktion; der Begriff ist kürzer und aussagekräftiger.</title>
		<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Objektorientierung&amp;diff=13582&amp;oldid=prev"/>
		<updated>2023-06-25T16:54:15Z</updated>

		<summary type="html">&lt;p&gt;Vereinfachte Sichtweise der realen Welt wurde ersetzt durch Abstraktion; der Begriff ist kürzer und aussagekräftiger.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Belege fehlen}}&lt;br /&gt;
Unter &amp;#039;&amp;#039;&amp;#039;Objektorientierung&amp;#039;&amp;#039;&amp;#039; (kurz &amp;#039;&amp;#039;&amp;#039;OO&amp;#039;&amp;#039;&amp;#039;) versteht man in der Entwicklung von Software eine Sichtweise auf komplexe [[System]]e, bei der ein System durch das Zusammenspiel kooperierender [[Objekt (Programmierung)|Objekte]] beschrieben wird. Der Begriff &amp;#039;&amp;#039;Objekt&amp;#039;&amp;#039; ist dabei unscharf gefasst; wichtig an einem Objekt ist nur, dass ihm bestimmte [[Attribut (Programmierung)|Attribute]] (&amp;#039;&amp;#039;Eigenschaften&amp;#039;&amp;#039;) und [[Methode (Programmierung)|Methoden]] zugeordnet sind und dass es in der Lage ist, von anderen Objekten Nachrichten zu empfangen beziehungsweise an diese zu senden. Dabei muss ein Objekt nicht gegenständlich sein. Entscheidend ist, dass bei dem jeweiligen Objektbegriff eine sinnvolle und allgemein übliche Zuordnung möglich ist.&lt;br /&gt;
Ergänzt wird dies durch das Konzept der [[Klasse (Objektorientierung)|Klasse]], in der Objekte aufgrund ähnlicher Eigenschaften zusammengefasst werden. Ein Objekt wird im Programmcode als &amp;#039;&amp;#039;Instanz&amp;#039;&amp;#039; beziehungsweise &amp;#039;&amp;#039;Inkarnation&amp;#039;&amp;#039; einer Klasse definiert.&lt;br /&gt;
&lt;br /&gt;
Objektorientierung wird hauptsächlich im Rahmen der [[Objektorientierte Programmierung|objektorientierten Programmierung]] verwendet, um die [[Komplexität]] der entstehenden Programme zu verringern. Der Begriff existiert jedoch auch für andere, der Programmierung vorgelagerte Phasen der Softwareentwicklung, wie die [[Objektorientierte Analyse und Design|objektorientierte Analyse und objektorientiertes Design]] ([[Synonym]] &amp;#039;&amp;#039;objektorientierter Entwurf&amp;#039;&amp;#039;) von Software. Die Konzepte der Objektorientierung lassen sich zudem auf [[Persistenz (Informatik)|persistente]] Daten anwenden. Dabei spricht man von [[Objektdatenbank]]en.&lt;br /&gt;
&lt;br /&gt;
In Programmiersprachen, die nicht auf Objektorientierung eingerichtet sind, werden Daten und Programmteile bewusst getrennt; sie müssen separat deklariert werden. Im Vergleich hierzu erhebt das objektorientierte [[Programmierparadigma]] den Anspruch, Daten und zugehörige Programmteile zu einer Einheit zusammenzufassen und somit Organisationsstrukturen aus der realen Welt besser nachzubilden.&lt;br /&gt;
&lt;br /&gt;
Fast alle [[Höhere Programmiersprache|höheren Programmiersprachen]] unterstützen objektorientierte Programmierung.&lt;br /&gt;
&lt;br /&gt;
== Vererbung ==&lt;br /&gt;
In der Regel ist in objektorientierten Ansätzen das Konzept der [[Vererbung (Programmierung)|Vererbung]] zu finden, bei dem Eigenschaften und Methoden zwischen Klassen hierarchisch ausgetauscht beziehungsweise ergänzt werden können.&lt;br /&gt;
&lt;br /&gt;
Vererbung bedeutet vereinfacht, dass eine abgeleitete Klasse die Methoden und Attribute der [[Basisklasse]] ebenfalls besitzt, also „erbt“. Somit kann die abgeleitete Klasse auch darauf zugreifen. Neue Arten von Objekten können auf der Basis bereits vorhandener Objekt-Definitionen festgelegt werden. Es können neue Bestandteile hinzugenommen werden oder vorhandene überlagert werden.&lt;br /&gt;
&lt;br /&gt;
Seltener ist das Konzept der [[Mehrfachvererbung]], welches das nichthierarchische Austauschen von Eigenschaften erlaubt.&lt;br /&gt;
&lt;br /&gt;
Wird keine Vererbung zugelassen, so spricht man zur Unterscheidung oft auch von &amp;#039;&amp;#039;Objektbasierung&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Polymorphie ==&lt;br /&gt;
Das Konzept der [[Polymorphie (Programmierung)|Polymorphie]] (Vielgestaltigkeit) bewirkt, dass Eigenschaften oder Methoden einer Klasse von Objekten referenziert werden können, ohne dass die konkrete Ausprägung in einem angesprochenen Objekt bekannt sein muss.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommt mit der [[Aggregation (Informatik)|Aggregation]] die Unterscheidung zwischen dem Ganzen und seinen Teilen. Jedes Objekt im System kann als ein abstraktes [[Modell]] eines &amp;#039;&amp;#039;Akteurs&amp;#039;&amp;#039; betrachtet werden, der Aufträge erledigen, seinen Zustand berichten und ändern und mit den anderen Objekten im System kommunizieren kann, ohne offenlegen zu müssen, wie diese Fähigkeiten implementiert sind (vgl. [[abstrakter Datentyp]], ADT).&lt;br /&gt;
&lt;br /&gt;
== Kapselung ==&lt;br /&gt;
Die [[Datenkapselung (Programmierung)|Datenkapselung]] erlaubt das Abschotten der internen Implementierung vor direktem externen Zugriff. Dieser darf nur über eine explizit definierte Schnittstelle erfolgen, um ihn unabhängig von den Implementierungsdetails zu machen.&lt;br /&gt;
&lt;br /&gt;
== Abstraktion ==&lt;br /&gt;
Eine [[Klassifizierung]] ist im Allgemeinen eine Einschränkung/Vereinfachung der realen Welt in einem ganz speziellen Kontext. Es wird also niemals „die“ Klassifizierung geben. Sie ist immer abhängig vom Ziel, das mit der Klassifikation erreicht werden soll. Während beispielsweise eine Klasse „Auto“ im Kontext eines Autobauers möglicherweise Attribute wie Räder und Farbe besitzen wird und seine Bauteile (in Form von Attributen oder Beziehungen) kennen wird, hat eine Klasse „Auto“ im Kontext eines Händlers Attribute wie Produktnummer, Preis, Verbrauch und Erstzulassungsdatum. Im Kontext einer Zulassungsstelle wird es Attribute wie Kennzeichen, zulässiges Maximalgewicht und den Halter geben.&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus ist nicht immer eindeutig und objektiv entscheidbar, ob eine Eigenschaft in Form eines Attributes des Objektes oder in Form einer Beziehung zu einem anderen Objekt dargestellt werden sollte. So kann etwa die Eigenschaft „Farbe“ des Autos aus obigem Beispiel entweder als Textattribut (zum Darstellen einer textuellen Farbbeschreibung, etwa einer [[RAL-Farbe|RAL]]- oder [[DIN 6164|DIN-Farbnummer]]) oder als Beziehung zur Klasse „Farbe“ modelliert werden. Letzteres ist dann sinnvoll, wenn für die Klasse Farbe wiederum spezielle Eigenschaften modelliert werden sollen. Darüber hinaus kann es notwendig werden, dass nicht für das ganze Auto die Eigenschaft Farbe modelliert wird, sondern für die einzelnen Bauteile (etwa, weil die Farben von Stoßfänger, Spiegel und Motorhaube möglicherweise nicht identisch zur Karosseriefarbe sein müssen).&lt;br /&gt;
&lt;br /&gt;
Gerade dieser letzte Aspekt ist oftmals vom Zeitpunkt der Modellierung abhängig: Während der Hersteller heute das ganze Auto mit einer einzigen Farbe assoziiert, möchte er vielleicht morgen tatsächlich jedes Bauteil mit einer eigenen Farbe versehen. Die Vereinfachung, die heute noch zur Lösung eines Problems ausreichend ist, ist morgen möglicherweise nicht mehr ausreichend.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Liste objektorientierter Programmiersprachen]]&lt;br /&gt;
* [[Komponentenbasierte Entwicklung]]&lt;br /&gt;
* [[Prinzipien objektorientierten Designs]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Objektorientierte Programmierung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;UnlimitedWiki</name></author>
	</entry>
</feed>