We may earn an affiliate commission when you visit our partners.
Thorsten Diekhof

Prolog:

Read more

Prolog:

Für mich war die Entdeckung von Entwurfsmuster und objektorientiertem Design ein großes Aha-Erlebnis. Es gibt da mehr als das reine Programmieren. Ich habe vor dieser Entdeckung drei Stadien durchlaufen. 1. lernte ich eine objektorientierte Programmiersprache und begriff Bedingungen, Schleifen und Sequenzen. 2. erkannte ich ein Grundkonzept der Objektorientierung: die Vererbung. 3. entdeckte ich die Mächtigkeit von Bibliotheken und APIs. Ja, ich löste plötzlich All die Dinge, die ich vorher aufwendig programmierte, mit Hilfe externer Bibliotheken. Meine damaligen Programme waren mehr ein Zusammenstecken von Komponenten, denn ein Programmieren.

Jetzt kamen also die Entwurfsmuster und das objektorientierte Design. Plötzlich waren nicht mehr nur der Inhalt von Klassen wichtig - sondern auch deren Anordnung und Beziehung zueinander. Die Struktur des Programms war für mich eine neue Dimension. Entwurfsmuster sind keine neuen APIs, es ist keine neue Bibliothek oder Framework. Sie sind nicht mal in Java geschrieben. Es ist einfach nur eine Idee.

Diese Erkenntnis, vor ungefähr 18 Jahren, änderte Alles. Ich nutze seit dem viel weniger externe Bibliotheken. Mein Code ist viel aufgeräumter. Vererbung ist enorm selten geworden. Ja, ich konzentriere mich wieder auf Bedingungen, Schleifen und Sequenzen - und dieses geheimnisvolle Unsichtbare mit dem Namen Softwaredesign.

Clean Code: Entwurfsmuster und objektorientiertes Design ist ein Kurs für jeden, der sich für moderne Softwareentwicklung interessiert. Hierbei ist es egal, ob man Anfänger ist oder schon länger Programmiert. Die Beispiele und Aufgaben sind in JAVA geschrieben - jedoch ist der Kurs für jeden verständlich, der eine objektorientierte Sprache beherrscht.

Neben den wichtigsten Entwurfsmustern werden auch grundlegende Prinzipien moderner Softwareentwicklung vermittelt. Auch ist es mir sehr wichtig, das Verständnis für das "Wieso" zu lehren. Wieso braucht man Entwurfsmuster?

Meine Motivation für diesen Kurs ist es, Entwurfsmuster und Prinzipien moderner Softwareentwicklung so zu zeigen, dass du ein besserer Softwareentwickler wirst und dein Code lesbarer, qualitativ hochwertiger und einfach besser wird.

Thorsten Diekhof

Themen die behandelt werden:

  • Grundlagen der Objektorientierung
  • Polymorphismus
  • Kohäsion
  • Kopplung
  • Entwurfsmuster / Design Pattern
  • Muster: Strategie / strategy
  • Muster: Kommando / command
  • Muster: Zustand / state
  • Muster: Beobachter / observer
  • Muster: Schablonenmethode / template method
  • Muster: Dekorierer / decorator
  • Muster: Fassade / facade
  • Muster: Adapter / adapter
  • Muster: Kompositum / composite
  • Muster: Fabrikmethode / factory method
  • (Anti-)Muster: Singelton
  • Prinzip: Du wirst es nicht brauchen?
  • Prinzip: Kapseln was variiert
  • Prinzip: Komposition über Vererbung
  • Prinzip: Programmiere auf Schnittstellen
  • Prinzip: Das Hollywood-Prinzip
  • Prinzip: Offen aber geschlossen
  • Prinzip: Lockere Bindung bitte
  • Prinzip: Sprich nicht mit Fremden
  • Prinzip: Nur eine Aufgabe, nur einen Grund
  • Prinzip: Verwende Abstraktionen

Enroll now

What's inside

Learning objectives

  • Du kannst am ende des kurses entwurfsmuster erkennen und selbst anwenden.
  • Du kannst mit anderen entwicklern über objektorientiertes design kommunizieren.
  • Du kennst wichtige prinzipien und kannst deinen code entsprechend entwickeln.
  • Du bist einen schritt weiter gekommen - auf dem weg zum wirklich guten entwickler.

Syllabus

Einleitung
Grundlagen
Hausbau mit Lego
Der Hammer und der Nagel
Read more
Einfachheit
Wozu objektorientiertes Design?
Dein Trainer
UML kompakt
Grundlegende Ideen der Objektorientierung
Polymorphismus
Coden, designen und entwerfen.
Objektorientiertes Design
Wegschmeißen
Gutes Design
Änderungen im Code
Kohäsion und Kopplung: Outdoor-Version
Kopplung: Indoor-Version
Kohäsion: Indoor-Version
Der Preis für gutes Design
Prinzipien des objektorientierten Designs
Was sind Prinzipien? Wie nutze ich sie?
Prinzip: Du wirst es nicht brauchen!
Entwurfsmuster kategorisieren
Kategorien der Entwurfsmuster
Aufbau der Lektionen und BEISPIELCODE
Strategie (strategy)
Motivation
Prinzip: Kapseln, was variiert
Prinzip: Komposition über Vererbung
Prinzip: Programmiere auf Schnittstellen
Theorie
Beobachter (observer)
Zusammenfassung
Übung
Praxis
Kommando (command)
Dekorierer (decorator)
Das Hollywood-Prinzip
Zusammenfassung und Übung
Zustand (state)
Prinzip: Offen, aber geschlossen
Prinzip: Sprich nicht mit Fremden!
Prinzip: Lockere Bindung bitte
Schablonenmethode (template method)
Prinzip: Nur eine Aufgabe, nur einen Grund
Fassade (facade)
Adapter
Kompositum (composite)
Fabrikmethode (factory method)
Prinzip: Verwende Abstraktionen
Singleton
Ein Anti-Pattern
Hier beantworte ich Fragen von TeilnehmerInnen
Kapselung
Events oder Beobachter
BONUS: Hier gibt es tolle Angebote von mir

Nutze auf der Webseite abenteuer-softwareentwicklung.de den Code BETA um 50 % auf alle Kurse zu erhalten.

Weitere Kurse zum Bestpreis
Bonus: Coding.Cards

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Vermittelt die Bedeutung von Softwaredesign und Entwurfsmustern, was zu saubererem und besser lesbarem Code führt
Behandelt grundlegende Prinzipien der modernen Softwareentwicklung, die für die Erstellung robuster und wartbarer Anwendungen unerlässlich sind
Konzentriert sich auf das "Warum" hinter Entwurfsmustern, was ein tieferes Verständnis und eine effektivere Anwendung fördert
Verwendet Java für Beispiele und Aufgaben, ist aber für jeden verständlich, der eine objektorientierte Sprache beherrscht
Behandelt das Singleton-Muster als Anti-Muster, was ein kritisches Verständnis von Designentscheidungen fördert
Erfordert Kenntnisse einer objektorientierten Programmiersprache, was für Anfänger ohne Programmiererfahrung eine Hürde darstellen könnte

Save this course

Save Clean Code: Entwurfsmuster und objektorientiertes Design to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Clean Code: Entwurfsmuster und objektorientiertes Design with these activities:
Wiederholung der Grundlagen der Objektorientierung
Frischen Sie Ihr Wissen über die Grundlagen der Objektorientierung auf, um ein besseres Verständnis für die in diesem Kurs behandelten fortgeschrittenen Konzepte zu erhalten.
Browse courses on OOP
Show steps
  • Überprüfen Sie die Konzepte von Klassen und Objekten.
  • Üben Sie das Schreiben einfacher Klassen in Java.
  • Erforschen Sie die Prinzipien von Vererbung und Polymorphismus.
