<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Fragile_Base_Class_Problem</id>
	<title>Fragile Base Class Problem - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Fragile_Base_Class_Problem"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Fragile_Base_Class_Problem&amp;action=history"/>
	<updated>2026-05-22T13:10:05Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Fragile_Base_Class_Problem&amp;diff=1618538&amp;oldid=prev</id>
		<title>imported&gt;Cactus26: rückgängig gemacht; nein, genau dann nicht. Ist das so unverständlich? Bitte melde Dich auf der Disk.</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Fragile_Base_Class_Problem&amp;diff=1618538&amp;oldid=prev"/>
		<updated>2017-01-15T09:21:15Z</updated>

		<summary type="html">&lt;p&gt;rückgängig gemacht; nein, genau dann nicht. Ist das so unverständlich? Bitte melde Dich auf der Disk.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Das &amp;#039;&amp;#039;&amp;#039;Fragile Base Class Problem&amp;#039;&amp;#039;&amp;#039; (FBC) ist ein Fehlverhalten von [[Software]], das bei der [[Objektorientierung|objektorientierten]] [[Softwareentwicklung]] beim [[Version (Software)|Versionswechsel]] der eingesetzten Basissoftware auftreten kann und mit dem [[Vererbung (Programmierung)|Vererbungsmechanismus]] zusammenhängt. Es kann auftreten, wenn diese Technik der Objektorientierung als Implementierungsvererbung zur Wiederverwendung von [[Quelltext]] eingesetzt wird.&lt;br /&gt;
&lt;br /&gt;
Die Entwickler einer „zerbrechlichen“ [[Basisklasse]], die keine genaue und vollständige Kenntnis über die Nutzung ihrer Implementierungen haben können, sind bei einer Änderung nicht in der Lage, die negativen Konsequenzen vorauszuahnen, die sich für spezialisierende [[Klasse (objektorientierte Programmierung)|Klassen]] hieraus ergeben. &lt;br /&gt;
&lt;br /&gt;
Die Gründe hierfür sind vielfältig, im Wesentlichen liegt ein Missverständnis zwischen den Entwicklern der Basisklasse und denen der verwendenden Spezialisierungen vor. Dies liegt zumeist daran, dass die Funktionalität der Basisklasse und auch das von den Spezialisierungen erwartete Verhalten nicht ausreichend präzise spezifiziert sind.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Ein einfaches Beispiel lässt sich mittels einer Basisklasse &amp;lt;code&amp;gt;BagOfInt&amp;lt;/code&amp;gt; veranschaulichen, also ein [[Container (Informatik)|Container]] zur Speicherung ganzer Zahlen. Diese Klasse beinhaltet folgende Funktionalität ([[Methode (Programmierung)|Methoden]]):&lt;br /&gt;
* &amp;lt;code&amp;gt;Add&amp;lt;/code&amp;gt;: Hinzufügen eines Elements (einer Zahl)&lt;br /&gt;
* &amp;lt;code&amp;gt;AddAll&amp;lt;/code&amp;gt;: Hinzufügen einer Menge von Zahlen (durch Übergabe eines anderen &amp;lt;code&amp;gt;BagOfInt&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;GetSize&amp;lt;/code&amp;gt;: Ermittlung der Anzahl der enthaltenen Zahlen&lt;br /&gt;
* &amp;lt;code&amp;gt;GetAt&amp;lt;/code&amp;gt;: Zugriff auf ein bestimmtes Element mittels eines Index&lt;br /&gt;
&lt;br /&gt;
Diese Klasse sei nun Bestandteil einer [[Klassenbibliothek]] und wird von einem Entwickler, der diese einsetzt, zu einer Klasse &amp;lt;code&amp;gt;TotalizingBagOfInt&amp;lt;/code&amp;gt; erweitert, also spezialisiert. Die [[Vererbung (Programmierung)|erbende]] Klasse hat die zusätzliche Eigenschaft, dass sie die Gesamtsumme aller in dem Container enthaltenen Zahlen mitführt. Der Entwickler erreicht dies durch [[Überschreiben (Programmierung)|Überschreiben]] der Methode &amp;lt;code&amp;gt;Add&amp;lt;/code&amp;gt;, in der die Gesamtsumme ständig aktualisiert wird.&lt;br /&gt;
&lt;br /&gt;
In einer neueren Version entscheidet sich nun der Entwickler der Basisklasse, die Methode &amp;lt;code&amp;gt;AddAll&amp;lt;/code&amp;gt; nicht mehr wie bisher auf die Methode &amp;lt;code&amp;gt;Add&amp;lt;/code&amp;gt; derselben Klasse zurückzuspielen, sondern die Methode aus Optimierungsgründen anderweitig zu implementieren.&lt;br /&gt;
&lt;br /&gt;
Nach Austausch der Version der Basisklasse funktioniert nun die spezialisierende Klasse &amp;lt;code&amp;gt;TotalizingBagOfInt&amp;lt;/code&amp;gt; nicht mehr, wenn die Methode &amp;lt;code&amp;gt;AddAll&amp;lt;/code&amp;gt; verwendet wird. Der Entwickler dieser Klasse müsste nun diese Methode auch überschreiben. In der Ursprungsversion tat er das nicht, beispielsweise weil er durch Ausprobieren erkannt hatte, dass es nicht nötig war.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Leonid Mikhajlov, Emil Sekerinski: [http://www.ifs.uni-linz.ac.at/~ecoop/cd/papers/1445/14450355.pdf &amp;#039;&amp;#039;A Study of The Fragile Base Class Problem&amp;#039;&amp;#039;] (PDF; 355&amp;amp;nbsp;kB). In: &amp;#039;&amp;#039;Proceedings of the 12th European Conference on Object-Oriented Programming&amp;#039;&amp;#039;, Seite 355–382, 1998, ISBN 3-540-64737-6&lt;br /&gt;
* Bernhard Lahres, Gregor Rayman: &amp;#039;&amp;#039;Praxisbuch Objektorientierung. Von den Grundlagen zur Umsetzung&amp;#039;&amp;#039;. Galileo Press, Bonn 2006, ISBN 3-89842-624-6&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Objektorientierte Programmierung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Cactus26</name></author>
	</entry>
</feed>