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

Informatiker Board » Themengebiete » Praktische Informatik » Typensicherheit » 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 Typensicherheit
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
neuling96
unregistriert
Typensicherheit Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

gegben eine menge von codes
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
class Haus {
 private Tier bewohner;

 public boolean belegt () {
 return this.bewohner != null;
 }

 public boolean betreten (Tier t) {
 if (this.bewohner != null) return false;
this.bewohner = t;
 return true;
 }

 public Tier verlassen () {
 Tier t = this.bewohner;
 this.bewohner = null;
 return t;
}
}

code:
1:
2:
3:
4:
5:
6:
7:
8:
public class Tier {
public void fressen () {
 System.out.println("Omnomnom");
 }
}



code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
public class Zoo {
public static void main(String[] args) {
Haus elefantenhaus = new Haus();
 Elefant jumbo = new Elefant();
jumbo.trompeten();
 jumbo.fressen();
 elefantenhaus.betreten(jumbo);

 Waerter waerter = new Waerter();

 // als er gerade nicht hinsieht, passiert das:
 elefantenhaus.verlassen();
 elefantenhaus.betreten(new Muecke());

 waerter.elefantenBuersten((Elefant) elefantenhaus.verlassen());
 }
 }


code:
1:
2:
3:
4:
5:
6:
7:
public class Muecke extends Tier {
 public void summen () {
System.out.println("Bzzzzzzz");
}
 }


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public class Waerter {
 public Waerter (String n) {
 }

public void elefantenBuersten (Elefant e) {
e.fressen();
 e.trompeten();
 }
 }


code:
1:
2:
3:
4:
5:
6:
7:
 public class Elefant extends Tier {
 public void trompeten () {
 System.out.println("Toot!");
 }
 }



1.Bei Ablauf des Programmes Zoo wird ein Fehler auftreten
um welchen einen Fehler handelt es sich?

Waerter waerter = new Waerter(); // der Ausruf geht so nicht durch, da in der klasse waerter bereits ein Konstrukteur vorhaden ist und somit der Default Konstrukteur nicht erlaubt ist

Bei b) fehlt mir der komplette ansatz

neuling96 hat dieses Bild (verkleinerte Version) angehängt:
Unbenannt.jpg

20.01.2015 18:03
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
class Haus <T> {
 private T bewohner;

 public boolean belegt () {
 return this.bewohner != null;
 }

 public boolean betreten (T t) {
 if (this.bewohner != null) return false;
this.bewohner = t;
 return true;
 }

 public T verlassen () {
 T t = this.bewohner;
 this.bewohner = null;
 return t;
}
}





code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
public class Zoo {
public static void main(String[] args) {
Haus<Elefant>elefantenhaus = new Haus();
 Elefant jumbo = new Elefant();
jumbo.trompeten();
 jumbo.fressen();
 elefantenhaus.betreten(jumbo);

 Waerter waerter = new Waerter();

 // als er gerade nicht hinsieht, passiert das:
 elefantenhaus.verlassen();
 elefantenhaus.betreten(new Muecke());

 waerter.elefantenBuersten((Elefant) elefantenhaus.verlassen());
 }
 }


allerdings haut das auch nicht hin also
veränderung von

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
public class Zoo {
public static void main(String[] args) {
Haus<Elefant> elefantenhaus = new Haus();
 Elefant jumbo = new Elefant();
jumbo.trompeten();
 jumbo.fressen();
 elefantenhaus.betreten(jumbo);

 //Waerter waerter = new Waerter();

 // als er gerade nicht hinsieht, passiert das:
 elefantenhaus.verlassen();
 elefantenhaus.betreten(new Elefant());

 //waerter.elefantenBuersten((Elefant) elefantenhaus.verlassen());
 }
 }


liefert

neuling96 hat dieses Bild (verkleinerte Version) angehängt:
Unbenannt.jpg

20.01.2015 18:45
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

Das sagt doch schon alles: javac -Xlint *.java
Deine Lösung ist gelungen, nur 2 Anmerkungen.
Haus<Elefant> elefantenhaus = new Haus<Elefant>(); //Typ in Konstruktor(sic!) angegeben.
waerter.elefantenBuersten(elefantenhaus.verlassen()); //cast unnötig.

Und wo scheiterst du bei eclipse? Ich rate dir wirklich, nimm dir die paar Minuten, das einzurichten, ich helfe auch.

__________________
Syntax Highlighting fürs Board (Link)
20.01.2015 19:06 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

"Das sagt doch schon alles: javac -Xlint *.java"
was genau bedeutet das?


vielen dank smile für dein angebot mit eclipse, darauf werde ich in 1-2 wochen zurückgreifen, denn bald beginnt beginnt die Klausurenphase und das verschlingt meine ganz freizeit
20.01.2015 19:42
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

Es gibt keine Fehler, sondern nur Hinweise ("Note").
Für eine detailiertere Aussage sollst du es mit -Xlint neu kompilieren.
Was macht -Xlint?
man javac eingeben (keine Ahnung, ob das in Windows auch geht) öffnet die Hilfe.
Zitat:
-Xlint
Enable all recommended warnings. In this release, enabling all available warnings is recommended.


wenn du es mit -Xlint neu kompilierst, erhältst du:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Zoo.java:5: warning: [rawtypes] found raw type: Haus
		Haus<Elefant> elefantenhaus = new Haus();
		                                  ^
  missing type arguments for generic class Haus<T>
  where T is a type-variable:
    T extends Object declared in class Haus
Zoo.java:5: warning: [unchecked] unchecked conversion
		Haus<Elefant> elefantenhaus = new Haus();
		                              ^
  required: Haus<Elefant>
  found:    Haus
Zoo.java:17: warning: [cast] redundant cast to Elefant
		waerter.elefantenBuersten((Elefant) elefantenhaus.verlassen());
		                          ^
3 warnings

Auf die Punkte hatte ich dich oben auch hingewiesen.

__________________
Syntax Highlighting fürs Board (Link)
20.01.2015 19:49 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Typensicherheit