dbo:abstract |
Das Fragile Base Class Problem (FBC) ist ein Fehlverhalten von Software, das bei der objektorientierten Softwareentwicklung beim Versionswechsel der eingesetzten Basissoftware auftreten kann und mit dem Vererbungsmechanismus zusammenhängt. Es kann auftreten, wenn diese Technik der Objektorientierung als Implementierungsvererbung zur Wiederverwendung von Quelltext eingesetzt wird. 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 Klassen hieraus ergeben. 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. (de) The fragile base class problem is a fundamental architectural problem of object-oriented programming systems where base classes (superclasses) are considered "fragile" because seemingly safe modifications to a base class, when inherited by the derived classes, may cause the derived classes to malfunction. The programmer cannot determine whether a base class change is safe simply by examining in isolation the methods of the base class. One possible solution is to make instance variables private to their defining class and force subclasses to use accessors to modify superclass states. A language could also make it so that subclasses can control which inherited methods are exposed publicly. These changes prevent subclasses from relying on implementation details of superclasses and allow subclasses to expose only those superclass methods that are applicable to themselves. Another alternative solution could be to have an interface instead of superclass. The fragile base class problem has been blamed on open recursion (dynamic dispatch of methods on this), with the suggestion that invoking methods on this default to closed recursion (static dispatch, early binding) rather than open recursion (dynamic dispatch, late binding), only using open recursion when it is specifically requested; external calls (not using this) would be dynamically dispatched as usual. (en) Хрупкий базовый класс — фундаментальная проблема объектно-ориентированного программирования. (ru) |
dbo:wikiPageExternalLink |
https://www.infoworld.com/article/2073649/why-extends-is-evil.html http://www.cas.mcmaster.ca/~emil/Publications_files/MikhajlovSekerinski98FragileBaseClassProblem.pdf |
dbo:wikiPageID |
316681 (xsd:integer) |
dbo:wikiPageLength |
6787 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID |
1107383374 (xsd:integer) |
dbo:wikiPageWikiLink |
dbr:Scala_(programming_language) dbr:Joshua_Bloch dbr:Julia_(programming_language) dbr:Interface_(object-oriented_programming) dbr:Component_Pascal dbr:Object-oriented_programming dbr:Subclass_(computer_science) dbr:Stack_overflow dbr:C++ dbr:C_Sharp_(programming_language) dbr:Lecture_Notes_in_Computer_Science dbr:D_(programming_language) dbr:Fragile_binary_interface_problem dbr:Java_(programming_language) dbr:Java_programming_language dbc:Class_(computer_programming) dbr:Superclass_(computer_science) dbr:Inheritance_(object-oriented_programming) dbr:Kotlin_(programming_language) dbr:Objective-C dbr:Open_recursion dbr:Software_brittleness dbr:Multiple_dispatch dbr:JavaWorld dbr:Virtual_inheritance dbr:VB.NET dbr:Implementation_inheritance dbr:Infinite_recursion dbr:Inheritance_semantics |
dbp:wikiPageUsesTemplate |
dbt:About dbt:Cite_conference dbt:Cite_web dbt:More_footnotes dbt:Reflist dbt:Short_description dbt:QID |
dct:subject |
dbc:Class_(computer_programming) |
gold:hypernym |
dbr:Problem |
rdf:type |
dbo:Disease |
rdfs:comment |
Хрупкий базовый класс — фундаментальная проблема объектно-ориентированного программирования. (ru) The fragile base class problem is a fundamental architectural problem of object-oriented programming systems where base classes (superclasses) are considered "fragile" because seemingly safe modifications to a base class, when inherited by the derived classes, may cause the derived classes to malfunction. The programmer cannot determine whether a base class change is safe simply by examining in isolation the methods of the base class. Another alternative solution could be to have an interface instead of superclass. (en) Das Fragile Base Class Problem (FBC) ist ein Fehlverhalten von Software, das bei der objektorientierten Softwareentwicklung beim Versionswechsel der eingesetzten Basissoftware auftreten kann und mit dem Vererbungsmechanismus zusammenhängt. Es kann auftreten, wenn diese Technik der Objektorientierung als Implementierungsvererbung zur Wiederverwendung von Quelltext eingesetzt wird. (de) |
rdfs:label |
Fragile Base Class Problem (de) Fragile base class (en) Хрупкий базовый класс (ru) |
owl:sameAs |
freebase:Fragile base class wikidata:Fragile base class dbpedia-de:Fragile base class dbpedia-ru:Fragile base class https://global.dbpedia.org/id/Smph |
prov:wasDerivedFrom |
wikipedia-en:Fragile_base_class?oldid=1107383374&ns=0 |
foaf:isPrimaryTopicOf |
wikipedia-en:Fragile_base_class |
is dbo:wikiPageDisambiguates of |
dbr:FBC |
is dbo:wikiPageRedirects of |
dbr:Brittle_base_class dbr:Fragile_base_class_problem |
is dbo:wikiPageWikiLink of |
dbr:FBC dbr:Non-virtual_interface_pattern dbr:Index_of_object-oriented_programming_articles dbr:Glossary_of_computer_science dbr:Forwarding_(object-oriented_programming) dbr:Fragile_binary_interface_problem dbr:This_(computer_programming) dbr:Inheritance_(object-oriented_programming) dbr:Brittle_base_class dbr:IBM_System_Object_Model dbr:NPAPI dbr:Fragile_base_class_problem |
is foaf:primaryTopic of |
wikipedia-en:Fragile_base_class |