Diskussion:Muster

Aus Wikibooks
Wechseln zu: Navigation, Suche

Name[Bearbeiten]

Ich würde vorschlagen, dass Buch nach Entwurfsmuster zu verschieben. Unter dem Titel ist das Buch IMHO besser aufgehoben. -- Daniel B 20:49, 15. Mär 2005 (UTC)

Ack. Finde auch dass das ein verständlicher Titel wäre. --Moolsan 22:53, 15. Mär 2005 (UTC)
Möglicherweise sogar Software-Entwurfsmuster ? --Moolsan 23:17, 15. Mär 2005 (UTC)33


Ist dies notwendig? Entwurfsmuster schränkt das Buch ein (sinnvoll?). Software noch davor (?) - es steht unter Programmieren. Grds. wäre ich mit Entwurfsmuster eher einverstanden. Insbesondere halte ich Software davor zu setzen für ungünstig in Hinblick auf den alphabetischen Index. (Wir können ja alles umbenennen in Softwareentwicklung mit <Programmiersprache> *g* ;-) --Bastie 08:04, 16. Mär 2005 (UTC)
Habe gerade nochmal meine Literatur durchgestöbert "Analysemuster" --Bastie 11:14, 16. Mär 2005 (UTC)
Also Entwurfsmuster scheint aber schon ein Recht verbreiteter Begriff zu sein. siehe [1]. Der englische Begriff dafür ist meines Wissens auch Design Patterns. Aber im Grunde ist's mir egal ;)
--Moolsan 11:21, 16. Mär 2005 (UTC)
Das Buch von Gamma & Co heißt auch Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software. Deshalb bin ich schon der Meinung, dass der Titel so passt. -- Daniel B 21:17, 17. Mär 2005 (UTC)
"Analysemuster -wiederverwendbare Objektmodelle" von Martin Fowler (Addison-Wesley). M.E. ein Buch was man nach dem der GoF lesen sollte. Wesentlich praxisnaher als "Entwurfsmuster..." aber nur als Aufbau zu diesem geeignet. Mein (hoffentlich) schlagendes Gegenargument ist: Wir wollen doch wohl kaum eine neue Übersetzung zum Buch der GoF bieten sond besser ;-) sein *g*.--Bastie 06:39, 19. Mär 2005 (UTC)
Ich bin auch für den Namen "Entwurfsmuster" - weil Design Patterns u. a. dafür da sind, ein einheitliches Vokabular zur Verfügung zu stellen. Und die verbreiteste Bezeichnung dafür ist - soweit ich weiss- Entwurfsmuster. Davon abgesehen ist das Wort "Muster" alleine nicht aussagekräftig.--Aler 16:34, 28. Mär 2005 (UTC)
Auch ich bin für das Umbenennen nach "Entwurfsmuster". Muster ist nicht aussagekräftig, und Entwurfsmuster scheint recht deutlich geprägt zu sein mittlerweile. --Schmiddtchen 15:36, 30. Jan. 2007 (CET)

Bin auch für "Entwurfsmuster" - falls überhaupt noch jemanden dieses Thema interessiert... ;-) --Gruß, pcworld 15:52, 10. Mai 2009 (CEST)

Aufbau[Bearbeiten]

Ich habe gerade zwei der Muster (Singleton, Schablonenmethode) mit Bildern ausgestattet und auch ein bisschen Inhaltlich ergaenzt. Da ich die arbeit des Orginalautors nicht allzusehr umwerfen wollte, habe ich mich an seine Struktur gehalten. Ich empfinde diese jedoch als hinderlich und schlage vor:

  • Code in den Muster-Erklaerungen (meinetwegen auch OO-Pseudocode, wenn die Sprachunabhaengigkeit gewahrt bleiben soll): Um Beispiele vorzuexerzieren waere das doch sehr hilfreich
  • Wo wir gerade dabei sind: Ausfuehrliche Beispiele! Denn nur so kann sich auch der Novize was drunter vorstellen
  • Vielleicht andere struktur:
    • Kurze Ein-Satz-Definition wie bisher
    • Laengere Einfuehrung und motivierendes Beispiel
    • UML
    • Implementation und Verwendung (letzteres bezieht sich darauf wie die "Umwelt" dieses Muster verwendet)
    • Loesung zum Motivierenden Beispiel
    • Meinetwegen Links zu verschiedenen Sprachen
    • Verwandte Muster

