Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Prinzipien objektorientierter Softwareentwicklung » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 5 Beiträge
Slight

Okay super, dann hab ich das jetzt verstanden, dankeschön für deine Hilfe smile
eulerscheZahl

Bei Builder/Fabrik werden zwar Methoden aufgerufen, aber das ist eine Einbahnstraße, keine ausgeprägte Kommunikation wie beim Observer.

Bei der Fabrik brauchst du keine Polymorphie. Wenn du es zur abstrakten Fabrik erweiterst, wird es diesbezüglich schon interessanter.

Und das Singleton ist nicht sonderlich spektakulär. Nach deinem Text (insbesondere zum Observer) vermute ich, dass du Java lernst. In C# musst du die Klasse einfach nur aus static deklarieren und fertig ist das Singleton.
Slight

Dankeschön für die Antwort, dann ergänze ich das bei mir.
Ist im Builder und Factory Pattern denn z.B. Kommunikation unter Objekten zu finden?
Beim Factory Pattern bin ich mir auch unsicher, ob man da vielleicht auch Polymorphismus gibt, obwohl ich denke dass das nicht sein kann, denn es müssten ja dann zwei Klassen eine Methode erben und es gibt ja nur einen ConcreteCreator.

Und findet man im Singleton echt nur drei Prinzipien wieder?

Liebe Grüße
eulerscheZahl

Zitat:
Was bedeutet die Aggregation vom Director zum Builder? Findet man dort irgendwelche Prinzipien?

Der Direktor nutzt den Builder zum Bauen. Da du von einem abstrakten und zwei konkreten Buildern scheibst, liegt hier das Strategiemuster vor, das arbeitet mit Polymorphie (entgegen deiner Aussage).
Slight Prinzipien objektorientierter Softwareentwicklung

Meine Frage:
Halloo,

Ich studiere Wirtschaftsinformatik und schreibe bald eine Klausur im Modul Softwaretechnik. Dabei werden die Prinzipien der objektorientierter Softwareentwicklung eine Rolle spielen. Diese soll man in Design Patterns wiederfinden. Ich hoffe hier kennt sich einer damit aus und kann mir weiterhelfen.

Wir haben das Singleton, Factory, Builder und Observer Pattern besprochen und sollen dort die Prinzipien Abstraktion, Objektidentitäten, Berücksichtigung verschiedener Organsiationsprinzipien (Objekte lassen sich anhand verschiedener Hierarchieebenen anordnen), Vererbung, Kapselung, Geheimnisprinzip, Kommunnikation unter Objekten und Polymorphismus ausfindig machen. Meine Frage ist eigentlich nur, ob ich das alles so richtig gemacht habe, und ob es vielleicht was zu ergänzen gibt. Falls ich etwas zu ungenau geschrieben habe, sagt mir bitte Bescheid.
Vielen Dank im Voraus!

Meine Ideen:
Im Singleton findet man
- Objektidentitäten, Singleton soll ja gewährleisten, dass eine bestimmte Komponente nur einmal innerhalb eines Systems vorkommt, dafür sorgt die getInstance-Methode, da ich von dieser immer das selbe Objekt zurück bekomme. Das wäre in dem Fall Identität und nicht Gleichheit, habe ich das so richtig verstanden?
- Kapselung, wegen der privaten Methode Singleton() und dem privaten Attribut INSTANCE
- Geheimnisprinzip: Kapselung ist die Zugriffskontrolle für die Daten, die hier wie schon gesagt, zu finden ist. Es gibt keinen direkten Zugriff auf die INSTANCE-Variable, jedoch wird Zugriff über die getInstance-Methode gewährt.

Abstraktion, Berücksichtigung versch. Org., Vererbung, Kommunikation unter Objekten und Polymorphismus sind hier nicht zu finden.

Im Builder findet man:
- Abstraktion weil die zwei ConcreteBuilder1 und 2 Abstraktionen von dem Builder sind. Außerdem wird zur Erzeugung von Objekten eine Abstraktionsschicht implementiert, daran lässt sich Abstraktion auch zeigen.
- Objektidentitäten: Da das Builder der Erzeugung von Objekten unterschiedlichen Typs dient, müssen Objektidentitäten vorhanden sein. (Reicht das so, oder kann man das irgendwie eindeutiger formulieren?)
- Berücksichtigung verschiedener Organisationsprinzipien: Dieses Prinzip ist vorhanden, was man an der Relation zwischen den ConcreteBuildern und dem Product sieht.
- Vererbung: ConcreteBuilder erben vom Builder (die Methode buildPart() ). Erkennt man an dem Pfeil der von den ConcreteBuildern zum Builder geht.

Kapselung, Geheimnisprinzip, Kommunikation unter Objekten und Polymorphismus sind hier nicht zu finden. Was bedeutet die Aggregation vom Director zum Builder? Findet man dort irgendwelche Prinzipien?

Im Factory findet man:
- Abstraktion: ConcreteCreator ist Abstraktion vom Creator.
- Objektidentitäten: erzeugt viele Objekte vom selben Typ und mit gleichen Eigenschaften, dies wäre in dem Fall Identität, da sie vom selben Typ sind. Oder ist es Gleichheit, wegen den gleichen Eigenschaften?
- Berücksichtigung verschiedener Organisationsprinzipien: Dieses Prinzip ist vorhanden, was man an der Relation zwischen den ConcreteCreator und dem Product sieht.
- Vererbung: ConcreteCreator erben vom Creator (die Methode factoryMethod() ).

Kapselung, Geheimnisprinzip, Kommunikation unter Objekten und Polymorphismus sind hier nicht zu finden.

Im Observer findet man:
- Abstraktion: ConcreteOserver sind Abstraktionen vom Observer. Außerdem findet sich hier Abstraktion auch in der abstrakten Klasse Observer wieder.
- Berücksichtigung verschiedener Organisationsprinzipien: Dieses Prinzip ist vorhanden, da das Subject eine Observerliste enthält. Diese Observerliste bildet eine Hierarchieebene.
- Vererbung: ConcreteObserver erben vom Observer(die Methode notify() )
- Kommunikation unter Objekten, denn das beobachtete Objekt informiert den Beobachter über Änderungen. Oft wird an den Beobachter noch eine Nachricht geschickt.
- Polymorphismus: Eine Möglichkeit für Polymorphismus ist das Überschreiben einer geerbten Klasse aus einer abstrakten Klasse. Da die Klasse Observer abstrakt ist, und die ConcreteObserver von dieser abstrakten Klasse die Methode notify() erben, ist es möglich, dass sich die Methoden in den zwei Klassen jeweils unterschiedlich verhalten, trotz des identischen Methodenrumpfs. Hab ich das richtig verstanden?

Objektidientitäten, Kapselung und das Geheimnisprinzip sind hier nicht zu finden.