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

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Prinzipien objektorientierter Softwareentwicklung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Prinzipien objektorientierter Softwareentwicklung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Slight
Grünschnabel


Dabei seit: 02.09.2015
Beiträge: 3

Prinzipien objektorientierter Softwareentwicklung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
02.09.2015 15:30 Slight ist offline Beiträge von Slight suchen Nehmen Sie Slight in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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).

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 02.09.2015 19:40.

02.09.2015 19:40 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Slight
Grünschnabel


Dabei seit: 02.09.2015
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
02.09.2015 19:56 Slight ist offline Beiträge von Slight suchen Nehmen Sie Slight in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)
03.09.2015 15:26 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Slight
Grünschnabel


Dabei seit: 02.09.2015
Beiträge: 3

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Okay super, dann hab ich das jetzt verstanden, dankeschön für deine Hilfe smile
05.09.2015 12:42 Slight ist offline Beiträge von Slight suchen Nehmen Sie Slight in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Prinzipien objektorientierter Softwareentwicklung