wobei diese Struktur natuerlich flexibel zu handhaben waere --Marwes 00:20, 12. Jan 2006 (UTC)


Über die Struktur können wir genr diskutieren. Ein paar allgemeine Anmerkungen.
  • Ich hatte als Ziel ein Sprachunabhängiges Buch hier abzustellen. Der Grund ist einfach: Beispiele die in einer Programmiersprache :geschrieben werden sind immer ein "Quasi"-Ausschluß für jemanden der diese nicht kann.
  • Zu den Beispielen - wenn du Beispiele hast rein damit. Mir fällt es etwas schwer ausführliche Beispiele (sprachneutral) zu :formulieren die ein Einsteiger noch versteht. Zu konkrete Beispiele haben IMHO auch immer etwas absolutes ansich...
  • "Verwendung (letzteres bezieht sich darauf wie die "Umwelt" dieses Muster verwendet)" - ich verstehe nicht was du meinst!
Generell ist mir die Struktur egal - ich möchte lediglich eine Einheitlichkeit haben. Vielleicht legst du unter Aufbau mal ein Beispiel zum Vergleich ab Muster:_Vorlage_neu. Daran ließe sich besser diskutieren.
Ansonsten bin ich mit der Entwicklung -hier- im moment eher unzufrieden, da irgendwas reinkopiert oder -geschrieben wird ohne dass die jeweiligen Artikel weiter ausgebaut werden (z.B. Fasade) - was ausdrücklich nicht gegen die jeweiligen Autoren gerichtet werden soll. Allerdings hinterläßt dieses bei mir einen faden Beigeschmack (sorry -persönliche Meinung)
--Bastie 13:44, 14. Jan 2006 (UTC)
Zur Sprachproblematik: Die am weitesten verbreiteten Sprachen sind doch sicherlich: C++, C# und Java. Wenn wir uns einer Java-ähnlichen Syntax bedienen und in der Einleitung darauf hinweisen, sollte es doch eigentlich keine Verständnisprobleme geben, oder? Und es wäre wirklich hilfreich im Text einige Code-Schnipsel unterbringen zu können: Beim Muster Schablonenmethode habe ich das z.B. gemacht - allerdings noch mit sehr stark abstrahiertem Code...
"Zu konkrete Beispiele haben IMHO auch immer etwas absolutes ansich..." den Satz versehe ich nicht - ist das nun eine zustimmende oder ablehnende Äußerung?
Mit "Verwendung" meine ich, wie ein Klient von diesem Muster Gebrauch macht (z.B. bei Singleton: Aufruf der gibInstanz()-Methode).
Ich habe mir zunächst mal folgendes vorgenommen (gemäß dem Motto mit dem Einfachen zu beginnen): Für alle Muster UML-Grafiken erstellen (evtl. für ein paar auch Sequenz-Diagramme - ist z.B. für den Beobachter recht hilfreich) und Beispiele coden. Bisher habe ich Grafiken für: Fassade, Singleton, Schablonenmethode, Beobachter, Kompositum, Adapter und Iterator. Code existiert für: Singleton, NullPattern, Beobachter (neu), und Iterator (neu).
Ein paar Worte zu den Bildern: Zwar gibt es in der Wikipedia schon teilweise welche, ein einheitlicher Look wäre allerdings wünschenswert, weshalb ich lieber neue malen will.
Zum Code: Ich bin dafür möglichst keine Bibliotheken zu verwenden, sondern ausführbaren (mit main() :-) ) Code "from scratch" zu schreiben. Grund: In den Bibliotheken kommen die meisten Muster in leicht "verwaschener" Form vor; für den "ersten Kontakt" scheint es mir aber besser zu sein, wenn sie in "Reinform" und in möglichst großer Übereinstimmung mit dem beschreibenden Text vorliegen. Ich habe versucht dies bei Iterator und Beobachter umzusetzten.
Wir sollten ausserdem eine Richtlinie zum Umgang mit englischen Ausdrücken einhalten (z.B. alles deutsch und englisch in Klammern, oder ...) - wie handhaben das andere Bücher? (werde mal nachschauen). Grüße, Markus
Nachtrag: das mit den Umlauten tut mir leid - im Moment sitze ich an meinem Notebook, aber die anderen Änderungen habe ich von einem Uni-Rechner aus gemacht (mache gerade ein Auslandssemeter)

