Übung 11 online!!!!

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Übung 11 online!!!!

Beitrag von Jo(h)nny » 19. Jan 2008 15:35

mal ne ganz andere frage, habt ihr auch so viele set- und get-methoden??? also ich hab insgesammt ca. 15-16 set-get- methoden :D es steht ja:
Wichtig: Halten Sie sich bitte an die Prinzipien der Kapselung und arbeiten Sie mit get- und set-
Methoden.
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

ChristianK
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 127
Registriert: 13. Sep 2007 01:15
Wohnort: Darmstadt
Kontaktdaten:

Re: Übung 11 online!!!!

Beitrag von ChristianK » 20. Jan 2008 00:40

Ja geht ja gar nicht anders, wenn man Kapselung einhalten will... Aber ich finde die Schreibarbeit ist bei der Hausübung schon ziemlich extrem... Also inhaltlich hält sich das ganze doch stark in Grenzen, der Nutzen erschließt sich mir insofern auch nicht... Exceptions kann man auch verstehen ohne stundenlang irgendwelche Funktionen zu tippen...

Benutzeravatar
DerWildeKaiser
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 16. Jan 2008 12:29

Re: Übung 11 online!!!!

Beitrag von DerWildeKaiser » 20. Jan 2008 19:16

Ich bin zwar jetzt mit der Aufgabe fertig und es funktioniert auch eigentlich alles, nur ich hab einen Fehler in der Test.java:

Code: Alles auswählen

private static void testflight() throws Exception {
		[...]
		try {
			test.gearDown();
		} catch (AirplaneException e) {
			System.out.println(e.getMessage());
		} 
		[...]
	}
Eclipse sagt mir:
Unreachable catch block for AirplaneException. This exception is never thrown from the try statement body

Is ja auch ganz richtig, denn wo soll denn gearDown bitteschön eine AirplaneException werfen? Bei mir kann die höchstens ne AirborneComputerException werfen (wenn der Autopilot aktiviert ist und die Funktion aufgerufen wird).
Fehler im Template oder von mir falsch implementiert?

Edit: Hat sich erledigt... Weiß jetzt wann ich die Exception werfen muss... :oops:

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Übung 11 online!!!!

Beitrag von Jo(h)nny » 20. Jan 2008 22:23

hatte ich auch zuerst ma, hab dann sogar die exception, die der catch-block abfängt geändert..... und dann noch ma die aufgabenstellung durchgelesen:)
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Übung 11 online!!!!

Beitrag von Stumpf.Alex » 22. Jan 2008 01:48

Das ist ein Rundungsfehler, da du wahrscheinlich nur Double nach int castet,
ich hingegen benutze Math.round() und caste long nach int.
Man kann auch double nach int casten und dabei 4079 erhalten. Mann muss halt darauf achten, dass alle Rechenschritte mit double gemacht werden und dann das Ergebnis nur noch gecastet wird. Obwohl es ziemlich egal ist, aber beim aufrunden kann dem Flugzeug potentiell der Sprit zu früh ausgehen. :wink:

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Übung 11 online!!!!

Beitrag von Krümelmonster » 22. Jan 2008 22:53

@Stump.Alex:
Das stimmt wohl, habe es auch wieder geändert.

Eine andere Frage:
Fügen Sie außerdem eine Überprüfung hinzu, ob das Fahrwerk bei einer Höhe über 500 ein-
gefahren ist und ab einer Höhe unter 300 ausgefahren ist. Wenn nicht, so werfen Sie eine
AirplaneException mit entsprechender Fehlermeldung.
Soll es trotzdem noch möglich sein, das Fahrwerk ein- oder auszufahren oder soll nur eine Exception geworfen werden
("Kann Fahrwerk nicht einfahren, da Höhe < 300" oder "Kann Fahrwerk nicht ausfahren, da Höhe>500") falls versucht wird,
das Fahrwerk ein- oder auszufahren?
Anders gesagt:
Soll erst der neue Zustand des Fahrwerks gesetzt und dann ggf. eine Exception geworfen werden oder umgekehrt?
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Übung 11 online!!!!

Beitrag von guido » 23. Jan 2008 10:12

Krümelmonster hat geschrieben:@Stump.Alex:
Das stimmt wohl, habe es auch wieder geändert.

Eine andere Frage:
Fügen Sie außerdem eine Überprüfung hinzu, ob das Fahrwerk bei einer Höhe über 500 ein-
gefahren ist und ab einer Höhe unter 300 ausgefahren ist. Wenn nicht, so werfen Sie eine
AirplaneException mit entsprechender Fehlermeldung.
Soll es trotzdem noch möglich sein, das Fahrwerk ein- oder auszufahren oder soll nur eine Exception geworfen werden
("Kann Fahrwerk nicht einfahren, da Höhe < 300" oder "Kann Fahrwerk nicht ausfahren, da Höhe>500") falls versucht wird,
das Fahrwerk ein- oder auszufahren?
Anders gesagt:
Soll erst der neue Zustand des Fahrwerks gesetzt und dann ggf. eine Exception geworfen werden oder umgekehrt?
Es soll erst geprüft und dann gehandelt werden. (Angesichts der Tatsache, dass wir von einem Flugzeug reden, was bei falscher Fahrwerkposition schon mal abstürzen oder crashen kann, ist das wohl auch angebracht :))

