Rechnungen-Aufgabe

Codix

Bekanntes Mitglied
4. Erstellen Sie eine wiederverwendbare Klasse Rechnungen mit Klassenmethoden in einem Paket javarechnungen. Die erste Methode quadrat() der Klasse soll das Quadrat einer übergebenen Zahl berechnen und die zweite Methode wurzel() die Quadratwurzel einer übergebenen Zahl.

Für das Berechnen der Quadratwurzel können Sie die Methode sqrt() aus der Klasse Math verwenden. Die Methode erwartet einen double-Typ als Argument und liefert einen double-Typ zurück. Eine Import-Anweisung ist für die Klasse nicht erforderlich, da sie zum Paket java.lang gehört.

Erstellen Sie von der Methode quadrat() jeweils eine Version, die int-Typen verarbeitet und einen int-Typ zurückliefert, und eine Version, die double-Typen verarbeitet und einen double-Typ zurückliefert. Der Aufruf soll aber nur durch den Namen quadrat() erfolgen. Welcher Typ verarbeitet werden soll, muss die Funktion selbst anhand des Arguments feststellen können.

Kommentieren Sie die Klasse Rechnungen ausführlich.

Erstellen Sie dann eine Klasse in einem Projekt in einem anderen Arbeitsbereich, die in einer main()-Methode die Klassenmethoden aus der Klasse Rechnungen jeweils mit einem int- und einem double-Wert aufruft. Nehmen Sie die Klasse Rechnungen dabei über einen Verweis in das Projekt mit der Testklasse auf.

Beschreiben Sie bitte für die Lösung dieser Aufgabe zusätzlich, welche Schritte Sie mit Eclipse für das Erstellen der wiederverwendbaren Klasse durchführen und wie Sie die Klasse Rechnungen in das Projekt mit der Testklasse einbinden.

Code:
public class Rechnungen {
    //hier wird die Wurzel gezogen von "zahl"
    public double wurzel(double zahl){
        return Math.sqrt(zahl);
    }
    //hier wird das quadrat eines Integers berechnet
//Methode quadrat() , die int-Typen ver-arbeitet und einen int-Typ zurückliefert ?
    public int quadrat(int zahl){
        return (zahl*zahl);
    }
    //hier wird das quadrat eines doubles berechnet
//Methode quadrat(), die double-Typen verarbeitet und einen double-Typ zurückliefert
    public double quadrat(double zahl){
        return (zahl*zahl);
    }
}

//new Class
public class main{
    public static void main(String[] args){
        Rechnungen r1 = new Rechnungen();
        r1.quadrat(2);
        r1.quadrat(2.3);



} In Eclipse muss ich ein Projekt erstellen und in dieses Projekt die Klassen einfügen. Das einbinden funktioniert indem man ein Objekt der Klasse erstellt.
In Eclipse



Frage: ist die Aufgabe so fertig? Oder fehlt noch was?

Danke im Voraus
 
Klasse Rechnungen mit Klassenmethoden
Deine Methoden sind keine Klassenmethoden.

in einem Paket javarechnungen
Das Paket ist nicht sichtbar, einfach nur hier weggelassen oder nicht gemacht?


Kommentieren Sie die Klasse Rechnungen ausführlich.
Da würde ich JavaDoc-Kommentare erwarten. Die Kommentare können auch etwas besser sein 🙂

In Eclipse muss ich ein Projekt erstellen und in dieses Projekt die Klassen einfügen. Das einbinden funktioniert indem man ein Objekt der Klasse erstellt.
In Eclipse
Zumindest wenn die Klasse in einem extra Projekt liegt, muss man das eine Projekt noch in dem anderem einbinden – würde ich zumindest erwarten, dass das gefordert ist.
 
Deine Methoden sind keine Klassenmethoden.


Das Paket ist nicht sichtbar, einfach nur hier weggelassen oder nicht gemacht?



Da würde ich JavaDoc-Kommentare erwarten. Die Kommentare können auch etwas besser sein 🙂


Zumindest wenn die Klasse in einem extra Projekt liegt, muss man das eine Projekt noch in dem anderem einbinden – würde ich zumindest erwarten, dass das gefordert ist.

Danke und Respekt, ich werde mich bemühen die Aufgabe zu korregieren.
 
Code:
package javarechnungen;

Antwort Nummer 4:
public class Rechnungen {
    //hier wird die Wurzel gezogen von "zahl"
    public static double wurzel(double zahl){
        return Math.sqrt(zahl);
    }
    //hier wird das quadrat eines Integers berechnet
//Methode quadrat() , die int-Typen ver-arbeitet und einen int-Typ zurückliefert ?
    public static int quadrat(int zahl){
        return (zahl*zahl);
    }
    //hier wird das quadrat eines doubles berechnet
//Methode quadrat(), die double-Typen verarbeitet und einen double-Typ zurückliefert
    public static double quadrat(double zahl){
        return (zahl*zahl);
    }
}

//new Class
public class main{
    public static void main(String[] args){
        Rechnungen r1 = new Rechnungen();
        r1.quadrat(2);
        r1.quadrat(2.3);
}

In Eclipse muss ich ein Projekt erstellen und in dieses Projekt die Klassen einfügen. Das einbinden funktioniert indem man ein Objekt der Klasse erstellt.
In Eclipse

Wenn die Klasse in einem extra Projekt liegt, muss man das eine Projekt noch in dem anderem einbinden.

===

stimmt das jetzt? Bitte um Antworten. Danke im Voraus.
 
Zuletzt bearbeitet:
Was soll der Doppelpunkt nach package?

Die Erklärung zum Einbinden ist zT falsch (ein Objekt der Klasse muss und sollte man da nicht erstellen) und vermutlich etwas knapp.
 

Du schreibst:
Eine Klassenmethode kann direkt über den Namen der Klasse aufgerufen werden, ohne dass zuvor ein Objekt der Klasse generiert wurde.

Du machst:
public class Rechnungen {
...
public static double quadrat(double zahl){
...
Rechnungen r1 = new Rechnungen();
r1.quadrat(2);

Darauf wollte Dich @JustNobody mit der Frage aufmerksam machen.
Benötigt man zum Aufrufen von Klassenmethoden eine Instanz?
 
Syntax einer Methode:

eine Methode in Java sieht so aus:

static Rückgabetyp Name (Parametertypen)
{
Anweisung1;
Anweisung2;
Anweisung…;
}
static Rückgabetyp Name (Parametertypen)

bildet den Kopf. Er besteht aus dem Schlüsselwort static, dem Rückgabetyp, dem Namen der Methode und der Angabe der Parameter, die an die Methode übergeben werden. Die Parameter werden durch runde Klammern umfasst.

===

Das passt doch von der Syntax her:

==================================
1. statische Methode = Klassenmethode
static double wurzel (double zahl)
=========
2. statische Methode = Klassenmethode
public statin int quadrat (int zahl)
=========
3.statische Methode = Klassenmethode
public static double quadrat (double zahl)
==================================
 
Zuletzt bearbeitet:
Ja, so schreibst Du eine Klassenmethode. Ohne das static wäre es eine Instanzmethode.

Aber es geht ja nicht um das Schreiben der Methoden. Du hast die Klassenmethoden korrekt erstellt.

Jetzt geht es um die Aufrufe:

a) Wenn alles Klassenmethoden sind, dann brauchst Du keine Instanz. Das Rechnungen r1 = new Rechnungen(); ist somit unnötig.
b) Klassenmethoden werden auf der Klasse aufgerufen und nicht auf der Instanz. Daher ist das r1 durch die Klasse zu ersetzen: Rechnungen.quadrat(2)

Somit hättest Du dann etwas wie:
Code:
import javarechnungen.Rechnungen; // Import ist notwendig, so Main nicht im gleichen package ist!

public class Main { // Klassennamen fangen mit einem großen Buchstaben an!
    public static void main(String[] args) {
        Rechnungen.quadrat(2);
        Rechnungen.quadrat(2.3);
    }
}

Ein Namespace für das zweite Projekt ist nicht angegeben. Daher habe ich z.B. das default package verwendet. Daher auch die import Anweisung.
(Was dann auch etwas wäre, was bei der Einbindung dokumentiert werden könnte.)
 
Ja, so schreibst Du eine Klassenmethode. Ohne das static wäre es eine Instanzmethode.

Aber es geht ja nicht um das Schreiben der Methoden. Du hast die Klassenmethoden korrekt erstellt.

Jetzt geht es um die Aufrufe:

a) Wenn alles Klassenmethoden sind, dann brauchst Du keine Instanz. Das Rechnungen r1 = new Rechnungen(); ist somit unnötig.
b) Klassenmethoden werden auf der Klasse aufgerufen und nicht auf der Instanz. Daher ist das r1 durch die Klasse zu ersetzen: Rechnungen.quadrat(2)

Somit hättest Du dann etwas wie:
Code:
import javarechnungen.Rechnungen; // Import ist notwendig, so Main nicht im gleichen package ist!

public class Main { // Klassennamen fangen mit einem großen Buchstaben an!
    public static void main(String[] args) {
        Rechnungen.quadrat(2);
        Rechnungen.quadrat(2.3);
    }
}

Ein Namespace für das zweite Projekt ist nicht angegeben. Daher habe ich z.B. das default package verwendet. Daher auch die import Anweisung.
(Was dann auch etwas wäre, was bei der Einbindung dokumentiert werden könnte.)


danke vielmals
 
Hi Codix und hi an alle Fragenbeantworter/inneen!

Danke für diese und andere Diskussionen. Ohne Euer Forum und Leuten wie Codix, die hier Fragen stellen, hätte die schweigende Mehrheit der Java-Lehrlinge, zu der ich auch gehöre, es echt schwer durch die ILS/SGD/FFE-Hefte durch zu kommen.

Vielen Dank Euch allen!!! (auch an alle anderen Fragensteller aus anderen Threds zu ILS Aufgaben!!!)
 

Zurück
Oben