Slight
Cadet 2nd Year
- Registriert
- Juni 2015
- Beiträge
- 19
Halloo,
Ich schreibe bald eine Klausur im Modul Softwaretechnik. Dabei werden die Prinzipien der objektorientierter Softwareentwicklung eine Rolle spielen, die man in Design Patterns wiederfinden soll. Ich wusste nicht in welches Forum ich es schreiben sollte, und weil das Thema zu Java gehört, habe ich mich für dieses entschieden, und 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, Kommunikation 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!
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.
Ich schreibe bald eine Klausur im Modul Softwaretechnik. Dabei werden die Prinzipien der objektorientierter Softwareentwicklung eine Rolle spielen, die man in Design Patterns wiederfinden soll. Ich wusste nicht in welches Forum ich es schreiben sollte, und weil das Thema zu Java gehört, habe ich mich für dieses entschieden, und 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, Kommunikation 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!
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.