FS_Sebi Geschrieben 19. August 2008 Geschrieben 19. August 2008 Aufgabe 4: Highscore - Programmieren in Java: Einführung - Klassen "Die Methode "abflug()" soll keinen Rückgabewert besitzen und ein Objekt vom Typ des Interfaces "Fliegen" erwarten." Wie setze ich den letzten Teil um? Vielen Dank für eure Antworten. Am besten wäre wenn jmd alle Lösungen für die Aufgabe von http://www.highscore.de/java/einfuehrung/ hätte, dann müsste ich euch nicht weiter belästigen die nächste Woche Zitieren
kingofbrain Geschrieben 19. August 2008 Geschrieben 19. August 2008 Servus, das finde ich nett, dass Du uns gleich alle Aufgaben zum Lösen gibst. Möchtest Du in der Zwischenzeit einen Kaffee und einen Keks oder passt alles? Deine Hausaufgaben sind dazu da, um von Dir erledigt zu werden. Wir haben unsere bereits gemacht und können Dir deshalb hier Hilfestellung geben. Deshalb hier auch keine Lösung, sondern der Denkanstoß: Du sollst eine Methode definieren oder implementieren. Die Methode soll abflug heißen. Sie hat keinen Rückgabewert, aber einen Aufrufparameter (sie erwartet etwas beim Aufruf). Dieser Parameter ist vom Typ Fliegen. Eine Methodensignatur sieht allgemein so aus: <SICHTBARKEIT> [sTATIC] <RUECKGABETYP> <METHODENNAME>(<PARAMETER>, ...) SICHTBARKEIT kann public, private, protected und "" (-> default) sein. STATIC ist für Methoden der Klasse, nicht des Objekts gedacht. Der Rückgabetyp kann ein Objekttyp sein oder void, wenn nichts zurückgegeben werden soll. Den Methodennamen hast Du gegeben. Der PARAMETER setzt sich aus dem Objekttyp und einem Namen zusammen, unter dem der Parameter innerhalb der Methode angesprochen werden kann. EDIT: In der Methodensignatur kann auch noch das Schlüsselwort "final" vorkommen. Dieses legt fest, dass die Methode nicht abgeleitet werden darf. Aber ich denke, static und final wirst Du hier nicht brauchen. Schöne Grüße, Peter Zitieren
FS_Sebi Geschrieben 19. August 2008 Autor Geschrieben 19. August 2008 Das ist jetzt bei mir heraus gekommen: public class Abflug{ public static void main(String[] args) { Biene obj1 = new Biene(); Fledermaus obj2 = new Fledermaus(); } public void abflug(String obj1, String obj2){ Abflug hui = new Abflug(); hui.fliegen(); } public void fliegen(){ } } (die zwei anderen Klassen und das Interface habe ich mir gespart zu posten) Zitieren
speedi Geschrieben 19. August 2008 Geschrieben 19. August 2008 (bearbeitet) Ich würde mal behaupten: FALSCH!!! 1. Definiere das Interface Fliegen! 2. Übergebe das Interface Fliegen an die methode ablug Beispiel in einem anderen Anwendungsfall Ich zeichne eine Figur: public interface Figure{ public void draw(Graphics g); } public class TestFrame extends JFrame{ public Test(){ .... .... } public void zeichenMethode(Figure figure1){ figure1.draw(getGraphics()); } } Ich könnte jetzt irgendeine Klasse erstellen welche das interface Figure implementiert und könnte diese Objekte dann immer über "zeichnenMethode" zeichnen lassen. Egal ob da drin nun ein Baum, ein Bild, eine nackte Frau, ein kreis, ein Rechteck oder schlagmichtot gezeichnet wird. Das ist der große Sinn eines Interfaces. Du erstellst sozusagen ein nacktes gerippe wie eine Klasse auszusehen hat und kannst darüber jede Klasse ansprechen, die sich an dieses Interface hält. Ich könnte dir auch deines jetzt vorkauen, aber dann lernst du wahrscheinlich nicht viel dabei. Im übrigen: Es dürfte schwierig werden "Biene" und "Fledermaus" auf String zu casten. Aber wahrscheinlich hast du auch gerade deshalb den aufruf von Abflug aus der "main" bleiben lassen. Bearbeitet 19. August 2008 von speedi Zitieren
kingofbrain Geschrieben 19. August 2008 Geschrieben 19. August 2008 public void abflug(String obj1, String obj2) Das ist doch schon mal eine gültige Methodensignatur. Die Frage ist, ob sie der Aufgabenstellung entspricht. Du sollst eine Methode mit dem Namen abflug definieren. Super, das hast Du. Diese Methode soll ein Objekt vom Typ Fliegen als Parameter übergeben bekommen. Nö, das hast Du nicht. Du übergibst zwei Objekte vom Typ String. Ein String ist kein Fliegen und deshalb ist es falsch. Btw. ich habe den Post von speedi gelesen, dieser ist richtig und sehr viel ausführlicher als meiner. Aber ich denke, der Fokus im Sinne der Aufgabenstellung ist jetzt noch mal klarer. Es sieht für mich nach einem der klassischen Fehler in der "Ich lerne eine Programmiersprache" aus: es werden Sachen zusammenkopiert und -geschrieben, die man irgendwo her hat, ohne dass man weiß, was sie tun. Woher hast Du die Signatur mit den zwei String-Parametern? Wie kommst Du auf die Idee, dass das richtig ist? Überleg vorher, was gefordert ist. Übersetze das in die Syntax und fertig. Kopiere bitte keine Teile, von denen Du nicht genau weißt, was sie tun. Bei meinen Kursteilnehmern ist das der Anfang vom Ende. Die meisten schließen die Java Grundlagen Kurse erfolglos ab. Peter Zitieren
DZ_Eric Geschrieben 19. August 2008 Geschrieben 19. August 2008 Kann es sein, dass der Quelltext ungefähr so aussehen muss? public class Abflug { public static void main(String[] args) { Biene obj1 = new Biene(); Fledermaus obj2 = new Fledermaus(); } public static void abflug(Fliegen fliegen1) { fliegen1.fliegen(); } public void fliegen() { } } Zitieren
speedi Geschrieben 19. August 2008 Geschrieben 19. August 2008 Kopiere bitte keine Teile, von denen Du nicht genau weißt, was sie tun. Besonders beliebt: das rekursive durchsuchen von Dateien und überschreiben aller Dateien darin. Eigentlich müssten doch Virenscanner mit heuristischen Suchverhalten langsam mal zu der Meldung "Virus gefunden: %Username%" fähig sein. Zitieren
Dragon8 Geschrieben 19. August 2008 Geschrieben 19. August 2008 Kann es sein, dass der Quelltext ungefähr so aussehen muss? public static void abflug(Fliegen fliegen1) { ... } Keine ahnung ob der Rest so aussehen muss, aber der Methodenrumpf anhand der Aufgabenstellung ist so erstmal richtig. Zitieren
speedi Geschrieben 19. August 2008 Geschrieben 19. August 2008 Türlich muss er so aussehen. Aber vorkauen ist langweilig. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.