Mehr allgemeine Erklärungen[Bearbeiten]

Hi und erstmal Dnake das einer etwas Umfassendes zu diesem Thema schreibt, bin Fachinformatiker Anwendungsentwicklung und steige da nicht wirklich durch, weder in der Berufschule noch im Betrieb ist da was zu hören. Deswegen wäre es schön, wenn etwas mehr auf den allgemeinen Kram eingegangen werden könnte (aber bitte etwas verstäändlicher als im Wikipedia Artikel zu dem Thema ;)) Was mich z.B. interessieren würde -Wozu? Klassen unterscheiden sich doch je nach Anwendungsfall -Wie anwenden? Gibt es eine Sprache für Paterns, wie erzeuge ich daraus Klassen/Code ...und sicherlich einiges mehr ^^

Zuerst: lies das Buch der Viererbande (Design Patterns: Elements of Reusable Object-Oriented Software ) - ich schätze das hier wird noch eine weile eine Baustelle bleiben :-)
In aller Kürze zu deinen Fragen: Ganz unabhängig für welchen Einsatzzweck eine Software geschrieben wird, treten immer wieder ähnliche (Entwurfs/Architektur-)Probleme auf: z.B. kann sich bei der Simulation einer Schaltung der Wert an einem Port ändern und mit diesem Port verbundene Bausteine müssen darüber informiert werden; oder bei einer Krankenhausverwaltungssoftware wird ein neuer Patient aufgenommen und dieser sollte doch dann bitte sofort in verschiedenen anderen Modulen auftauchen - was haben diese beiden Probleme nun gemeinsam? In beiden Fällen soll eine Änderung an einem Objekt (Binärport bzw. Patientenverwaltung) einer Reihe von anderen Objekten (an den Port angeschlossenen Bausteinen bzw. Labormodul, Stationsmodul, Küchenmodul,...) bekanntgemacht werden. Ein Entwurfsmuster ist nun eine Art Lösungsschablone für bestimmte Problemklassen (schaue dir für die Lösung der Beispielprobleme mal den Beobachter an). Und natürlich ist diese Schablone für ein konkretes Problem anzupassen!
Zweck der Übung: das Rad nicht zweimal erfinden (und insbesondere kein eckiges Rad erfinden); bessere Kommunikation unter den Entwicklern; hilft Code besser zu verstehen; und weitere (-> Buch von Gamma et altera)
Vielleicht hast du es ja schon gelesen: Entwurfsmuster stammen ursprünglich aus der Architektur - und ich finde da lassen sich schöne Analogien finden; z.B. diese: Das Problem besteht darin, dass Personen vom Erdgeschoss ins weit entfernte Dachgeschoss kommen müssen (ich schätze dieses Problem tritt in der Architektur recht häufig auf) - die Schablone zur Lösung: ein vertikaler Leutetransporter! (manche Zeitgenossen nennen sowas auch "Aufzug"). Nun gibt es aber durchaus verschiedene Arten von Aufzügen - das allgemeine Konzept eines vertikalen Leutetransporters muss eben für die verschiedenen konkreten Probleme angepasst werden: Expressaufzug, wenn's schnell gehen soll; ein Lastenaufzug, wenn's schwer wird; ein gläserner Aufzug, wenn's ums Repräsentieren geht; ...
Schließlich zum Code: Schau dir einfach die Beispiele an, dann siehst du, wie's geht.
Und hier noch eine Aufgabe für dich: Schreibe ein Beispiel für das Kompositum: Es geht darum, Zeichenobjekte hierarchisch zu gliedern; Primitivtypen (Kreis, Rechteck,...) können zu Gruppen zusammengefasst werden, Gruppen wiederum können mit anderen Graphikobjekten (Primitive oder Gruppen) zu noch größeren Gruppen zusammengefasst werden, und diese wiederum... Außerdem sollen Grafikobjekte "gezeichnet" werden können (sprich: Bezeichnung auf die Konsole schreiben) - eine Gruppe zu zeichnen heißt dabei nichts anderes als ihre Bestandteile zu zeichnen (welche ja wiederum Gruppen sein können...). Ich freue mich auf deine Lösung!
Viele Grüße -- Marwes 04:24, 28. Jan 2006 (UTC) (zur Uhrzeit: du musst 8 Stunden abziehen :-)
Ich habe mal aus deinen Ausführungen Marwes, den Fragen ein Kapitel Einführung begonnen.--Bastie 11:33, 28. Jan 2006 (UTC)
Da ja das GoF-Buch doch recht teuer ist, hier ein Tipp: Im vermutlich ersten Wiki der Welt [2] werden seit ewigen Zeiten Muster (engl. Patterns) diskutiert - die haben da scheinbar echt Ahnung vom Thema. Der Link sollte vielleicht sogar ins Buch, falls mal jemand mehr wissen möchte. -- Schmidt2 16:18, 12. Apr. 2008 (CEST)

