{"id":109,"date":"2026-04-09T11:15:06","date_gmt":"2026-04-09T11:15:06","guid":{"rendered":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/"},"modified":"2026-04-09T11:15:06","modified_gmt":"2026-04-09T11:15:06","slug":"object-oriented-analysis-design-mid-level-developers","status":"publish","type":"post","link":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/","title":{"rendered":"Objektorientierte Analyse und Gestaltung f\u00fcr mittelst\u00e4ndische Entwickler: Weitergehen \u00fcber die Grundsyntax hin zur Architektur"},"content":{"rendered":"<p>Der \u00dcbergang von der Erstellung funktionalen Codes zur Entwicklung robuster Software-Systeme erfordert eine Ver\u00e4nderung des Denkens. Viele Entwickler verbringen Jahre damit, die Syntax zu meistern, Schleifen, Funktionen und grundlegende Klassenstrukturen zu lernen. Doch der wahre Fachkenntnis liegt darin, wie diese Bausteine miteinander verbunden werden, um ein zusammenh\u00e4ngendes Ganzes zu bilden. Die objektorientierte Analyse und Gestaltung (OOAD) bietet den Rahmen f\u00fcr diesen \u00dcbergang. Es ist der Prozess, die Objekte, Verhaltensweisen und Interaktionen zu definieren, aus denen ein Software-System besteht, bevor \u00fcberhaupt ein einziger Zeile Implementierungscode geschrieben wird.<\/p>\n<p>F\u00fcr mittelst\u00e4ndische Entwickler macht das Verst\u00e4ndnis von OOAD den Unterschied zwischen der Pflege von Spaghetti-Code und der Architektur von L\u00f6sungen, die skalierbar sind. Dieser Leitfaden untersucht die zentralen Prinzipien, Methodologien und praktischen Anwendungen von OOAD. Wir werden untersuchen, wie Anforderungen analysiert, Dom\u00e4nen modelliert und Systeme entworfen werden k\u00f6nnen, die etablierten ingenieurtechnischen Standards entsprechen.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img alt=\"Hand-drawn infographic illustrating Object-Oriented Analysis and Design (OOAD) principles for mid-level developers, featuring the journey from basic syntax to software architecture with SOLID principles, design patterns, domain modeling, UML diagrams, testing strategies, and refactoring techniques in a visual 16:9 layout\" decoding=\"async\" src=\"https:\/\/www.hi-posts.com\/wp-content\/uploads\/2026\/04\/ooad-midlevel-developer-infographic-handdrawn.jpg\"\/><\/figure>\n<\/div>\n<h2>Grundlagen der OOAD verstehen \ud83e\udde9<\/h2>\n<p>Objektorientierte Analyse und Gestaltung ist kein einzelnes Werkzeug oder Sprachfeature. Es ist eine Disziplin. Sie konzentriert sich darauf, die Objekte innerhalb eines Systems zu identifizieren und zu bestimmen, wie sie miteinander interagieren. Ziel ist es, ein Modell zu erstellen, das den realen Problembereich genau widerspiegelt.<\/p>\n<p>Wenn Sie Code ohne OOAD schreiben, konzentrieren Sie sich oft auf Funktionen und Datenstrukturen. Wenn Sie OOAD anwenden, konzentrieren Sie sich auf Entit\u00e4ten und ihre Verantwortlichkeiten. Dieser Ansatz f\u00f6rdert die Modularit\u00e4t und macht es einfacher, einen Teil des Systems zu \u00e4ndern, ohne einen anderen zu besch\u00e4digen.<\/p>\n<h3>Wichtige Konzepte, die verstanden werden m\u00fcssen<\/h3>\n<ul>\n<li><strong>Kapselung:<\/strong>Das Zusammenfassen von Daten und Methoden, die auf diesen Daten arbeiten, innerhalb einer Einheit, meist einer Klasse. Es beschr\u00e4nkt den direkten Zugriff auf einige Komponenten eines Objekts.<\/li>\n<li><strong>Vererbung:<\/strong>Ein Mechanismus, bei dem eine neue Klasse Eigenschaften und Verhaltensweisen von einer bestehenden Klasse ableitet. Dadurch wird Code-Duplizierung reduziert.<\/li>\n<li><strong>Polymorphismus:<\/strong>Die F\u00e4higkeit verschiedener Klassen, auf dieselbe Nachricht auf unterschiedliche Weise zu reagieren. Dadurch werden flexible Code-Strukturen erm\u00f6glicht.<\/li>\n<li><strong>Abstraktion:<\/strong>Verbergen komplexer Implementierungsdetails und Anzeigen nur der notwendigen Funktionen eines Objekts.<\/li>\n<\/ul>\n<h2>Die Analysephase: Das Problem definieren \ud83d\udcdd<\/h2>\n<p>Bevor Sie entwerfen, m\u00fcssen Sie analysieren. Diese Phase befasst sich damit, zu verstehen, was das System tun muss, nicht, wie es dies tun wird. Das \u00dcberspringen dieses Schritts f\u00fchrt oft sp\u00e4ter zu Nacharbeit, wenn sich die Anforderungen \u00e4ndern.<\/p>\n<h3>Identifizierung von Akteuren und Anwendungsf\u00e4llen<\/h3>\n<p>Jedes System hat externe Entit\u00e4ten, die mit ihm interagieren. Diese werden Akteure genannt. Sie k\u00f6nnen menschliche Benutzer, andere Systeme oder Hardwareger\u00e4te sein. Sobald Sie die Akteure identifiziert haben, definieren Sie die Anwendungsf\u00e4lle. Ein Anwendungsfall beschreibt eine spezifische Interaktion zwischen einem Akteur und dem System.<\/p>\n<ul>\n<li><strong>Akteur:<\/strong>Wer nutzt das System? (z.\u202fB. Administrator, Kunde, Zahlungsgateway).<\/li>\n<li><strong>Ziel:<\/strong>Was m\u00f6chte der Akteur erreichen? (z.\u202fB. Bestellung aufgeben, Bericht generieren).<\/li>\n<li><strong>Ablauf:<\/strong>Welche Schritte sind erforderlich, um das Ziel zu erreichen?<\/li>\n<\/ul>\n<h3>Dom\u00e4nenmodellierung<\/h3>\n<p>Die Dom\u00e4nenmodellierung \u00fcbersetzt Gesch\u00e4ftskonzepte in technische Entit\u00e4ten. Dabei geht es darum, die zentralen Substantive in der Problemstellung zu identifizieren. Diese Substantive werden oft zu Klassen in Ihrer Gestaltung.<\/p>\n<p>Zum Beispiel k\u00f6nnten in einem E-Commerce-System Substantive enthalten sein<em>Kunde<\/em>, <em>Produkt<\/em>, <em>Bestellung<\/em>, und <em>Rechnung<\/em>. Die Analyse dieser Entit\u00e4ten beinhaltet die Definition ihrer Attribute und Beziehungen.<\/p>\n<h3>Beziehungen im Dom\u00e4nenbereich<\/h3>\n<p>Entit\u00e4ten existieren nicht isoliert. Sie beziehen sich aufeinander. Das Verst\u00e4ndnis dieser Beziehungen ist entscheidend f\u00fcr die Datenbankgestaltung und die Objektnavigation.<\/p>\n<table>\n<thead>\n<tr>\n<th>Beziehungstyp<\/th>\n<th>Beschreibung<\/th>\n<th>Beispiel<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Ein-zu-Eins<\/td>\n<td>Eine Instanz von A steht genau mit einer Instanz von B in Beziehung.<\/td>\n<td>Ein Benutzer hat ein Profil.<\/td>\n<\/tr>\n<tr>\n<td>Ein-zu-Viele<\/td>\n<td>Eine Instanz von A steht mit vielen Instanzen von B in Beziehung.<\/td>\n<td>Ein Kunde stellt viele Bestellungen auf.<\/td>\n<\/tr>\n<tr>\n<td>Viele-zu-Viele<\/td>\n<td>Viele Instanzen von A stehen mit vielen Instanzen von B in Beziehung.<\/td>\n<td>Studenten melden sich in vielen Kursen an; Kurse haben viele Studenten.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Die Entwurfsphase: Aufbau der L\u00f6sung \ud83d\udee0\ufe0f<\/h2>\n<p>Sobald die Analyse abgeschlossen ist, beginnt die Entwurfsphase. Hier werden die Klassen, Schnittstellen und deren Kommunikation festgelegt. Der Fokus verschiebt sich von den Anforderungen hin zur Implementierungsstruktur.<\/p>\n<h3>Verantwortungsgetriebenes Design<\/h3>\n<p>Bei diesem Ansatz weist man Klassen Verantwortlichkeiten zu. Eine Verantwortlichkeit ist ein Vertrag, den eine Klasse erf\u00fcllen muss. Es gibt zwei Haupttypen von Verantwortlichkeiten:<\/p>\n<ul>\n<li><strong>Informationsbasiert:<\/strong> Die Klasse wei\u00df etwas.<\/li>\n<li><strong>Verhaltensbasiert:<\/strong> Die Klasse tut etwas.<\/li>\n<\/ul>\n<p>Beim Zuweisen von Verantwortlichkeiten fragen Sie: Wer verf\u00fcgt \u00fcber die Informationen, die zur Erf\u00fcllung dieser Verantwortlichkeit ben\u00f6tigt werden? Wer ist am besten geeignet, die Aktion durchzuf\u00fchren? Dies hilft, Logik in die falsche Klasse zu verlegen.<\/p>\n<h3>SOLID-Prinzipien<\/h3>\n<p>Das SOLID-Akronym steht f\u00fcr f\u00fcnf Designprinzipien, die darauf abzielen, Software-Entw\u00fcrfe verst\u00e4ndlicher, flexibler und wartbarer zu gestalten. Die Einhaltung dieser Prinzipien ist ein Kennzeichen f\u00fcr ein senior-orientiertes Verst\u00e4ndnis von OOAD.<\/p>\n<h4>1. Einzelverantwortlichkeitsprinzip (SRP)<\/h4>\n<p>Eine Klasse sollte genau einen Grund haben, sich zu \u00e4ndern. Wenn eine Klasse sowohl Datenbanklogik als auch die Benutzeroberfl\u00e4chen-Rendering verarbeitet, verst\u00f6\u00dft sie gegen das SRP. \u00c4nderungen an der Benutzeroberfl\u00e4che sollten nicht dazu f\u00fchren, dass die Datenbanklogik ber\u00fchrt werden muss. Halten Sie Anliegen getrennt.<\/p>\n<h4>2. Offen-\/Geschlossen-Prinzip (OCP)<\/h4>\n<p>Software-Entit\u00e4ten sollten f\u00fcr Erweiterungen offen, aber f\u00fcr \u00c4nderungen geschlossen sein. Sie sollten neue Funktionalit\u00e4t hinzuf\u00fcgen k\u00f6nnen, ohne bestehenden Code zu ver\u00e4ndern. Dies wird oft durch Schnittstellen und abstrakte Klassen erreicht.<\/p>\n<h4>3. Liskov-Substitutionsprinzip (LSP)<\/h4>\n<p>Objekte einer Oberklasse sollten durch Objekte ihrer Unterklassen ersetzt werden k\u00f6nnen, ohne die Anwendung zu brechen. Wenn eine Elternklasse erwartet, dass eine Methode eine Zeichenkette zur\u00fcckgibt, darf eine Kindklasse diesen R\u00fcckgabetyp nicht auf eine Ganzzahl \u00e4ndern.<\/p>\n<h4>4. Schnittstellen-Segregationsprinzip (ISP)<\/h4>\n<p>Clients sollten nicht gezwungen werden, auf Methoden zu verweisen, die sie nicht verwenden. Statt einer gro\u00dfen Schnittstelle mit zehn Methoden sollten kleinere, spezifische Schnittstellen erstellt werden. Dadurch wird die Kopplung reduziert.<\/p>\n<h4>5. Abh\u00e4ngigkeitsinversionsprinzip (DIP)<\/h4>\n<p>Hochlevel-Module sollten nicht von Niveau-Modulen abh\u00e4ngen. Beide sollten von Abstraktionen abh\u00e4ngen. Abstraktionen sollten nicht von Details abh\u00e4ngen; Details sollten von Abstraktionen abh\u00e4ngen. Dadurch wird Ihr System entkoppelt, sodass Sie Implementierungen leicht austauschen k\u00f6nnen.<\/p>\n<h2>Entwurfsmuster: Bew\u00e4hrte L\u00f6sungen \ud83e\udde0<\/h2>\n<p>Entwurfsmuster sind allgemein verwendbare L\u00f6sungen f\u00fcr h\u00e4ufig auftretende Probleme in einem bestimmten Kontext der objektorientierten Gestaltung. Sie sind kein Code, der kopiert werden soll, sondern Vorlagen daf\u00fcr, wie ein Problem gel\u00f6st werden kann.<\/p>\n<h3>Erzeugungsmuster<\/h3>\n<p>Diese Muster besch\u00e4ftigen sich mit Mechanismen zur Objekterzeugung und versuchen, Objekte auf eine Weise zu erstellen, die der Situation angemessen ist. Die grundlegende Art der Objekterzeugung k\u00f6nnte zu Gestaltungsproblemen oder zus\u00e4tzlicher Komplexit\u00e4t f\u00fchren.<\/p>\n<ul>\n<li><strong>Fabrik-Methode:<\/strong> Definiert eine Schnittstelle zum Erstellen eines Objekts, l\u00e4sst aber Unterklassen die Art der zu erzeugenden Objekte \u00e4ndern.<\/li>\n<li><strong>Baukasten:<\/strong> Baut ein komplexes Objekt Schritt f\u00fcr Schritt auf. Dieses Muster ist n\u00fctzlich, wenn ein Objekt viele Parameter f\u00fcr die Erstellung ben\u00f6tigt.<\/li>\n<li><strong>Singleton:<\/strong> Stellt sicher, dass eine Klasse nur eine Instanz hat, und bietet einen globalen Zugriffspunkt darauf. Verwenden Sie es mit Vorsicht, um versteckte Abh\u00e4ngigkeiten zu vermeiden.<\/li>\n<\/ul>\n<h3>Strukturelle Muster<\/h3>\n<p>Diese Muster erleichtern die Gestaltung, indem sie eine einfache M\u00f6glichkeit identifizieren, Beziehungen zwischen Entit\u00e4ten zu realisieren.<\/p>\n<ul>\n<li><strong>Adapter:<\/strong> Erm\u00f6glicht, dass inkompatible Schnittstellen zusammenarbeiten. Es umh\u00fcllt eine bestehende Klasse, um sie mit einer neuen Schnittstelle kompatibel zu machen.<\/li>\n<li><strong>Decorator:<\/strong> Erm\u00f6glicht es, Verhalten dynamisch einem einzelnen Objekt hinzuzuf\u00fcgen, ohne das Verhalten anderer Objekte derselben Klasse zu beeinflussen.<\/li>\n<li><strong>Fassade:<\/strong> Bietet eine vereinfachte Schnittstelle zu einem komplexen Untersystem.<\/li>\n<\/ul>\n<h3>Verhaltensmuster<\/h3>\n<p>Diese Muster besch\u00e4ftigen sich speziell mit der Kommunikation zwischen Objekten und der Verteilung der Verantwortung.<\/p>\n<ul>\n<li><strong>Beobachter:<\/strong> Definiert eine Abh\u00e4ngigkeit zwischen Objekten, sodass bei \u00c4nderung des Zustands eines Objekts alle abh\u00e4ngigen Objekte benachrichtigt und automatisch aktualisiert werden.<\/li>\n<li><strong>Strategie:<\/strong> Definiert eine Familie von Algorithmen, kapselt jeden einzelnen und macht sie austauschbar. Die Strategie erm\u00f6glicht es dem Algorithmus, unabh\u00e4ngig von den Clients, die ihn verwenden, zu variieren.<\/li>\n<li><strong>Befehl:<\/strong> Kapselt eine Anforderung als Objekt, wodurch Sie Clients mit unterschiedlichen Anforderungen parametrisieren, Anforderungen in einer Warteschlange halten oder protokollieren und r\u00fcckg\u00e4ngig machbare Operationen unterst\u00fctzen k\u00f6nnen.<\/li>\n<\/ul>\n<h2>Verwaltung technischer Schulden und Refactoring \ud83e\uddf9<\/h2>\n<p>Selbst bei einem soliden Design verschlechtert sich der Code im Laufe der Zeit. Neue Anforderungen treten auf, und alte Annahmen erweisen sich als falsch. Genau hier setzt das Refactoring ein. Refactoring ist der Prozess, ein Software-System so zu ver\u00e4ndern, dass sich das externe Verhalten des Codes nicht \u00e4ndert, jedoch die interne Struktur verbessert wird.<\/p>\n<h3>Anzeichen daf\u00fcr, dass Sie refaktorisieren m\u00fcssen<\/h3>\n<ul>\n<li><strong>Doppelter Code:<\/strong>Das Kopieren von Codebl\u00f6cken f\u00fchrt zu Wartungs-Albtr\u00e4umen.<\/li>\n<li><strong>Lange Methoden:<\/strong> Wenn eine Methode mehr als 10-15 Zeilen \u00fcberschreitet, macht sie vermutlich zu viel.<\/li>\n<li><strong>Gro\u00dfe Klassen:<\/strong> Wenn eine Klasse zu viele Variablen verwaltet, sollte sie aufgeteilt werden.<\/li>\n<li><strong>Tiefe Vererbung:<\/strong> Wenn Sie tiefe Klassenhierarchien haben, sollten Sie Composition gegen\u00fcber Vererbung bevorzugen.<\/li>\n<\/ul>\n<h3>Refactoring-Techniken<\/h3>\n<ul>\n<li><strong>Methode extrahieren:<\/strong> Wandeln Sie einen Codeabschnitt in eine neue Methode um.<\/li>\n<li><strong>Klasse extrahieren:<\/strong> Verschieben Sie einige Felder und Methoden in eine neue Klasse.<\/li>\n<li><strong>Feld\/Methode nach oben ziehen:<\/strong> Verschieben Sie ein Feld oder eine Methode in eine Oberklasse.<\/li>\n<li><strong>Feld\/Methode nach unten schieben:<\/strong> Verschieben Sie ein Feld oder eine Methode in eine Unterklasse.<\/li>\n<li><strong>Tempor\u00e4res Feld durch Abfrage ersetzen:<\/strong> Kapseln Sie eine tempor\u00e4re Variable mit einer Methode.<\/li>\n<\/ul>\n<h2>Teststrategien in OOAD \ud83e\uddea<\/h2>\n<p>Design und Testen gehen Hand in Hand. Ein gut gestaltetes Objekt ist von Natur aus einfacher zu testen, weil seine Verantwortlichkeiten klar und isoliert sind.<\/p>\n<h3>Einheitstest<\/h3>\n<p>Einheitstests \u00fcberpr\u00fcfen das Verhalten einzelner Einheiten des Quellcodes. Bei OOAD sollten Sie Klassen isoliert testen. Verwenden Sie Mocking, um Abh\u00e4ngigkeiten zu simulieren, sodass Sie keine echte Datenbank oder Netzwerkverbindung ben\u00f6tigen.<\/p>\n<h3>Integrationstest<\/h3>\n<p>Integrationstests \u00fcberpr\u00fcfen, ob verschiedene Module zusammenarbeiten. Hier pr\u00fcfen Sie, ob die in Ihrem Design definierten Schnittstellen tats\u00e4chlich korrekt funktionieren, wenn sie implementiert sind.<\/p>\n<h3>Testgetriebene Entwicklung (TDD)<\/h3>\n<p>TDD ist ein Prozess, bei dem Sie Tests vor dem Implementierungscode schreiben. Der Zyklus besteht aus Rot (Test schreiben, der fehlschl\u00e4gt), Gr\u00fcn (Code schreiben, um den Test zu bestehen) und Refactoring (Code aufr\u00e4umen). Dadurch wird sichergestellt, dass Ihre Gestaltungsentscheidungen von Anforderungen und Benutzerfreundlichkeit getrieben werden.<\/p>\n<h2>Dokumentation und Kommunikation \ud83d\udde3\ufe0f<\/h2>\n<p>Design ist ein Kommunikationswerkzeug. Ihr Code kommuniziert mit anderen Entwicklern, aber Diagramme kommunizieren mit dem gesamten Team, einschlie\u00dflich Stakeholdern.<\/p>\n<h3>Unified Modeling Language (UML)<\/h3>\n<p>UML ist eine standardisierte visuelle Sprache zur Spezifikation, Konstruktion und Dokumentation der Artefakte von Software-Systemen. Obwohl Sie nicht jedes Diagramm zeichnen m\u00fcssen, ist das Verst\u00e4ndnis der Arten entscheidend.<\/p>\n<ul>\n<li><strong>Klassendiagramme:<\/strong>Zeigen die statische Struktur des Systems. Klassen, Attribute, Operationen und Beziehungen.<\/li>\n<li><strong>Sequenzdiagramme:<\/strong>Zeigen, wie Objekte \u00fcber die Zeit miteinander interagieren. N\u00fctzlich zum Verst\u00e4ndnis von Workflows.<\/li>\n<li><strong>Use-Case-Diagramme:<\/strong>Zeigen die funktionalen Anforderungen aus Sicht des Benutzers.<\/li>\n<li><strong>Zustandsmaschinen-Diagramme:<\/strong>Zeigen die Zust\u00e4nde, in denen ein Objekt sein kann, sowie die \u00dcberg\u00e4nge zwischen ihnen.<\/li>\n<\/ul>\n<h3>Dokumentation aktuell halten<\/h3>\n<p>Dokumentation wird nutzlos, wenn sie veraltet ist. Es ist besser, Code zu haben, der sich selbst dokumentiert, als eine separate Dokumentation zu pflegen, die hinter dem Codebase zur\u00fcckbleibt. Verwenden Sie klare Namenskonventionen und Kommentare nur, wenn der Code nicht selbstverst\u00e4ndlich ist.<\/p>\n<h2>H\u00e4ufige Fallen, die vermieden werden sollten \u26a0\ufe0f<\/h2>\n<p>Sogar erfahrene Entwickler geraten bei der Anwendung von OOAD in Fallen. Die Aufmerksamkeit auf diese h\u00e4ufigen Fehler kann erhebliche Zeit sparen.<\/p>\n<h3>\u00dcberingenieurwesen<\/h3>\n<p>Die Anwendung komplexer Muster auf einfache Probleme erzeugt unn\u00f6tigen Overhead. Wenn eine Funktion einfach ist, halten Sie die Gestaltung einfach. Verwenden Sie das KISS-Prinzip (Keep It Simple, Stupid). Entwerfen Sie nicht f\u00fcr ein Problem, das Sie noch nicht haben.<\/p>\n<h3>Voreilige Optimierung<\/h3>\n<p>Die Fokussierung auf Leistung vor Funktionalit\u00e4t f\u00fchrt oft zu starrem Code. Optimieren Sie erst, wenn Sie eine Engstelle identifiziert haben. Gestalten Sie zun\u00e4chst f\u00fcr Klarheit.<\/p>\n<h3>Starke Kopplung<\/h3>\n<p>Wenn Klassen stark aufeinander angewiesen sind, beeinflusst die \u00c4nderung einer die andere. Verwenden Sie Schnittstellen und Dependency Injection, um diese Verbindungen zu lockern. Hohe Kopplung macht das System anf\u00e4llig.<\/p>\n<h3>Gott-Objekte<\/h3>\n<p>Klassen, die zu viel wissen oder zu viel tun, werden als G\u00f6tterobjekte bezeichnet. Sie werden zu einem zentralen Fehlerpunkt und sind schwer zu testen. Verteilen Sie die Logik auf kleinere, spezialisiertere Klassen.<\/p>\n<h2>Praktische Anwendungsschritte \ud83d\udccb<\/h2>\n<p>Wie beginnen Sie, dies morgen anzuwenden? Folgen Sie diesem Workflow f\u00fcr Ihr n\u00e4chstes Feature.<\/p>\n<ol>\n<li><strong>Analyze Anforderungen:<\/strong>Notieren Sie die Anwendungsf\u00e4lle. Identifizieren Sie Akteure und Ziele.<\/li>\n<li><strong>Identifizieren Sie Entit\u00e4ten:<\/strong>Listen Sie die Substantive auf. Das sind potenzielle Klassen.<\/li>\n<li><strong>Definieren Sie Beziehungen:<\/strong>Ermitteln Sie, wie Entit\u00e4ten miteinander verbunden sind (Eins-zu-Viele usw.).<\/li>\n<li><strong>Entwerfen Sie Klassendiagramme:<\/strong>Zeichnen Sie die Struktur auf Papier oder Whiteboard.<\/li>\n<li><strong>Wenden Sie SOLID an:<\/strong>\u00dcberpr\u00fcfen Sie Ihren Entwurf. Verletzt er irgendwelche Prinzipien?<\/li>\n<li><strong>Implementieren Sie Schnittstellen:<\/strong>Definieren Sie die Vertr\u00e4ge, bevor Sie konkrete Klassen schreiben.<\/li>\n<li><strong>Schreiben Sie Tests:<\/strong>Stellen Sie sicher, dass sich das Verhalten mit dem Entwurf deckt.<\/li>\n<li><strong>Refaktorisieren:<\/strong>Bereinigen Sie die Implementierung im Laufe der Arbeit.<\/li>\n<\/ol>\n<h2>Schlussfolgerung: Kontinuierliches Wachstum \ud83c\udf31<\/h2>\n<p>Objektorientierte Analyse und Design ist kein Ziel, sondern eine Reise. Je mehr Erfahrung Sie sammeln, desto besser wird Ihre Intuition f\u00fcr die Identifizierung von Objekten und Beziehungen. Sie werden feststellen, dass Sie SOLID-Prinzipien ganz nat\u00fcrlich anwenden, ohne bewusst dar\u00fcber nachzudenken. Das Ziel ist es, Systeme zu schaffen, die leicht verst\u00e4ndlich, leicht ver\u00e4nderbar und leicht wartbar sind.<\/p>\n<p>Beginnen Sie mit der Analyse Ihres aktuellen Codebases. Suchen Sie nach G\u00f6tterobjekten, langen Methoden und engen Kopplungen. Wenden Sie jeweils eine Refaktorisierungstechnik an. Lesen Sie B\u00fccher zu Entwurfsmustern, aber wenden Sie sie auf Ihren spezifischen Kontext an. Denken Sie daran, dass das beste Design oft das einfachste ist, das die Anforderungen erf\u00fcllt. Indem Sie sich auf Architektur und Prinzipien konzentrieren, anstatt nur auf die Syntax, steigern Sie Ihre F\u00e4higkeiten als Entwickler und tragen zu stabileren, widerstandsf\u00e4higeren Software-Systemen bei.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der \u00dcbergang von der Erstellung funktionalen Codes zur Entwicklung robuster Software-Systeme erfordert eine Ver\u00e4nderung des Denkens. Viele Entwickler verbringen Jahre damit, die Syntax zu meistern, Schleifen, Funktionen und grundlegende Klassenstrukturen&hellip;<\/p>\n","protected":false},"author":1,"featured_media":110,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"OOAD-Leitfaden f\u00fcr mittlere Entwickler: \u00dcber die Syntax hinaus zur Architektur \ud83c\udfd7\ufe0f","_yoast_wpseo_metadesc":"Beherrschen Sie die objektorientierte Analyse und Gestaltung. Lernen Sie SOLID-Prinzipien, Muster und Architektur f\u00fcr mittlere Entwickler. Gehen Sie effektiv \u00fcber die Syntax hinaus.","inline_featured_image":false,"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[17],"tags":[8,16],"class_list":["post-109","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-object-oriented-analysis-and-design","tag-academic","tag-object-oriented-analysis-and-design"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>OOAD-Leitfaden f\u00fcr mittlere Entwickler: \u00dcber die Syntax hinaus zur Architektur \ud83c\udfd7\ufe0f<\/title>\n<meta name=\"description\" content=\"Beherrschen Sie die objektorientierte Analyse und Gestaltung. Lernen Sie SOLID-Prinzipien, Muster und Architektur f\u00fcr mittlere Entwickler. Gehen Sie effektiv \u00fcber die Syntax hinaus.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OOAD-Leitfaden f\u00fcr mittlere Entwickler: \u00dcber die Syntax hinaus zur Architektur \ud83c\udfd7\ufe0f\" \/>\n<meta property=\"og:description\" content=\"Beherrschen Sie die objektorientierte Analyse und Gestaltung. Lernen Sie SOLID-Prinzipien, Muster und Architektur f\u00fcr mittlere Entwickler. Gehen Sie effektiv \u00fcber die Syntax hinaus.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/\" \/>\n<meta property=\"og:site_name\" content=\"Hi Posts Deutsch\u2013 Artificial Intelligence News, Guides &amp; Knowledge\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-09T11:15:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/04\/ooad-midlevel-developer-infographic-handdrawn.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1664\" \/>\n\t<meta property=\"og:image:height\" content=\"928\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"vpadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"11\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/\"},\"author\":{\"name\":\"vpadmin\",\"@id\":\"https:\/\/www.hi-posts.com\/de\/#\/schema\/person\/fb2c68d968e9062d9687a3664f4defcc\"},\"headline\":\"Objektorientierte Analyse und Gestaltung f\u00fcr mittelst\u00e4ndische Entwickler: Weitergehen \u00fcber die Grundsyntax hin zur Architektur\",\"datePublished\":\"2026-04-09T11:15:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/\"},\"wordCount\":2231,\"publisher\":{\"@id\":\"https:\/\/www.hi-posts.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/04\/ooad-midlevel-developer-infographic-handdrawn.jpg\",\"keywords\":[\"academic\",\"object-oriented analysis and design\"],\"articleSection\":[\"Object-Oriented Analysis and Design\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/\",\"url\":\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/\",\"name\":\"OOAD-Leitfaden f\u00fcr mittlere Entwickler: \u00dcber die Syntax hinaus zur Architektur \ud83c\udfd7\ufe0f\",\"isPartOf\":{\"@id\":\"https:\/\/www.hi-posts.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/04\/ooad-midlevel-developer-infographic-handdrawn.jpg\",\"datePublished\":\"2026-04-09T11:15:06+00:00\",\"description\":\"Beherrschen Sie die objektorientierte Analyse und Gestaltung. Lernen Sie SOLID-Prinzipien, Muster und Architektur f\u00fcr mittlere Entwickler. Gehen Sie effektiv \u00fcber die Syntax hinaus.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#primaryimage\",\"url\":\"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/04\/ooad-midlevel-developer-infographic-handdrawn.jpg\",\"contentUrl\":\"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/04\/ooad-midlevel-developer-infographic-handdrawn.jpg\",\"width\":1664,\"height\":928},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hi-posts.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Objektorientierte Analyse und Gestaltung f\u00fcr mittelst\u00e4ndische Entwickler: Weitergehen \u00fcber die Grundsyntax hin zur Architektur\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hi-posts.com\/de\/#website\",\"url\":\"https:\/\/www.hi-posts.com\/de\/\",\"name\":\"Hi Posts Deutsch\u2013 Artificial Intelligence News, Guides &amp; Knowledge\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.hi-posts.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hi-posts.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hi-posts.com\/de\/#organization\",\"name\":\"Hi Posts Deutsch\u2013 Artificial Intelligence News, Guides &amp; Knowledge\",\"url\":\"https:\/\/www.hi-posts.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.hi-posts.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/03\/hi-posts-logo.png\",\"contentUrl\":\"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/03\/hi-posts-logo.png\",\"width\":801,\"height\":801,\"caption\":\"Hi Posts Deutsch\u2013 Artificial Intelligence News, Guides &amp; Knowledge\"},\"image\":{\"@id\":\"https:\/\/www.hi-posts.com\/de\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hi-posts.com\/de\/#\/schema\/person\/fb2c68d968e9062d9687a3664f4defcc\",\"name\":\"vpadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g\",\"caption\":\"vpadmin\"},\"sameAs\":[\"https:\/\/www.hi-posts.com\"],\"url\":\"https:\/\/www.hi-posts.com\/de\/author\/vpadmin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OOAD-Leitfaden f\u00fcr mittlere Entwickler: \u00dcber die Syntax hinaus zur Architektur \ud83c\udfd7\ufe0f","description":"Beherrschen Sie die objektorientierte Analyse und Gestaltung. Lernen Sie SOLID-Prinzipien, Muster und Architektur f\u00fcr mittlere Entwickler. Gehen Sie effektiv \u00fcber die Syntax hinaus.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/","og_locale":"de_DE","og_type":"article","og_title":"OOAD-Leitfaden f\u00fcr mittlere Entwickler: \u00dcber die Syntax hinaus zur Architektur \ud83c\udfd7\ufe0f","og_description":"Beherrschen Sie die objektorientierte Analyse und Gestaltung. Lernen Sie SOLID-Prinzipien, Muster und Architektur f\u00fcr mittlere Entwickler. Gehen Sie effektiv \u00fcber die Syntax hinaus.","og_url":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/","og_site_name":"Hi Posts Deutsch\u2013 Artificial Intelligence News, Guides &amp; Knowledge","article_published_time":"2026-04-09T11:15:06+00:00","og_image":[{"width":1664,"height":928,"url":"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/04\/ooad-midlevel-developer-infographic-handdrawn.jpg","type":"image\/jpeg"}],"author":"vpadmin","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":false,"Gesch\u00e4tzte Lesezeit":"11\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#article","isPartOf":{"@id":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/"},"author":{"name":"vpadmin","@id":"https:\/\/www.hi-posts.com\/de\/#\/schema\/person\/fb2c68d968e9062d9687a3664f4defcc"},"headline":"Objektorientierte Analyse und Gestaltung f\u00fcr mittelst\u00e4ndische Entwickler: Weitergehen \u00fcber die Grundsyntax hin zur Architektur","datePublished":"2026-04-09T11:15:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/"},"wordCount":2231,"publisher":{"@id":"https:\/\/www.hi-posts.com\/de\/#organization"},"image":{"@id":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/04\/ooad-midlevel-developer-infographic-handdrawn.jpg","keywords":["academic","object-oriented analysis and design"],"articleSection":["Object-Oriented Analysis and Design"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/","url":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/","name":"OOAD-Leitfaden f\u00fcr mittlere Entwickler: \u00dcber die Syntax hinaus zur Architektur \ud83c\udfd7\ufe0f","isPartOf":{"@id":"https:\/\/www.hi-posts.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#primaryimage"},"image":{"@id":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/04\/ooad-midlevel-developer-infographic-handdrawn.jpg","datePublished":"2026-04-09T11:15:06+00:00","description":"Beherrschen Sie die objektorientierte Analyse und Gestaltung. Lernen Sie SOLID-Prinzipien, Muster und Architektur f\u00fcr mittlere Entwickler. Gehen Sie effektiv \u00fcber die Syntax hinaus.","breadcrumb":{"@id":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#primaryimage","url":"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/04\/ooad-midlevel-developer-infographic-handdrawn.jpg","contentUrl":"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/04\/ooad-midlevel-developer-infographic-handdrawn.jpg","width":1664,"height":928},{"@type":"BreadcrumbList","@id":"https:\/\/www.hi-posts.com\/de\/object-oriented-analysis-design-mid-level-developers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hi-posts.com\/de\/"},{"@type":"ListItem","position":2,"name":"Objektorientierte Analyse und Gestaltung f\u00fcr mittelst\u00e4ndische Entwickler: Weitergehen \u00fcber die Grundsyntax hin zur Architektur"}]},{"@type":"WebSite","@id":"https:\/\/www.hi-posts.com\/de\/#website","url":"https:\/\/www.hi-posts.com\/de\/","name":"Hi Posts Deutsch\u2013 Artificial Intelligence News, Guides &amp; Knowledge","description":"","publisher":{"@id":"https:\/\/www.hi-posts.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hi-posts.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.hi-posts.com\/de\/#organization","name":"Hi Posts Deutsch\u2013 Artificial Intelligence News, Guides &amp; Knowledge","url":"https:\/\/www.hi-posts.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.hi-posts.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/03\/hi-posts-logo.png","contentUrl":"https:\/\/www.hi-posts.com\/de\/wp-content\/uploads\/sites\/15\/2026\/03\/hi-posts-logo.png","width":801,"height":801,"caption":"Hi Posts Deutsch\u2013 Artificial Intelligence News, Guides &amp; Knowledge"},"image":{"@id":"https:\/\/www.hi-posts.com\/de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.hi-posts.com\/de\/#\/schema\/person\/fb2c68d968e9062d9687a3664f4defcc","name":"vpadmin","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g","caption":"vpadmin"},"sameAs":["https:\/\/www.hi-posts.com"],"url":"https:\/\/www.hi-posts.com\/de\/author\/vpadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.hi-posts.com\/de\/wp-json\/wp\/v2\/posts\/109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hi-posts.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hi-posts.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hi-posts.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hi-posts.com\/de\/wp-json\/wp\/v2\/comments?post=109"}],"version-history":[{"count":0,"href":"https:\/\/www.hi-posts.com\/de\/wp-json\/wp\/v2\/posts\/109\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hi-posts.com\/de\/wp-json\/wp\/v2\/media\/110"}],"wp:attachment":[{"href":"https:\/\/www.hi-posts.com\/de\/wp-json\/wp\/v2\/media?parent=109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hi-posts.com\/de\/wp-json\/wp\/v2\/categories?post=109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hi-posts.com\/de\/wp-json\/wp\/v2\/tags?post=109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}