Datenkapselung, Vererbung und UML

Henri8855

Mitglied
Hallo, ich brauche dringend Eure Hilfe. Ich habe leider keine Ahnung, was ich hier machen muss. Es wäre sehr nett, wenn jemand mir helfen könnte.
Liebe Grüße
 

Anhänge

  • 500CCD16-6BDD-4B1A-A0EF-AB96643AFE55.jpeg
    500CCD16-6BDD-4B1A-A0EF-AB96643AFE55.jpeg
    615,5 KB · Aufrufe: 34
Beste Antwort
K
Ja, sieht erst einmal gut aus.

Bezüglich Naming evtl. noch auf camelCase achten: setLeistung / setAnzahlInsassen.

Und evtl. an der Stelle noch einen Hinweis bezüglich möglicher Probleme:

Es kann problematisch sein, wenn ein Konstruktor eine Methode aufruft, die überschrieben werden kann. Also einfach mal ein Beispiel aus dem Fingern saugen:

Von Deiner Klasse Auto leite ich eine Klasse RennAuto ab. Das wird etwas in der Art:
Java:
public class RennAuto extends Auto {
    private Fahrgestell fahrgestell;
    
    public RennAuto(int leistung, int anzInsassen) {
        super(leistung, anzInsassen);
        
        fahrgestell = new SuperTollesFahrgestell();
    }
    
