Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Schiff verebung (http://www.informatikerboard.de/board/thread.php?threadid=2069)


Geschrieben von neuling96 am 14.01.2015 um 17:46:

  Schiff verebung

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
public class Schifffahrt
{
  public static void main(String[] args)
  {
    final int S1_TONNAGE = 1000;
    final int S2_TONNAGE = 2000;
    final int S2_SEGELFLAECHE = 200;
   
    
    Schiff s1 = new Schiff(S1_TONNAGE);
    Segelschiff s2 = new Segelschiff(S2_TONNAGE,S2_SEGELFLAECHE);
    
    
    System.out.println("s1: " + s1.toString());
    // s1: Schiff[tonnage=1000]
    
    System.out.println("s2: " + s2.toString());
    // s2: Segelschiff[segelflaeche=200, Schiff[tonnage=2000]]
    
  
  }

}





code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public class Schiff{
private  int Tonnage;

public Schiff(int Tonnage){
this.Tonnage=Tonnage;
}



public String toString(){
return "Schiff"+"["+"tonnage" + "="+ this.Tonnage +"]";
}
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public class Segelschiff extends Schiff{
private int Segelflaeche;

public Segelschiff{int Tonnage; int Segelflaeche){
super(Tonnage);
this.Segelflaeche=Segelflaeche;
 }

public String toString(){
return "["+"segelflaeche" + "=" +this.Segelflaeche +","+"Schiff"+"["+"tonnage" + "="+ super(Tonnage) +"]"+"]"; 
}
}


ich hab leider keine ahnung wie den fehler beseitigen kann



Geschrieben von eulerscheZahl am 14.01.2015 um 17:52:

 

code:
1:
public Segelschiff{int Tonnage, int Segelflaeche){

da hattest du irrtümlich ein Semikolon.

code:
1:
2:
3:
public String toString(){
return "["+"segelflaeche" + "=" +this.Segelflaeche +","+"Schiff"+"["+"tonnage" + "="+ super(Tonnage) +"]"+"]"; 
}

das geht nicht, da Tonnage private ist und zum Schiff gehört, nicht zum Segelschiff.

code:
1:
2:
3:
public String toString() {
    return "Segelschiff[segelflaeche=" +this.Segelflaeche +","+super.toString()+"]"; 
}



Geschrieben von neuling96 am 14.01.2015 um 19:06:

 

vielen dank

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
public class Schifffahrt
{
  public static void main(String[] args)
  {
    final int S1_TONNAGE = 1000;
    final int S2_TONNAGE = 2000;
    final int S2_SEGELFLAECHE = 200;
    final int S3_TONNAGE = 3000;
    final int S3_MOTORLEISTUNG = 30;
    
    Schiff s1 = new Schiff(S1_TONNAGE);
    Segelschiff s2 = new Segelschiff(S2_TONNAGE,S2_SEGELFLAECHE);
    Motorschiff s3 = new Motorschiff(S3_TONNAGE,S3_MOTORLEISTUNG);
    
    System.out.println("s1: " + s1.toString());
    // s1: Schiff[tonnage=1000]
    
    System.out.println("s2: " + s2.toString());
    // s2: Segelschiff[segelflaeche=200, Schiff[tonnage=2000]]
    
    System.out.println("s3: " + s3.toString());
    // s3: Motorschiff[motorleistung=30, Schiff[tonnage=3000]]
    
    Schiff c;
    if(args.length == 0){
      c = s2;
    }
    else{
      c = s3;
    }
    System.out.println("c:  " + c.toString());
  }

}





code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
public class Motorschiff extends Schiff{
private int Motorleistung;

public Motorschiff(int Tonnage, int Motorleistung){
super(Tonnage);
this.Motorleistung=Motorleistung;
}
public String toString(){
return "Motorschiff[Motorleistung=" +this.Motorleistung +","+super.toString()+"]"; 
}


}


bei den nächsten teilaufgaben bin ich überfragt



Geschrieben von eulerscheZahl am 14.01.2015 um 19:12:

 

Woher kann denn das toString() kommen, wenn das Schiff ausscheidet? Hat das Schiff vielleicht eine Basisklasse?



Geschrieben von neuling96 am 14.01.2015 um 19:19:

 

Zitat:
Original von eulerscheZahl
Woher kann denn das toString() kommen, wenn das Schiff ausscheidet? Hat das Schiff vielleicht eine Basisklasse?


Ehrlich gesagt keine Ahnung.
Ich habs doch nur in Schiff class tostring() def. und alle andere class greifen auf tostring von Schiff zurück



Geschrieben von eulerscheZahl am 14.01.2015 um 20:11:

 

Wenn du einer Klasse nicht sagst, dass sie von einer anderen erbt, dann erbt sie automatisch von Object. Und das hat eben ein toString().



Geschrieben von neuling96 am 15.01.2015 um 12:46:

 

Zitat:
Original von eulerscheZahl
Wenn du einer Klasse nicht sagst, dass sie von einer anderen erbt, dann erbt sie automatisch von Object. Und das hat eben ein toString().


das vergesse ich immer wieder.. alle erben von Object


Schiff c;
if(args.length == 0){
c = s2;
}
else{
c = s3;
}
System.out.println("c: " + c.toString());

wenn ich java Schifffahrt.java xyz ausführe dann
c=s3 zweig ausgeführt

args ist doch ein Stringarray und folgt mit args=xyz -> args.length ungleich 0
alles soweit doch richtig???

aber was hat das mit complierzeit zutun?



Geschrieben von eulerscheZahl am 15.01.2015 um 13:01:

 

Ja, dann landest du im else-Teil.
Und mit Compilierzeit hat das nichts zu tun - der Compiler hat schließlich keine Ahnung, mit welchen Kommandozeilenargumenten du das aufrufen willst.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH