objektorientierter Entwurf < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:31 Do 30.07.2009 | Autor: | Boki87 |
Aufgabe | [Dateianhang nicht öffentlich]
[Dateianhang nicht öffentlich]
[Dateianhang nicht öffentlich]
[Dateianhang nicht öffentlich] |
Hallo
ich lerne gerade auf meine Informatik III Prüfung.
Könnte mir bitte jemand sagen ob meine Ideen richtig sind und bei den Unklarheiten helfen.
a)ist ein, da Brummbaer abgeleitete Klasse von Kuscheltier
b)hat ein, Begründung???
c)
[Dateianhang nicht öffentlich]
d)protected Vector Zusatzfunktionen= new Vector();
e)class Affe extends Kuscheltier{
String getBeschreibung(){
String name="Affe";
return(name);
}
int getGroesse(){
int groesse=5;
return(groesse);
}
int getGewicht(){
int gewicht=5;
return(gewicht);
}
int getVerkaufspreis(){
int preis=5;
return(preis);
}}
Wie mache ich das mit den Zusatzfunktionen denn?
f) String Zusatzfunktionen(){
Vector Kuscheltier=new Vector();
int x=Kuscheltier.size();
String s;
for(int i=1; i<=x; i++){
s+=Kuscheltier.get(i).toString();
}}
Ist das alles soweit richtig?
Vielen Dank
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich] Anhang Nr. 2 (Typ: jpg) [nicht öffentlich] Anhang Nr. 3 (Typ: jpg) [nicht öffentlich] Anhang Nr. 4 (Typ: jpg) [nicht öffentlich] Anhang Nr. 5 (Typ: png) [nicht öffentlich]
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:04 Do 30.07.2009 | Autor: | daN-R-G |
Hallo!
Zu a) Geht so durch! ;)
Zu b) Stimmt auch. Zur Begründung...nun ja. Ich weiß nicht in welchen Detailgrad ihr dort arbeiten sollt, sofert eine "hat-ein"-Relation eine detailiertes Arbeiten erlaubt ;) Die Zusatzfunktionen sind im Prinzip ja eine Komposition, also sind Elemente, die ein Kuscheltier "besitzt".
Zu c) Der Affe soll doch Waschbar sein! Dann müsste auch dieser das Interface implementieren, und nicht der Hoppelhase.
Zudem fehlen die Verbindungen zu den Zusatzfunktionen (mit evtl. Kardinalitäten).
Zu d) Könnte man machen, auch wenn ich eine Set verwenden würde. In meinen augen würde es keine Sinn machen, dass ein Kuscheltier die gleiche Zusatzfunktion mehrfach besitzt und die Reihenfolge wäre für mich auch egal. Aber das ist wie gesagt Geschmacksacke.
Sichtbarkeiten setze ich auch eher auf private, und nur sofern ein guter Grund dazu besteht, dass eine Subklasse aufs Attribut direkt zugreifen soll, mache ich dieses protected. Aber das ist halt ansichtssache.
Zu e) Was verstehst du denn nicht?
Du weißt, was ein Konstruktor ist? Sobald du z.B. einen Affen erstellst, soll dieser halt direkt die gewünschten Zusatzfunktionen in deine (als Attribut vorhandene) Collection hinzugefügen.
Zu f) Die Implementierung macht irgendwie wenig Sinn...
Du erstellst eine neuen Vector, dann fragst du seine Größe ab (ist in dem Fall immer 0), und durchläufst dann diesen.
Anstatt einen neuen Vector zu erstellen, solltest du lieber den benutzen, den du als Attribut zur verfügung hast! In dem befinden sich doch auch die Zusatzfunktionen.
Bedenke auch: Der Index beginnt bei 0!
Tipp: Bei den neuen Java-Collections kann man durch diese per Erweiterter for-Schleife iterieren. Habt ihr vll. auch schon mit Generics gearbeitet?
Ansonsten:
for (int i = 0; i < zusatzfunktionen.size(); i++) {
Zusatzfunktion funktion = (Zusatzfunktion) zusatzfunktionen.get(i);
// Weiterer Code für die Ausgabe...
}
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 22:56 Do 30.07.2009 | Autor: | Boki87 |
Vielen Dank für die Antwort, das mit dem Hoppelhasen war ein Leichtsinnsfehler :)
[Dateianhang nicht öffentlich]
d) Ich habe die Sichtbarkeit auf protected gesetzt, da die abgeleiteten Klassen Affe und Brummbaer auch drauf zugreifen sollen.
e)Mache ich dann einfach Zusatzfunktionen.add(new KannSingen());?
Komplett dann:
class Affe extends Kuscheltier{
Affe(){
Zusatzfunktionen.add(new KannSingen());}
String getBeschreibung(){
String name="Affe";
return(name);
}
int getGroesse(){
int groesse=5;
return(groesse);
}
int getGewicht(){
int gewicht=5;
return(gewicht);
}
int getVerkaufspreis(){
int preis=5;
return(preis);
}}
f)Ist das dann so richtig?
String Zusatzfunktionen(){
for (int i = 0; i < zusatzfunktionen.size(); i++) {
Zusatzfunktion funktion = (Zusatzfunktion) zusatzfunktionen.get(i);
} }
Was gebe ich denn hier jetzt genau aus?
Gruß
Boki87
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:11 Do 30.07.2009 | Autor: | daN-R-G |
Hi!
Also das mit dem Diagramm stimmt so noch nicht genau. Jetzt würde ja jedem Kuscheltier genau eine Zusatzfunktion zugeordnet werden und jede Zusatzfunktion würde nur einem Kuscheltier gehören.
Ein Affe kann bzw. HAT ja sogar andere Funktionen als ein anderes Tier. Also müssten die Zugehörigkeiten schon zu den direkten Unterklassen gehören.
Zu dem Hinzufügen im Konstruktor: Ja! Falls dein Attribut in der Kuscheltier-Klasse "Zusatzfunktionen" heißt, ist das so gemeint.
Gewöhn dir aber Bitte ganz schnell an, alle Variablen mit Kleinbuchstaben zu beginnen. Das ist der "gute Ton" in den Java Coding-Conventions!
Bei Zusatzfunktionen.add(new KannSingen()) würde man direkt denken, dass add() eine Klassen-Methode der Klasse Zusatzfunktionen ist.
Bei der Schleife habe ich dir nur gesagt, wie du korrekt durch diese iterierst.
Die Methode soll ja einen String mit allen Zusatzfunktionen zurückgeben. So wie du es ursprünglich geplant hast, war das doch garnicht so falsch!!
Du erstellst einen String, an den du in jedem Schleifendurchlauf den Namen der Zusatzfunktion hinzufügtst und gibst diesem am ende der Methode zurück!
Implementier die Klassen doch einfach mal und führ das ganze aus. So lernst du am besten!
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 00:07 Fr 31.07.2009 | Autor: | Boki87 |
Hallo
vielen Dank nochmal. Ich habs jetzt probiert zu programmieren aber ich komm einfach nicht weiter.
Könntest du mir vllt noch einen Hinweis geben?
Vielen Dank
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:23 Fr 31.07.2009 | Autor: | daN-R-G |
Wo klappt denn etwas nicht?
Ich weiß grad leider nicht an welcher Baustelle du arbeitest...
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 00:39 Fr 31.07.2009 | Autor: | Boki87 |
Ich habe nochmal meinen Ansatz probiert:
String Zusatzfunktionen() {
String s= new String();
for( int i = 0; i < zusatzfunktionen.size(); i++){
s += zusatzfunktionen.get(i).toString();
}
return(s);
}
Ich kriege dauernd den Fehler, dass kein String zurückgegeben wird. Woran leigt das?
Vielen Dank
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 08:58 Fr 31.07.2009 | Autor: | daN-R-G |
Hm... direkt falsch ist da nichts.
Wie lautet die genaue Fehlermeldung und zeig mal genau den Code, der bei der in der Klasse steht. Also rauskopieren.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:30 Fr 31.07.2009 | Autor: | Boki87 |
Ich habs selber raus, vielen Dank nochmal
|
|
|
|