Rezension: "Clean Code: A Handbook of Agile Software Craftsmanship"
Lesen Sie "Clean Code", um Ihr Verständnis für die Prinzipien guter Code-Qualität und Wartbarkeit zu vertiefen, die für die Anwendung von Entwurfsmustern unerlässlich sind.
Show steps
  • Lesen Sie die relevanten Kapitel über Code-Stil und Struktur.
  • Identifizieren Sie die wichtigsten Prinzipien und wenden Sie sie auf Ihren Code an.
  • Diskutieren Sie die Konzepte mit anderen Kursteilnehmern.
Übungsaufgaben zu Entwurfsmustern
Lösen Sie Übungsaufgaben zu verschiedenen Entwurfsmustern, um Ihr Verständnis zu testen und zu festigen.
Show steps
  • Suchen Sie nach Übungsaufgaben im Internet oder in Büchern.
  • Lösen Sie die Aufgaben selbstständig und vergleichen Sie Ihre Lösungen mit anderen.
  • Analysieren Sie Ihre Fehler und lernen Sie daraus.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Erstellen Sie eine Präsentation über ein Entwurfsmuster
Erstellen Sie eine Präsentation über ein bestimmtes Entwurfsmuster, um Ihr Wissen zu vertiefen und es anderen zu vermitteln.
Show steps
  • Wählen Sie ein Entwurfsmuster aus, das Sie interessiert.
  • Recherchieren Sie das Muster gründlich und sammeln Sie Informationen.
  • Erstellen Sie eine Präsentation mit Beispielen und Erklärungen.
  • Präsentieren Sie Ihre Arbeit vor anderen Kursteilnehmern.
Implementierung von Entwurfsmustern in einem Projekt
Wenden Sie die gelernten Entwurfsmuster in einem eigenen Projekt an, um Ihr Verständnis zu festigen und praktische Erfahrung zu sammeln.
Show steps
  • Wählen Sie ein Projekt, das sich für die Anwendung von Entwurfsmustern eignet.
  • Identifizieren Sie die Stellen im Code, an denen Entwurfsmuster sinnvoll eingesetzt werden können.
  • Implementieren Sie die ausgewählten Entwurfsmuster und testen Sie Ihren Code gründlich.
  • Dokumentieren Sie Ihre Erfahrungen und Erkenntnisse.
Rezension: "Design Patterns: Elements of Reusable Object-Oriented Software"
Lesen Sie das "Gang of Four"-Buch, um ein tiefes Verständnis der klassischen Entwurfsmuster zu erlangen und ein solides Fundament für die Anwendung dieser Muster zu schaffen.
Show steps
  • Lesen Sie die Beschreibungen der einzelnen Entwurfsmuster.
  • Verstehen Sie die Vor- und Nachteile jedes Musters.
  • Überlegen Sie, wie Sie die Muster in Ihren eigenen Projekten einsetzen können.
Beitragen zu Open-Source-Projekten
Tragen Sie zu Open-Source-Projekten bei, die Entwurfsmuster verwenden, um praktische Erfahrungen zu sammeln und von anderen Entwicklern zu lernen.
Show steps
  • Finden Sie ein Open-Source-Projekt, das Sie interessiert.
  • Identifizieren Sie Stellen im Code, an denen Sie beitragen können.
  • Implementieren Sie Ihre Änderungen und reichen Sie sie zur Überprüfung ein.
  • Nehmen Sie am Review-Prozess teil und lernen Sie von den Rückmeldungen.

Career center