    @Override
    public void setLeistung(int leistung) {...

Henri8855

Mitglied
Aufgabe 1 habe ich probiert probiert, aber ich weiß nicht, ob das überhaupt Sinn ergibt? Nun weiß ich auch nicht, wie ich mit Aufgabe 2 weiter machen soll. Wie kann ich denn die Klasse PKW von meiner Klasse Auto abhängig machen?

Java:
public class Auto {
private int leistung;
private int anzahlInsassen;

public void setleistung(int value) {
this.leistung = value;
}
public int getleistung() {
return this.leistung;
}

public void setanzahlInsassen(int value) {
this.anzahlInsassen= value;
}
public int getanzahlInsassen() {
return this.anzahlInsassen;
}
public Auto ()
{
leistung= 75;
anzahlInsassen= 1;
}

public Auto (int leist, int anz)
{
this.leistung=leist;
this.anzahlInsassen=anz;
}


}
 
Zuletzt bearbeitet von einem Moderator:
K

kneitzel

Gast
Das sieht erst einmal gut aus, aber die Aufgabe gibt vor, dass im Konstruktor die Setter benutzt werden sollen.

Aber ansonsten kannst Du mit der zweiten Aufgabe ja weiter machen.
 

Henri8855

Mitglied
public Auto(){
leistung=75;
anzahlInsassen=1;
}
public Auto(int leist, int anz){
setleistung(leist); //set Methode richtig angewandt?
setanzahlInsassen(anz);
}
Danke für die Antwort, habe nun probiert die set-Methode im Konstrukor zu benutzen, richtig angwandt?
Das sieht erst einmal gut aus, aber die Aufgabe gibt vor, dass im Konstruktor die Setter benutzt werden sollen.

Aber ansonsten kannst Du mit der zweiten Aufgabe ja weiter machen.
 
K

kneitzel

Gast
Ja, sieht erst einmal gut aus.

Bezüglich Naming evtl. noch auf camelCase achten: setLeistung / setAnzahlInsassen.

Und evtl. an der Stelle noch einen Hinweis bezüglich möglicher Probleme:

Es kann problematisch sein, wenn ein Konstruktor eine Methode aufruft, die überschrieben werden kann. Also einfach mal ein Beispiel aus dem Fingern saugen:

Von Deiner Klasse Auto leite ich eine Klasse RennAuto ab. Das wird etwas in der Art:
Java:
public class RennAuto extends Auto {
    private Fahrgestell fahrgestell;
    
    public RennAuto(int leistung, int anzInsassen) {
        super(leistung, anzInsassen);
        
        fahrgestell = new SuperTollesFahrgestell();
    }
    
    @Override
    public void setLeistung(int leistung) {
        super.setLeistung(leistung);
        
        if (leistung > 100) {
            fahrgestell.setSportMode(true);
        }
    }
}
(Ist jetzt aus dem Kopf geschrieben ohne IDE und so ... Fehler bitte entschuldigen - ich mache zu viel Dart und Flutter in letzter Zeit.)

Mein RennAuto hat halt ein super tolles Fahrgestell. Und bei höherer Leistung muss das in ein speziellen Sport-Modus gehen, damit das Fahrverhalten ok ist. Das habe ich geschrieben als ich noch die Auto Klasse ohne Deine Setter Anpassung hatte und alles funktionierte ...

Nun kommt von Dir ein kleines Update und nun geht nichts mehr! (Da es weltweit genutzt wurde, passiert etwas in der Art: Die Erde hat sich sozusagen aufgehört zu drehen und alle AKW sind explodiert, Kalifornien ist im St. Andreas Graben verschwunden und und und ... Also Thema von Emmerichs neuem Kinofilm. (Ok, alles etwas übertrieben, ich frühstücke manchmal einen Clown ...)

Siehst Du denn das Problem? Thema des Threads ist ja Vererbung und so und da gehört das mit rein.
 
Beste Antwort

Henri8855

Mitglied
Ja, sieht erst einmal gut aus.

Bezüglich Naming evtl. noch auf camelCase achten: setLeistung / setAnzahlInsassen.

Und evtl. an der Stelle noch einen Hinweis bezüglich möglicher Probleme:

Es kann problematisch sein, wenn ein Konstruktor eine Methode aufruft, die überschrieben werden kann. Also einfach mal ein Beispiel aus dem Fingern saugen:

Von Deiner Klasse Auto leite ich eine Klasse RennAuto ab. Das wird etwas in der Art:
Java:
public class RennAuto extends Auto {
    private Fahrgestell fahrgestell;
   
    public RennAuto(int leistung, int anzInsassen) {
        super(leistung, anzInsassen);
       
        fahrgestell = new SuperTollesFahrgestell();
    }
   
    @Override
    public void setLeistung(int leistung) {
        super.setLeistung(leistung);
       
        if (leistung > 100) {
            fahrgestell.setSportMode(true);
        }
    }
}
(Ist jetzt aus dem Kopf geschrieben ohne IDE und so ... Fehler bitte entschuldigen - ich mache zu viel Dart und Flutter in letzter Zeit.)

Mein RennAuto hat halt ein super tolles Fahrgestell. Und bei höherer Leistung muss das in ein speziellen Sport-Modus gehen, damit das Fahrverhalten ok ist. Das habe ich geschrieben als ich noch die Auto Klasse ohne Deine Setter Anpassung hatte und alles funktionierte ...

Nun kommt von Dir ein kleines Update und nun geht nichts mehr! (Da es weltweit genutzt wurde, passiert etwas in der Art: Die Erde hat sich sozusagen aufgehört zu drehen und alle AKW sind explodiert, Kalifornien ist im St. Andreas Graben verschwunden und und und ... Also Thema von Emmerichs neuem Kinofilm. (Ok, alles etwas übertrieben, ich frühstücke manchmal einen Clown ...)

Siehst Du denn das Problem? Thema des Threads ist ja Vererbung und so und da gehört das mit rein.
Danke für die ausführliche Antwort. :) Ich glaube ich verstehe, wo das Problem liegt, aber ich weiß nicht, was ich jetzt ändern müsste. Die set-Methode bereitet mir irgendwie noch Schwierigkeiten... :(
 
K

kneitzel

Gast
Die Aufgabe ist korrekt gelöst und da musst du nichts mehr ändern. Das war nur eine Anmerkung, da die Aufgabe etwas gefordert hat, das auch durchaus problematisch sein kann.

Sollte Dich das verwirrt haben, dann tut es mir leid - dann könntest du die Anmerkung erst einmal ignorieren.
 

Henri8855

Mitglied
Hallo, ich melde mich nun mit der Test-Klasse wieder. Ich bin am Verzweifeln wegen dem Array und den Objekten. Die Test- Klasse ist immer mein Kryptonit. :( Es wäre sehr nett, wenn mir jemand helfen könnte. LG

public class AutoTest{
public static void main(String[] args) {
//
PKW[auto];
auto[0]=new auto ("75,2,"VW","Golf");
//

PKW erstesAuto=new PKW(75,5,"Opel","Adam");
PKW zweitesAuto=new PKW(100,4, "Audi"," Avant");
PKW drittesAuto=new PKW(50, 5, "Renault","Zoe");
PKW viertesAuto=new PKW(101,5, "Skoda","Fabia");
PKW fünftesAuto=new PKW(70,4, "VW","Golf");


for (int i=0; i<auto.length;i++) {
System.println("Anzahl Insassen: "+ auto .getInsassen());
// usw.
}

}
}
 
K

kneitzel

Gast
Da dann einfach noch einmal schauen:
- Wie erzeugst Du eine Variable die ein Array eines bestimmten Typs aufnehmen kann?
- Wie erzeugst Du dann so ein Array?

Den Zugriff selbst hast Du mit dem auto[0]=.... ja prinzipiell schon richtig gemacht. Aber PKW[auto]; erzeugt keine gewünschte Variable ...
 

Henri8855

Mitglied
Da dann einfach noch einmal schauen:
- Wie erzeugst Du eine Variable die ein Array eines bestimmten Typs aufnehmen kann?
- Wie erzeugst Du dann so ein Array?

Den Zugriff selbst hast Du mit dem auto[0]=.... ja prinzipiell schon richtig gemacht. Aber PKW[auto]; erzeugt keine gewünschte Variable ...
So? Es wird mir nun wenigstens auch kein Fehler mehr angezeigt :)

public class AutoTest{
public static void main(String[] args) {
//
PKW[] array= new PKW[5];
array[0]=new PKW(75,2,"Ford","Focus");
array[1]=new PKW(75,5,"Opel","Adam");
array[2]=new PKW(100,4, "Audi"," Avant");
array[3]=new PKW(50, 5, "Renault","Zoe");
array[4]=new PKW(101,5, "Skoda","Fabia");
array[5]=new PKW(70,4, "VW","Golf");


for (int i=0; i<array.length;i++) {
System.out.println("leistung: "+ array.getleistung());
System.out.println("Anzahl Insassen: "+ array.getanzahlInsassen());
System.out.println("Hersteller: "+ array.gethersteller());
System.out.println("Modell: "+ array.getmodell());

}

}
}
 

Henri8855

Mitglied
So? Es wird mir nun wenigstens auch kein Fehler mehr angezeigt :)

public class AutoTest{
public static void main(String[] args) {
//
PKW[] array= new PKW[5];
array[0]=new PKW(75,2,"Ford","Focus");
array[1]=new PKW(75,5,"Opel","Adam");
array[2]=new PKW(100,4, "Audi"," Avant");
array[3]=new PKW(50, 5, "Renault","Zoe");
array[4]=new PKW(101,5, "Skoda","Fabia");
array[5]=new PKW(70,4, "VW","Golf");


for (int i=0; i<array.length;i++) {
System.out.println("leistung: "+ array.getleistung());
System.out.println("Anzahl Insassen: "+ array.getanzahlInsassen());
System.out.println("Hersteller: "+ array.gethersteller());
System.out.println("Modell: "+ array.getmodell());

}

}
}
Wenn ich aber es ausprobiere, bekomme ich leider eine Fehlermeldung
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
melaniemueller Datenkapselung Sichtbarkeit public Java Basics - Anfänger-Themen 4
C Datenkapselung Java Basics - Anfänger-Themen 109
H Datenkapselung (get und set Methoden) Java Basics - Anfänger-Themen 2
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
K OOP Datenkapselung vs. Information Hiding Java Basics - Anfänger-Themen 9
K OOP Datenkapselung mittels private - length Attribut bei Array Java Basics - Anfänger-Themen 3
M Frage zur Datenkapselung Java Basics - Anfänger-Themen 4
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben