{"id":313,"date":"2010-11-23T17:04:40","date_gmt":"2010-11-23T16:04:40","guid":{"rendered":"https:\/\/d-mueller.de\/blog\/?p=313"},"modified":"2010-11-24T01:54:12","modified_gmt":"2010-11-24T00:54:12","slug":"grundprinzipien-der-objektorientierten-programmierung","status":"publish","type":"post","link":"https:\/\/d-mueller.de\/blog\/grundprinzipien-der-objektorientierten-programmierung\/","title":{"rendered":"Grundprinzipien der objektorientierten Programmierung"},"content":{"rendered":"<h3>Loose Coupling &#8211; Schwache Kopplung<\/h3>\n<ul>\n<li>Definiert, wie sehr Systembesstandteile voneinander abh\u00e4ngen<\/li>\n<li>Klassen sollten so strukturiert sein, dass sie auf m\u00f6glichst wenige andere Klassen angewiesen sind, um funktionieren zu k\u00f6nnen<\/li>\n<li>Erh\u00f6ht Wiederverwendbarkeit der Klassen enorm!<\/li>\n<\/ul>\n<h3>sinnvolle Abh\u00e4ngigkeiten<\/h3>\n<ul>\n<li>Stark zusammengeh\u00f6rende Code-Teile sollten zusammengefasst werden<\/li>\n<li>Nicht zusammenh\u00e4ngende Code-Teile sollten ausgelagert werden (don&#8217;t do too much!)<\/li>\n<li>Ver\u00e4nderungen einer Klasse sollten im Optimalfall keine \u00c4nderung an weiteren Klassen hervorrufen<\/li>\n<\/ul>\n<h3>Information Hiding &#8211; Geheimnisprinzip<\/h3>\n<ul>\n<li>Jede Klasse gibt nur das n\u00f6tigste nach au\u00dfen und &#8222;wei\u00df&#8220; selbst auch nur das, was sie zum funktionieren wissen muss<\/li>\n<li>Keine Interna werden nach au\u00dfen getragen. Ich muss nicht wissen, dass intern ein Stack als Datenstruktur verwendet wird, um die Klasse zu benutzen<\/li>\n<li>\u00c4nderungen innerhalb der Klasse selbst sollten nach au\u00dfen nicht sichtbar sein, da andere Klassen nur das n\u00f6tigste von ihr kennen<\/li>\n<li>Spielt auf sinnvolle Verwendung von public \/ private \/ protected an<\/li>\n<\/ul>\n<h3>Homogenit\u00e4t<\/h3>\n<ul>\n<li>Vergleichbare Probleme sollten mit vergleichbarer Komplexit\u00e4t gel\u00f6st werden<\/li>\n<li>Wiederverwendung von bereits bestehenden L\u00f6sungen soweit wie m\u00f6glich<\/li>\n<li>Leitlinie: &#8222;Erwartungshaltung&#8220; anderer Teammitglieder sollte erf\u00fcllt werden, was den Umfang der Realisierung einer Klasse angeht<\/li>\n<\/ul>\n<h3>Don&#8217;t repeat yourself &#8211; Redundanzfreiheit<\/h3>\n<ul>\n<li>Jede Funktionalit\u00e4t ist an genau einer Stelle vorhanden und wird &#8211; bei Bedarf &#8211; von anderen Systembestandteilen verwendet (Don&#8217;t reinvent the wheel)<\/li>\n<li>Sollte Code mehrfach verwendet worden sein (Copy &#038; Paste aus Faulheit), wird eine neue Funktion daraus erschaffen, die dann von allen Teilen aus aufgerufen wird<\/li>\n<li>Vorteil: Bei einem Fehler muss nur an einer Stelle korrigiert werden und alle anderen, davon abh\u00e4ngigen Teile sind automatisch &#8222;gefixt&#8220;<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Loose Coupling &#8211; Schwache Kopplung Definiert, wie sehr Systembesstandteile voneinander abh\u00e4ngen Klassen sollten so strukturiert sein, dass sie auf m\u00f6glichst wenige andere Klassen angewiesen sind, um funktionieren zu k\u00f6nnen Erh\u00f6ht Wiederverwendbarkeit der Klassen enorm! sinnvolle Abh\u00e4ngigkeiten Stark zusammengeh\u00f6rende Code-Teile sollten &hellip; <a href=\"https:\/\/d-mueller.de\/blog\/grundprinzipien-der-objektorientierten-programmierung\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,3],"tags":[],"class_list":["post-313","post","type-post","status-publish","format-standard","hentry","category-software-engineering","category-webdev"],"_links":{"self":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/313","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/comments?post=313"}],"version-history":[{"count":0,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/313\/revisions"}],"wp:attachment":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/media?parent=313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/categories?post=313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/tags?post=313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}