Sinn dieses Projekts[Bearbeiten]

Das Buch

Gamma, Erich ; Helm, Richard ; Johnson, Ralph E. ; Vlissides, John: Entwurfsmuster. Elemente wieder verwendbarer objektorientierter Software. Bonn u.a.: Addison-Wesley, 1996
  • hat den gleichen Namen wie dieses Wikibook
  • enthält größtenteils die gleichen Muster
  • enthält sehr ähnliche Beschreibungen
  • enthält fast identische UML-Diagramme
  • hat einen besseren Aufbau der Muster (IMHO)

Warum soll eine Kopie dieses Buches angefertigt werden? Neben Copyright-Problemen sehe hier ich den Sinn nicht.

Einige Argumente finden sich unter Hilfe:Warum inhaltsoffene Lehrbücher?. --Yuuki Mayuki 05:51, 27. Mär 2006 (UTC)
"Entwurfsmuster" enthält ausdrücklich nur einige wichtige Muster - nicht alle. "Entwurfsmuster" enthält keine konkreten Beispiele einer in einer / mehreren Programmiersprachen (siehe Links zu Java Standard) Nebenbei "ähnliche" Beschreibung, gleiche Muster, fast identische UML Diagramme ist eine logische Folge des Sinn und Zwecks von (Entwurfs)mustern. Dieses Buch heißt eigentlich "Muster" (auch zur Abgrenzung). Bastie

Aus dem Artikelquelltext hierher verschoben[Bearbeiten]

Kann sich bitte jemand der Eindeutschung der Gruppenzusammenfassungen und der Begriffe einiger Muster annehmen?

Ich sehe ja ein, dass sie "eingedeutscht" werden sollen, aber ich kenne keine deutschen Begriffe, die gleichzeitig den geläufigen Namen des Musters widerspiegeln, da sie i.d.R. nur im Kontext des Englischen benutzt werden und "krampfhafte Zwangseindeutschung" m.E. das Ziel verfehlen würde.

Danke.


Mindestens die englischen Originalnamen sollten mit erwähnt werden!! --Schmiddtchen 15:33, 30. Jan. 2007 (CET)