Learners who complete Clean Code: Entwurfsmuster und objektorientiertes Design will develop knowledge and skills that may be useful to these careers:
Softwareentwickler
Ein Softwareentwickler entwirft, entwickelt und wartet Softwareanwendungen. Diese Rolle erfordert ein tiefes Verständnis von objektorientiertem Design und Entwurfsmustern, da diese die Grundlage für robuste und wartbare Softwaresysteme bilden. Dieser Kurs hilft einem Softwareentwickler, die Prinzipien hinter sauberem Code und objektorientiertem Design zu verstehen. Die im Kurs behandelten Themen wie Polymorphismus, Kohäsion und Kopplung sowie spezifische Entwurfsmuster wie Strategie, Beobachter und Kommando sind für einen Softwareentwickler von zentraler Bedeutung und führen zu besser geschriebenem Code.
Softwarearchitekt
Ein Softwarearchitekt ist verantwortlich für die Gestaltung der hochrangigen Struktur von Softwaresystemen. Diese Position erfordert ein hohes Maß an Wissen über Entwurfsmuster und objektorientiertes Design, um skalierbare und robuste Systeme zu schaffen. Dieser Kurs kann einem angehenden Softwarearchitekten helfen, die Zusammenhänge zwischen Code, Design und den zugrundeliegenden Prinzipien zu verstehen. Die im Kurs vermittelten Kenntnisse über das 'Warum' hinter Entwurfsmustern, sowie über Prinzipien wie 'Kapseln was variiert' und 'Komposition über Vererbung', unterstützen Softwarearchitekten bei der fundierten Entscheidungsfindung. Ein Softwarearchitekt profitiert von den im Kurs angesprochenen Themen.
Anwendungsentwickler
Ein Anwendungsentwickler erstellt spezielle Softwareanwendungen für bestimmte Aufgaben oder Branchen. Diese Rolle benötigt ein Verständnis von sauberem Code und objektorientiertem Design, um effiziente und wartbare Anwendungen zu entwickeln. Dieser Kurs hilft einem Anwendungsentwickler, die Grundlagen der Objektorientierung und die Anwendung von Entwurfsmustern zu verstehen. Die im Kurs behandelten Entwurfsmuster, wie Strategie und Fabrikmethode, können direkt in der täglichen Arbeit eines Anwendungsentwicklers eingesetzt werden, um wiederverwendbaren und flexiblen Code zu schreiben.
Systementwickler
Ein Systementwickler arbeitet an der Erstellung und Wartung von Softwaresystemen auf niedriger Ebene. Diese Rolle profitiert von einem tiefen Verständnis von Softwarearchitektur und Design. Dieser Kurs hilft einem Systementwickler, die Prinzipien guten Softwaredesigns und die Bedeutung von Entwurfsmustern zu erkennen. Die im Kurs vermittelten Konzepte wie Kohäsion, Kopplung und das 'Hollywood-Prinzip' sind für Systementwickler relevant, um robuste und flexible Systeme zu entwickeln, die den Anforderungen an die Systemebene entsprechen. Ein Systementwickler kann den Kurs nutzen und profitiert von den im Kurs angesprochenen Themen.
Spieleentwickler
Ein Spieleentwickler programmiert die interaktiven Elemente von Videospielen. Diese Stelle erfordert die Fähigkeit, komplexe Systeme mit klarem Code und effizienter Architektur zu entwerfen. Dieser Kurs kann einem Spieleentwickler helfen, die notwendigen Grundlagen für die Gestaltung robuster und erweiterbarer Spielsysteme zu legen. Die Behandlung von Entwurfsmustern wie dem Beobachter- und dem Zustandsmuster ist besonders nützlich für Spieleentwickler, da diese Muster oft zur Modellierung von Spielmechaniken und -zuständen verwendet werden. Ein Spieleentwickler kann von den im Kurs angesprochenen Themen profitieren.
Mobile App Entwickler
Ein Mobile App Entwickler ist verantwortlich für die Entwicklung von Anwendungen für mobile Geräte. Diese Position erfordert ein Verständnis für die Prinzipien guten Designs und die Fähigkeit, effizienten, lesbaren Code zu schreiben. Dieser Kurs kann einem Mobile App Entwickler helfen, seine Fähigkeiten im Bereich der Objektorientierung und der Anwendung von Entwurfsmustern zu verbessern. Die im Kurs behandelten Prinzipien wie 'Kapseln was variiert' und 'Programmiere auf Schnittstellen' sind besonders relevant für die Entwicklung flexibler und wartbarer mobiler Anwendungen. Ein Mobile App Entwickler wird diesen Kurs als nützlich empfinden.
Webentwickler
Ein Webentwickler designt und entwickelt die Funktionalität von Webseiten. Obwohl Webentwicklung oft auf anderen Paradigmen beruht, kann dieser Kurs einem Webentwickler helfen, ein besseres Verständnis für die Prinzipien der Programmierung zu entwickeln. Dieser Kurs kann die Fähigkeiten von Webentwicklern verbessern, insbesondere im Backend-Bereich, wo objektorientierte Prinzipien und Entwurfsmuster zunehmend verwendet werden. Das Verständnis von Prinzipien wie 'Lockere Bindung bitte' und der Anwendung von Entwurfsmustern wie dem Fassadenmuster kann die Strukturierung und Wartbarkeit von Webanwendungen verbessern. Ein Webentwickler wird diesen Kurs als nützlich empfinden.
Embedded Softwareentwickler
Ein Embedded Softwareentwickler schreibt Software für eingebettete Systeme. Diese Rolle erfordert ein tiefes Verständnis für die Prinzipien der Softwareentwicklung unter ressourcen beschränkten Bedingungen. Dieser Kurs kann einem Embedded Softwareentwickler helfen, seine Fähigkeiten im Bereich des Designs und der Implementierung komplexer Softwaresysteme zu verbessern. Die behandelten Themen, wie die Reduzierung von Kopplung und die Erhöhung der Kohäsion, können helfen, die Robustheit und Wartbarkeit eingebetteter Systeme zu verbessern. Ein Embedded Softwareentwickler kann diesen Kurs als nützlich empfinden.
Data Engineer
Ein Data Engineer entwirft und entwickelt Systeme zur Verarbeitung großer Datenmengen. Die Rolle erfordert ein tiefes Verständnis von Softwarearchitektur und Design. Dieser Kurs kann einem Data Engineer helfen, die Prinzipien guten Softwaredesigns und die Bedeutung von Entwurfsmustern zu erkennen. Die besprochenen Konzepte, wie die Prinzipien 'Komposition über Vererbung', die 'Fabrikmethode' und der 'Decorator', können für die Entwicklung von modularen Datenpipelines nützlich sein. Ein Data Engineer wird von diesem Kurs profitieren.
DevOps Engineer
Ein DevOps Engineer arbeitet an der Automatisierung von Entwicklungsprozessen und dem Management von IT-Infrastruktur. Obwohl diese Rolle nicht primär in der Softwareentwicklung liegt, kann ein Verständnis für Designmuster und objektorientiertes Design nützlich sein. Dieser Kurs kann einem DevOps Engineer eine Perspektive für robustere und wartbarere Softwareentwicklung bieten. Ein Verständnis von Modulartät und Interoperabilität der einzelnen Teile, wie es im Kurs gelehrt wird, hilft, Systeme besser zu verstehen, zu verwalten und zu automatisieren. Ein DevOps Engineer kann diesen Kurs als nützlich empfinden.
Technischer Projektmanager
Ein technischer Projektmanager leitet Softwareprojekte. Dabei muss er ein tiefes Verständnis für den Entwicklungsprozess haben. Dieser Kurs kann einem technischen Projektmanager ein besseres Verständnis für die technischen Aspekte der Softwareentwicklung und die Bedeutung von gutem Design vermitteln. Das Verständnis von Konzepten und Design Patterns wie 'Beobachter', 'Strategie' und 'Zustand' kann helfen, die Komplexität von Projekten besser zu erfassen. Ein technischer Projektmanager wird von diesem Kurs profitieren.
Technischer Berater
Ein Technischer Berater berät seine Kunden zu Softwarelösungen und deren Implementierung. Diese Position erfordert ein tiefes Verständnis für die Architektur und den Aufbau von Softwaresystemen. Dieser Kurs hilft einem Technischen Berater, sich ein besseres Bild von den Designentscheidungen und Prinzipien zu machen, die in der modernen Softwareentwicklung üblich sind. Das Wissen über die behandelten Entwurfsmuster und die Prinzipien des objektorientierten Designs hilft einem Technischen Berater bei der Beurteilung der Qualität und Wartbarkeit von Softwarelösungen. Ein Technischer Berater kann diesen Kurs als nützlich empfinden.
Qualitätssicherungsspezialist
Ein Qualitätssicherungsspezialist testet Software und sucht nach Fehlern. Obwohl diese Rolle nicht direkt mit Softwareentwicklung verbunden ist, kann ein Verständnis für Design Patterns und objektorientiertes Design hilfreich sein. Dieser Kurs kann einem Qualitätssicherungsspezialisten helfen, die Struktur und die Komplexität von Code besser zu verstehen. Dieses Wissen kann bei der Entwicklung von effektiveren Teststrategien verwendet werden, insbesondere bei der Überprüfung der korrekten Implementierung von Design Patterns wie dem 'Decorator' oder dem 'Command'. Da die Qualitätsicherung auf die Struktur und das Design der Software achtet, kann der Kurs einem Qualitätssicherungsspezialisten von Nutzen sein.
IT Trainer
Ein IT Trainer unterrichtet andere in Informationstechnologie. Dieser Kurs kann ihm oder ihr sehr helfen, die Grundlagen des objektorientierten Programmierens und die Anwendung von Entwurfsmustern zu vermitteln. Kenntnisse über die Prinzipien des objektorientierten Designs, wie im Kurs besprochen, helfen einem IT-Trainer, die Materie klar und verständlich zu erklären. Dieses Wissen über den 'Beobachter', 'Kompositum', 'Fabrikmethode' und andere Entwurfsmuster, ist nützlich, um didaktische Beispiele zu erstellen und zu vermitteln. Ein IT Trainer kann diesen Kurs als nützlich empfinden.
Technischer Redakteur
Ein Technischer Redakteur dokumentiert Software und technische Produkte. Ein solides Verständnis der Softwarearchitektur ist wichtig, um effiziente und genaue Dokumentation zu verfassen. Dieser Kurs kann einem Technischen Redakteur helfen, ein tiefes Verständnis für die Konzepte der Softwareentwicklung zu gewinnen, insbesondere in Bezug auf Design und Struktur. Die im Kurs behandelten Entwurfsmuster und Designprinzipien geben einem Technischen Redakteur einen Einblick in die Entscheidungen und Überlegungen, die bei der Entwicklung von Software getroffen werden. Ein Technischer Redakteur wird diese Erkenntnisse als hilfreich empfinden.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Clean Code: Entwurfsmuster und objektorientiertes Design.
Dieses Buch ist ein Klassiker der Softwareentwicklung und behandelt Themen wie Code-Qualität, Lesbarkeit und Wartbarkeit. Es ergänzt den Kurs hervorragend, indem es praktische Ratschläge und Beispiele für die Umsetzung von Clean Code Prinzipien liefert. Es ist ein nützliches Nachschlagewerk für die tägliche Arbeit als Softwareentwickler und wird oft als Lehrbuch an Universitäten verwendet.
Dieses Buch, auch bekannt als "Gang of Four"-Buch, ist ein Standardwerk über Entwurfsmuster. Es bietet eine umfassende Einführung in die wichtigsten Entwurfsmuster und ihre Anwendung. Es ist zwar etwas älter, aber die grundlegenden Konzepte sind immer noch relevant und wertvoll. Es dient als Referenz für die Definitionen und die Struktur der einzelnen Muster.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser