Zum Inhalt springen

Methode soll ein Objekt vom Typ Interface erwarten


Empfohlene Beiträge

Geschrieben

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 ;)

Geschrieben

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

Geschrieben

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)

Geschrieben (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 von speedi
Geschrieben
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

Geschrieben

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() {


    }

}

Geschrieben
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.

Geschrieben
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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...