Guido

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Übung 11 online!!!!

Beitrag von Krümelmonster » 23. Jan 2008 14:29

Alles klar.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Re: Übung 11 online!!!!

Beitrag von s!mon » 24. Jan 2008 18:08

Sehe ich das richtig, dass in Airplane quasi keine Exception geworfen wird (außer im Konstruktor) und das wir alle in AirborneComputer werfen sollen? Sollen die AirplaneExceptions immer in Airplane geworfen werden? Also ich beziehe mich jetzt vor allem auf gearDown() in der AirborneComputer-Klasse.

ps: 4083 Liter habe ich am Ende :p

pps: ich habe mich ständig verschrieben, weil die Methode die wir implementieren sollen changeHeigth heißt und nicht changeHeight.. sollte mal korrigiert werden. Trotzdem fande ich die Übung bisher am coolsten. Es war viel Code, der aber nicht allzu schwer war. Hat Spaß gemacht das zu programmieren. Lob ans Team :)

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Übung 11 online!!!!

Beitrag von Jo(h)nny » 24. Jan 2008 20:28

muss man eigentlich eine exception werfen, wenn man beim ausgefahrenen fahrwerk die höhe auf über 500 ändert???
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Übung 11 online!!!!

Beitrag von Krümelmonster » 24. Jan 2008 21:47

Da in der Aufgabenstellung keine Einschränkung gegeben ist, welche Methoden die Exception werfen sollen,
sind imho alle Methoden gemeint, bei denen die Bedingung, das Fahrwerk unter 300 Höheneinheiten
ausgefahren und über 500 Höheneinheiten eingefahren zu haben, verletzt werden kann.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Re: Übung 11 online!!!!

Beitrag von s!mon » 24. Jan 2008 23:34

Hab mir auch schon überlegt, die AirplaneException von changeHeight nur in setHeight in der Airplane-Klasse zu werfen. Dann wird aber doch die Funktion gearIsDown() in AirborneComputer sinnlos, weil man sie gar nicht mehr benutzen muss.. seht seltsam alles :cry:

gismo
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 10. Jan 2007 17:06
Wohnort: Darmstadt
Kontaktdaten:

Re: Übung 11 online!!!!

Beitrag von gismo » 25. Jan 2008 01:48

Es führen halt mehrere Lösungen zum Ziel, wenn man die Exception direkt in der Klasse Airplane werfen lässt, brauch man gearIsDown() zwar nicht mehr zum prüfen für die Exception, allerdings kann es ja sein, dass diese von externen Methoden benutzt wird.
Im realen Leben wäre gearIsDown() dann vermutlich ein Lämpchen, was dem Piloten anzeigt, dass das Fahrwerk ausgefahren ist.

Zu der vorherigen Frage, wo denn überall eine Exception geworfen werden muss, wenn die Höhe zu hoch oder zu niedrig für das Fahrwerk ist: Werft überall dort die Exception, wo eine Aktion entweder auf das Fahrwerk oder auf die Höhe ausgeübt wird.

Dann noch zwei Hinweise:
1. Prüft bitte, bevor ihr eure Lösung einreicht nochmal nach, ob ihr auch die Exceptions werft, die in der Aufgabenstellung gefordert werden und ihr nicht aus Versehen eine AirportException statt einer AirplaneException werft.

2. Erweitert am Besten eure Testfälle, die ihr mit den Templates bekommen habt und überprüft, ob ihr auch wirklich die Exceptions richtig auslöst. Dies wird in den vorgegebenen Tests nämlich nicht gemacht.

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Re: Übung 11 online!!!!

Beitrag von s!mon » 25. Jan 2008 14:55

Code: Alles auswählen

	private static void testdelete() throws AirportException,
			AirborneComputerException, AirplaneException {
		test.deleteAirport("Köln");
		try {
			test.flyTo("Köln");
		} catch (AirborneComputerException e) {
			System.out.println(e.getMessage());
		}
		System.out.println("-----Delete Test finished-----");
	}
Ich verstehe den Test nicht so ganz. Der Flughafen wird gelöscht und dann soll das Flugzeug dorthin fliegen. Das wird doch immer in einer Fehlermeldung enden?!

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Übung 11 online!!!!

Beitrag von Stumpf.Alex » 25. Jan 2008 15:13

Ja genau das ist ja der Test, ob deine Exception funktioniert. :wink:

Antworten

Zurück zu „Archiv“