{"id":34855,"date":"2019-10-31T22:00:51","date_gmt":"2019-10-31T19:00:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\/"},"modified":"2019-10-31T22:00:51","modified_gmt":"2019-10-31T19:00:51","slug":"10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","title":{"rendered":"10 Prinzipien der objektorientierten Programmierung, die jeder Entwickler kennen sollte","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"10 Prinzipien der objektorientierten Programmierung, die jeder Entwickler kennen sollte\" src=\"\/wp-content\/uploads\/2019\/06\/129b610bc2576f8d753dfa72395f89f6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nIch treffe ziemlich oft auf Entwickler, die noch nie von den SOLID-Prinzipien geh\u00f6rt haben (wir <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/442928\/\">haben ausf\u00fchrlich dar\u00fcber hier berichtet<\/a><\/noindex>. \u2014 Anm. d. Red.) oder von objektorientierter Programmierung (OOP), oder sie haben davon geh\u00f6rt, verwenden sie aber nicht in der Praxis. In diesem Artikel werden die Vorteile der OOP-Prinzipien beschrieben, die Entwicklern in ihrer t\u00e4glichen Arbeit helfen. Einige davon sind gut bekannt, andere weniger, sodass der Artikel sowohl f\u00fcr Neulinge als auch f\u00fcr erfahrene Programmierer n\u00fctzlich sein wird.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Wir erinnern daran:<\/b> <i>f\u00fcr alle Leser von \u201eHabr\u201c \u2014 10.000 Rubel Rabatt bei der Buchung eines beliebigen Skillbox-Kurses mit dem Promo-Code \u201eHabr\u201c.<\/i><\/p>\n<p><b>Skillbox empfiehlt:<\/b> Online-Kurs <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/java\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=JAVDEV&amp;utm_content=articles&amp;utm_term=10oop\">\u201eJava-Entwickler\u201c<\/a><\/noindex>.<\/p><\/blockquote>\n<p><\/p>\n<h3>DRY (Don\u2019t Repeat Yourself)<\/h3>\n<p>\nEin ziemlich einfaches Prinzip, dessen Wesensart aus dem Namen klar ist: \u201eWiederhole dich nicht\u201c. F\u00fcr Programmierer bedeutet dies, dass dualer Code vermieden werden sollte, und auch die M\u00f6glichkeit gegeben sein muss, Abstraktionen im Arbeitsprozess zu nutzen.<\/p>\n<p>Wenn im Code zwei sich wiederholende Abschnitte vorhanden sind, sollten diese in einer Methode zusammengefasst werden. Wenn ein festgelegter Wert mehr als einmal verwendet wird, sollte er in eine \u00f6ffentliche Konstante umgewandelt werden.<\/p>\n<p>Das ist notwendig, um den Code zu vereinfachen und seine Wartung zu erleichtern, was das Hauptziel der OOP ist. Man sollte jedoch nicht \u00fcbertreiben, da derselbe Code nicht sowohl mit OrderId als auch mit SSN bestehen kann.<\/p>\n<h3>Kapselung von \u00c4nderungen<\/h3>\n<p>\nSoftwareprodukte der meisten Unternehmen entwickeln sich st\u00e4ndig weiter. Das bedeutet, dass \u00c4nderungen am Code vorgenommen werden m\u00fcssen und er gewartet werden muss. Man kann sich das Leben durch Kapselung erleichtern. Dies erm\u00f6glicht eine effizientere Testung und Wartung des bestehenden Codes. <noindex><a rel=\"nofollow\" href=\"http:\/\/javarevisited.blogspot.com\/2011\/12\/factory-design-pattern-java-example.html\">Hier ist eines der Beispiele<\/a><\/noindex>.<\/p>\n<p>Wenn Sie in Java programmieren, dann <noindex><a rel=\"nofollow\" href=\"http:\/\/javarevisited.blogspot.sg\/2012\/03\/private-in-java-why-should-you-always.html#axzz559dyoLSA\">weiser Methoden und Variablen standardm\u00e4\u00dfig private zu<\/a><\/noindex>.<\/p>\n<h3>Prinzip der Offenheit\/Abgeschlossenheit<\/h3>\n<p>\nDieses Prinzip l\u00e4sst sich leicht merken, wenn man die folgende Aussage liest: \u201eSoftwareeinheiten (Klassen, Module, Funktionen usw.) sollten f\u00fcr Erweiterungen offen, aber f\u00fcr \u00c4nderungen geschlossen sein.\u201c Praktisch bedeutet dies, dass sie es erm\u00f6glichen sollten, ihr Verhalten zu \u00e4ndern, ohne den Quellcode zu ver\u00e4ndern.<\/p>\n<p>Das Prinzip ist wichtig, wenn \u00c4nderungen im Quellcode eine \u00dcberpr\u00fcfung, modulare Tests und andere Verfahren erfordern. Code, der dem Open\/Closed-Prinzip entspricht, wird beim Erweitern nicht ver\u00e4ndert, weshalb es mit ihm viel weniger Probleme gibt.<\/p>\n<p>Hier ist ein Beispiel f\u00fcr Code, der dieses Prinzip verletzt.<\/p>\n<p><img decoding=\"async\" alt=\"10 Prinzipien der objektorientierten Programmierung, die jeder Entwickler kennen sollte\" src=\"\/wp-content\/uploads\/2019\/06\/85d53972bef28713087acc428deebc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nWenn etwas daran ge\u00e4ndert werden muss, wird dies viel Zeit in Anspruch nehmen, da alle Codeabschnitte, die mit dem relevanten Fragment verbunden sind, ge\u00e4ndert werden m\u00fcssen.<\/p>\n<p>\u00dcbrigens ist das Open\/Closed-Prinzip eines der SOLID-Prinzipien.<\/p>\n<h3>Prinzip der einzelnen Verantwortung (SRP)<\/h3>\n<p>\nEin weiteres Prinzip aus dem SOLID-Set. Es besagt, dass \u201ees nur einen Grund gibt, der zu einer \u00c4nderung der Klasse f\u00fchrt\u201c. Eine Klasse erf\u00fcllt nur eine Aufgabe. Sie kann mehrere Methoden haben, die jedoch alle nur zur L\u00f6sung einer allgemeinen Aufgabe dienen. Alle Methoden und Eigenschaften sollten nur diesem Zweck dienen. <\/p>\n<p><img decoding=\"async\" alt=\"10 Prinzipien der objektorientierten Programmierung, die jeder Entwickler kennen sollte\" src=\"\/wp-content\/uploads\/2019\/06\/7332d424f27e091192cbbb8dacb13d01.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nDer Wert dieses Prinzips liegt darin, dass es die Verbindung zwischen einer einzelnen Softwarekomponente und dem Code schw\u00e4cht. Wenn mehr als eine Funktionalit\u00e4t in eine Klasse eingef\u00fchrt wird, wird eine Verbindung zwischen zwei Funktionen hergestellt. Wenn man also eine von ihnen \u00e4ndert, besteht eine hohe Wahrscheinlichkeit, dass man die zweite, die mit der ersten verbunden ist, besch\u00e4digt. Das bedeutet, dass die Testzyklen erh\u00f6ht werden m\u00fcssen, um alle Probleme im Voraus zu erkennen.<\/p>\n<h3>Prinzip der Abh\u00e4ngigkeitsinversion (DIP)<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 Prinzipien der objektorientierten Programmierung, die jeder Entwickler kennen sollte\" src=\"\/wp-content\/uploads\/2019\/06\/eb1e09cceee028f88fa83fd8d30a189a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nDas oben gezeigte Codebeispiel zeigt, dass der AppManager von EventLogWriter abh\u00e4ngt, der wiederum eng mit dem AppManager verbunden ist. Wenn ein anderer Weg ben\u00f6tigt wird, um Benachrichtigungen anzuzeigen, sei es Push, SMS oder E-Mail, muss die Klasse AppManager ge\u00e4ndert werden.<\/p>\n<p>Das Problem kann mit Hilfe des DIP gel\u00f6st werden. Statt den AppManager zu verwenden, fordern wir den EventLogWriter an, der \u00fcber ein Framework eingef\u00fchrt wird.<\/p>\n<p>DIP erm\u00f6glicht es, einzelne Module problemlos durch andere zu ersetzen, indem das Abh\u00e4ngigkeitsmodul ge\u00e4ndert wird. Dies erm\u00f6glicht es, ein Modul zu \u00e4ndern, ohne die anderen zu beeinflussen.<\/p>\n<h3>Komposition statt Vererbung<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 Prinzipien der objektorientierten Programmierung, die jeder Entwickler kennen sollte\" src=\"\/wp-content\/uploads\/2019\/06\/b97ebf8c423f415298dc10ae4e14fe89.jpg\" style=\"display:block;margin: 0 auto;\" \/>Es gibt zwei Hauptwege, um Code wiederzuverwenden: Vererbung und Komposition, wobei jede ihre eigenen Vor- und Nachteile hat. In der Regel wird der zweiten der Vorzug gegeben, da er flexibler ist.<\/p>\n<p>Die Komposition erm\u00f6glicht es, das Verhalten einer Klasse zur Laufzeit durch das Setzen ihrer Eigenschaften zu \u00e4ndern. Bei der Implementierung von Schnittstellen wird Polymorphismus verwendet, der eine flexiblere Implementierung bietet.<\/p>\n<p>Selbst in \u201eEffective Java\u201c von Joshua Bloch wird empfohlen, die Komposition dem Vererben vorzuziehen.<\/p>\n<h3>Das Liskov-Substitutionsprinzip (LSP)<\/h3>\n<p>\nEin weiteres Prinzip aus dem SOLID-Werkzeugkasten. Es besagt, dass Subtypen durch ihren Supertyp ersetzt werden k\u00f6nnen. Das hei\u00dft, Methoden und Funktionen, die mit der Superklasse arbeiten, sollten auch problemlos mit ihren Unterklassen funktionieren.<\/p>\n<p>Das LSP h\u00e4ngt sowohl mit dem Prinzip der individuellen Verantwortung als auch mit dem Prinzip der Trennung der Verantwortlichkeiten zusammen. Wenn eine Klasse mehr Funktionalit\u00e4t bietet als die Unterklasse, wird diese einige Funktionen nicht unterst\u00fctzen, wodurch dieses Prinzip verletzt wird.<\/p>\n<p>Hier ist ein Codeabschnitt, der gegen das LSP verst\u00f6\u00dft.<\/p>\n<p><img decoding=\"async\" alt=\"10 Prinzipien der objektorientierten Programmierung, die jeder Entwickler kennen sollte\" src=\"\/wp-content\/uploads\/2019\/06\/8c412a2cb4d1f7e53f69afc4ef46a967.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nDie Methode area(Rectangle r) berechnet die Fl\u00e4che des Rechtecks. Das Programm wird nach der Ausf\u00fchrung von Square abst\u00fcrzen, da Square hier kein Rechteck ist. Laut LSP m\u00fcssen Funktionen, die Referenzen auf Basisklassen verwenden, in der Lage sein, auch Objekte von abgeleiteten Klassen ohne zus\u00e4tzliche Anweisungen zu verwenden.<\/p>\n<p>Dieses Prinzip, das eine spezifische Definition des Subtyps ist, wurde 1987 von Barbara Liskov in einem Hauptvortrag auf einer Konferenz mit dem Titel \u201eDatenabstraktion und Hierarchie\u201c vorgeschlagen \u2013 daher der Name.<\/p>\n<h3>Das Prinzip der Trennung der Schnittstelle (ISP)<\/h3>\n<p>\nEin weiteres SOLID-Prinzip. Es besagt, dass eine Schnittstelle, die nicht verwendet wird, nicht implementiert werden sollte. Dieses Prinzip zu befolgen hilft, das System flexibel zu halten und f\u00fcr Refactoring geeignet, wenn \u00c4nderungen an der Logik vorgenommen werden.<\/p>\n<p>Diese Situation tritt h\u00e4ufig auf, wenn eine Schnittstelle mehrere Funktionalit\u00e4ten enth\u00e4lt und der Kunde nur eine davon ben\u00f6tigt.<\/p>\n<p>Da das Schreiben einer Schnittstelle eine komplexe Aufgabe ist, wird es ein Problem sein, sie nach Abschluss der Arbeit zu \u00e4ndern, ohne etwas zu verletzen.<\/p>\n<p>Der Vorteil des ISP-Prinzips in Java ist, dass zuerst alle Methoden implementiert werden m\u00fcssen, bevor sie von Klassen verwendet werden k\u00f6nnen. Daher erm\u00f6glicht das Prinzip die Reduzierung der Anzahl der Methoden.<\/p>\n<p><img decoding=\"async\" alt=\"10 Prinzipien der objektorientierten Programmierung, die jeder Entwickler kennen sollte\" src=\"\/wp-content\/uploads\/2019\/06\/ea3e314e9f7766e8c1d3ce46d0dcdc09.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Programmierung f\u00fcr Schnittstellen und nicht f\u00fcr Implementierungen<\/h3>\n<p>\nHier ist alles klar aus dem Titel. Die Anwendung dieses Prinzips f\u00fchrt zur Schaffung flexibler Codes, die mit jeder neuen Implementierung der Schnittstelle arbeiten k\u00f6nnen.<\/p>\n<p>Es sollte der Schnittstellentyp f\u00fcr Variablen, R\u00fcckgabetypen oder den Argumenttyp der Methode verwendet werden. Beispiel \u2014 Verwendung von SuperClass anstelle von SubClass.<\/p>\n<p>Das hei\u00dft:<\/p>\n<p><i>List numbers = getNumbers();<\/i><\/p>\n<p>Nicht:<\/p>\n<p><i>ArrayList numbers = getNumbers();<\/i><\/p>\n<p>Hier ist die praktische Umsetzung dessen, was oben erw\u00e4hnt wurde.<\/p>\n<p><img decoding=\"async\" alt=\"10 Prinzipien der objektorientierten Programmierung, die jeder Entwickler kennen sollte\" src=\"\/wp-content\/uploads\/2019\/06\/8bbcd8342a9870bc28272f0550a8664c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Das Delegierungsprinzip<\/h3>\n<p>\nEin verbreitetes Beispiel sind die Methoden equals() und hashCode() in Java. Wenn zwei Objekte verglichen werden m\u00fcssen, wird diese Aktion der entsprechenden Klasse und nicht dem Client \u00fcberlassen.<\/p>\n<p>Der Vorteil des Prinzips ist die Vermeidung von Code-Duplikation und die relativ einfache \u00c4nderung des Verhaltens. Es ist auch auf die Ereignisdelegierung anwendbar.<\/p>\n<p><img decoding=\"async\" alt=\"10 Prinzipien der objektorientierten Programmierung, die jeder Entwickler kennen sollte\" src=\"\/wp-content\/uploads\/2019\/06\/c9ca40cb27e288e5e31ebfba76fa36a5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nAlle diese Prinzipien erm\u00f6glichen es, flexibleren, sch\u00f6neren und zuverl\u00e4ssigeren Code mit hoher Koh\u00e4sion und niedriger Kopplung zu schreiben. Nat\u00fcrlich ist Theorie gut, aber damit der Entwickler das erworbene Wissen tats\u00e4chlich anwendet, ist Praxis erforderlich. Der n\u00e4chste Schritt nach dem Verst\u00e4ndnis der OOP-Prinzipien k\u00f6nnte das Studium von Designmustern zur L\u00f6sung allgemeiner Softwareentwicklungsprobleme sein.<\/p>\n<blockquote><p><b>Skillbox empfiehlt:<\/b><\/p>\n<ul>\n<li>Praktischer Kurs <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/agima\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=AGIMA&amp;utm_content=articles&amp;utm_term=10oop\">\u201eMobiler Entwickler PRO\u201c<\/a><\/noindex>.<\/li>\n<li>Angewandter Online-Kurs <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/python-data\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=PTNANA&amp;utm_content=articles&amp;utm_term=10oop\">\u201eDatenanalytiker mit Python\u201c<\/a><\/noindex>.<\/li>\n<li>Zweij\u00e4hriger praktischer Kurs <noindex><a rel=\"nofollow\" href=\"https:\/\/iamwebdev.skillbox.ru\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=WEBDEVPRO&amp;utm_content=articles&amp;utm_term=10oop\">\u201eIch bin Webentwickler PRO\u201c<\/a><\/noindex>.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/454314\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u043d\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 SOLID (\u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043e \u043d\u0438\u0445 \u0437\u0434\u0435\u0441\u044c. \u2014 \u041f\u0435\u0440.) \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u041e\u041e\u041f), \u0438\u043b\u0438 \u0441\u043b\u044b\u0448\u0430\u043b\u0438, \u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u0445 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u041e\u041e\u041f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0432 \u0435\u0433\u043e \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u043c \u0442\u0440\u0443\u0434\u0435. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b, \u0434\u0440\u0443\u0433\u0438\u0435 \u2014 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c, \u0442\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26244,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-34855","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd4710 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:00:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:51+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd4710 Prinzipien der objektorientierten Programmierung, die jeder Entwickler kennen sollte | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd4710 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a | ProHoster","og:url":"https:\/\/prohoster.info\/de\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:00:51+00:00","article:modified_time":"2019-10-31T19:00:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34855","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 20:51:32","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:14:05","updated":"2026-01-21 20:51:32","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/34855","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=34855"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/34855\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/26244"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=34855"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=34855"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=34855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}