Testklasse schreiben....!

coldstone

Bekanntes Mitglied
Hallo liebe freunde. Habe hier mal folgende Aufgabe.

Und zwar der Quellcode:

Java:
001 import java.util.Calendar; // Klasse Calendar aus dem paket util mit Methoden
002                            // zur Bestimmung von Kalender-Funktionen, 
003                            // u.a. Bestimmung des aktuellen Jahres 
004
005 /** EinfachesAuto.java
006  *  Klasse zur Beschreibung eines Autos.
007  *   @ author Ihr Name, e-Mail-Adresse
008  *   Datum
009  **/
010 public class EinfachesAuto {
011     // Attribute
012     private String besitzer;
013     private String autotyp;
014     private String farbe;
015     private int erstzulassung;
016     private int leistung;
017     private int kmStand;
018
019     // Konstruktor
020     public EinfachesAuto(String besitzer, String autotyp, String farbe,
021                          int erstzulassung, int leistung, int kmStand) {
022
023         this.besitzer = besitzer;
024         this.autotyp = autotyp;
025         this.farbe = farbe;
026         this.erstzulassung = erstzulassung;
027         this.leistung = leistung;
028         this.kmStand = kmStand;
029     }
030
031     // Methoden
032     /** Berechnung des Alters des Autos aufgrund des aktuellen 
033      *  Kalenderjahrs und der Erstzulassung.
034      *  @param ohne
035      *  @return int alter
036      */
037     public int alter() {
038        // Ermittlung des aktuellen Jahres 
039         Calendar aktuellerKalender = Calendar.getInstance();
040         int aktuellesJahr = aktuellerKalender.get(Calendar.YEAR);
041         return aktuellesJahr - this.erstzulassung;
042     }
043
044     /** Einfache Ausgabe auf den Bildschirm.
045      *  @param ohne
046      *  @return void
047      */
048     public void meldung() {
049         System.out.print ("Hier gruesst das "+ this.farbe );
050         System.out.println (" Auto von " + this.besitzer);
051     }
052 }

Aufgabe:

Schreiben Sie eine Testklasse AutoTest.java, mit der Sie EinfachesAuto.class testen, in dem Sie drei Objekte erzeugen und deren Methoden aktivieren.


Wie ist das mit der Testklasse gemeint? Ich kann mir nicht vorstellen wie sowas aussehen soll!
 
Entweder ihr seid gerade bei JUnit (o.ä.) und ihr müsst eben Tests erstellen, oder:
Ihr seit noch recht am Anfang und müsst einfach nur eine Klasse schreiben, die genau das tut, was da steht. Kannst ja dann in der Main 3 Objekte erstellen und lustig die Methoden aufrufen.
 
Ist das denn so richtig:

Java:
/** AutoTest.java
* Klasse AutoTest.java
* @ author Ihr Name, e-Mail-Adresse
* Datum
*/

public class AutoTest {

	public static void main(String[] args) {
		EinfachesAuto erstesAuto = new EinfachesAuto("Klaus","Passat","blau",2002,175,25600);
		EinfachesAuto zweitesAuto = new EinfachesAuto("Frank","Mercedes","schwarz",2000,116,35600);
		EinfachesAuto drittesAuto = new EinfachesAuto("Peter","BMW","Rot",2008,225,1500);
		System.out.println("Name des Besitzers: " + erstesAuto.besitzer, "Autotyp: " + erstesAuto.autotyp, "Farbe: " + erstesAuto.farbe, "Erstzulassung : " + erstesAuto.erstzulassung, "Leistung : " + erstesAuto.leistung, "Kilometerstand: " + erstesAuto.kmStand);
		System.out.println("Name des Besitzers: " + zweitesAuto.besitzer, "Autotyp: " + zweitesAuto.autotyp, "Farbe: " + zweitesAuto.farbe, "Erstzulassung : " + zweitesAuto.erstzulassung, "Leistung : " + zweitesAuto.leistung, "Kilometerstand: " + zweitesAuto.kmStand);
		System.out.println("Name des Besitzers: " + drittesAuto.besitzer, "Autotyp: " + drittesAuto.autotyp, "Farbe: " + drittesAuto.farbe, "Erstzulassung : " + drittesAuto.erstzulassung, "Leistung : " + drittesAuto.leistung, "Kilometerstand: " + drittesAuto.kmStand);
	}
}
 
Wie gesagt, wenn es einfach "irgendeine Klasse" sein soll, dann ja. Zumindestmal von der Aufgabenstellung.
Du könntest ja noch prüfen ob die Farbe vom 1. Auto auch wirklich blau ist, oder ob die Erstzulassung von 3. Auto 2008 ist etc...
 
Muss die Klasse AutoTest und EinfachesAuto in einer java datei existieren damit ich Sie compilieren kann? oder kann ich AutoTest alleine kompilieren? Zumindest geht das bei mir nicht.
 
Möchte unter eingabeaufforderung kompilieren, bekomme aber diese fehlermeldung:


Code:
AutoTest.java:10: cannot find symbol
symbol  : class EinfachesAuto
location: class AutoTest
                EinfachesAuto erstesAuto = new EinfachesAuto("Klaus","Passat","b
lau",2002,175,25600);
                ^
AutoTest.java:10: cannot find symbol
symbol  : class EinfachesAuto
location: class AutoTest
                EinfachesAuto erstesAuto = new EinfachesAuto("Klaus","Passat","b
lau",2002,175,25600);
                                               ^
AutoTest.java:11: cannot find symbol
symbol  : class EinfachesAuto
location: class AutoTest
                EinfachesAuto zweitesAuto = new EinfachesAuto("Frank","Mercedes"
,"schwarz",2000,116,35600);
                ^
AutoTest.java:11: cannot find symbol
symbol  : class EinfachesAuto
location: class AutoTest
                EinfachesAuto zweitesAuto = new EinfachesAuto("Frank","Mercedes"
,"schwarz",2000,116,35600);
                                                ^
AutoTest.java:12: cannot find symbol
symbol  : class EinfachesAuto
location: class AutoTest
                EinfachesAuto drittesAuto = new EinfachesAuto("Peter","BMW","Rot
",2008,225,1500);
                ^
AutoTest.java:12: cannot find symbol
symbol  : class EinfachesAuto
location: class AutoTest
                EinfachesAuto drittesAuto = new EinfachesAuto("Peter","BMW","Rot
",2008,225,1500);
                                                ^
AutoTest.java:13: cannot find symbol
symbol  : method println(java.lang.String,java.lang.String,java.lang.String,java
.lang.String,java.lang.String,java.lang.String)
location: class java.io.PrintStream
                System.out.println("Name des Besitzers: " + erstesAuto.besitzer,
 "Autotyp: " + erstesAuto.autotyp, "Farbe: " + erstesAuto.farbe, "Erstzulassung
: " + erstesAuto.erstzulassung, "Leistung : " + erstesAuto.leistung, "Kilometers
tand: " + erstesAuto.kmStand);
                          ^
AutoTest.java:14: cannot find symbol
symbol  : method println(java.lang.String,java.lang.String,java.lang.String,java
.lang.String,java.lang.String,java.lang.String)
location: class java.io.PrintStream
                System.out.println("Name des Besitzers: " + zweitesAuto.besitzer
, "Autotyp: " + zweitesAuto.autotyp, "Farbe: " + zweitesAuto.farbe, "Erstzulassu
ng : " + zweitesAuto.erstzulassung, "Leistung : " + zweitesAuto.leistung, "Kilom
eterstand: " + zweitesAuto.kmStand);
                          ^
AutoTest.java:15: cannot find symbol
symbol  : method println(java.lang.String,java.lang.String,java.lang.String,java
.lang.String,java.lang.String,java.lang.String)
location: class java.io.PrintStream
                System.out.println("Name des Besitzers: " + drittesAuto.besitzer
, "Autotyp: " + drittesAuto.autotyp, "Farbe: " + drittesAuto.farbe, "Erstzulassu
ng : " + drittesAuto.erstzulassung, "Leistung : " + drittesAuto.leistung, "Kilom
eterstand: " + drittesAuto.kmStand);
                          ^
 
Also dein Sysout ist falsch, da muss kein Komma hin, sondern ein Plus.
Aber was genau machst du denn:
1. EinfachesAuto.java geschrieben
2. AutoTest.java im selben verzeichnis geschrieben.
3. ab diesem Punkt genauer...
 
Wie die Aufgabenstellung es sagt.

"Schreiben Sie eine Testklasse AutoTest.java, mit der Sie EinfachesAuto.class testen, in dem Sie drei Objekte erzeugen und deren Methoden aktivieren."

Mit der Klasse AutoTest habe ich 3 objekte erzeugt. (erstesAuto, zweitesAuto, drittesAuto). Ist denn der Syntax falsch?
Meinst du dies ist falsch:

" System.out.println("Name des Besitzers: " + erstesAuto.besitzer, "Autotyp: " + erstesAuto.autotyp, "Farbe: " + erstesAuto.farbe, "Erstzulassung : " + erstesAuto.erstzulassung, "Leistung : " + erstesAuto.leistung, "Kilometerstand: " + erstesAuto.kmStand);" ???
 
Ja, ist es. entweder musst du das in mehrere Sysouts packen, oder:
Java:
System.out.println("Name des Besitzers: " + erstesAuto.besitzer + //statt ,

Wie versuchst du zu kompilieren? was gibst du ein, in welcher Reihenfolge etc...
 
Müsste es denn dann so aussehen??

Code:
System.out.println("Name des Besitzers: " + erstesAuto.besitzer + "Autotyp: " + erstesAuto.autotyp + "Farbe: " + erstesAuto.farbe + "Erstzulassung : " + erstesAuto.erstzulassung + "Leistung : " + erstesAuto.leistung + "Kilometerstand: " + erstesAuto.kmStand);

Kompilieren mache ich über die MSDOS Eingabeaufforderung.
mit dem Befehl "javac AutoTest.java"
 
Mir fehlt gerade ein, dass du gar nicht auf besitzer etc. gar nicht zugreifen kannst, weil die private sind. Du musst die Methoden aufrufen.
Befindet sich denn EinfachesAuto.java im selben Verzeichnis?
 
Wie rufe ich denn die Methoden auf??? Geht das irgendwie mit dem "method " Befehl??
Und ja sie sind im selben verzeichnis???
 
Zuletzt bearbeitet:
EinfachesAuto.java habe ich kompiliert.

Habe jetzt EinfachesAuto.java und EinfachesAuto.class und AutoTest.java.

Wenn ich jetzt AutoTest kompiliere bekomme ich diese fehlermeldung.
Code:
AutoTest.java:15: kmStand has private access in EinfachesAuto
        System.out.println("Name des Besitzers: " + drittesAuto.besitzer + "Auto
typ: " + drittesAuto.autotyp + "Farbe: " + drittesAuto.farbe + "Erstzulassung :
" + drittesAuto.erstzulassung + "Leistung : " + drittesAuto.leistung + "Kilomete
rstand: " + drittesAuto.kmStand);

Hängt irgendwie damit zusammen das Sie wirklich den Status Private haben. Nur wie kann ich diese, in die Klasse AutoTest einbinden?
 
Liebe freunde ich weiss ihr meint es nur gut mit kurzen knappen anstössen, damit mann selber auf die lösung kommt. Aber ich bin wirklich ein Grünschnabel was java angeht und weis wirklich nicht was ich damit anfangen soll:
"z.B.

erstesAuto.meldung();

Es kommt auf die Runden Klammern an. "

Wenn Ihr das ein bischen detaillerte erklären könntet währe ich sehr, sehr dankbar.
Ich weis wirklich eure Mühe um diese Zeit zu schätzen.
:roll:
 
etwa so:

Code:
public class AutoTest {
 
    public static void main(String[] args) {
        EinfachesAuto erstesAuto = new EinfachesAuto("Klaus","Passat","blau",2002,175,25600);
        EinfachesAuto zweitesAuto = new EinfachesAuto("Frank","Mercedes","schwarz",2000,116,35600);
        EinfachesAuto drittesAuto = new EinfachesAuto("Peter","BMW","Rot",2008,225,1500);
        erstesAuto.meldung("Name des Besitzers: " + erstesAuto.besitzer + "Autotyp: " + erstesAuto.autotyp + "Farbe: " + erstesAuto.farbe + "Erstzulassung : " + erstesAuto.erstzulassung + "Leistung : " + erstesAuto.leistung + "Kilometerstand: " + erstesAuto.kmStand);
        zweitesAuto.meldung("Name des Besitzers: " + zweitesAuto.besitzer + "Autotyp: " + zweitesAuto.autotyp + "Farbe: " + zweitesAuto.farbe + "Erstzulassung : " + zweitesAuto.erstzulassung + "Leistung : " + zweitesAuto.leistung + "Kilometerstand: " + zweitesAuto.kmStand);
        drittesAuto.meldung("Name des Besitzers: " + drittesAuto.besitzer + "Autotyp: " + drittesAuto.autotyp + "Farbe: " + drittesAuto.farbe + "Erstzulassung : " + drittesAuto.erstzulassung + "Leistung : " + drittesAuto.leistung + "Kilometerstand: " + drittesAuto.kmStand);
    }
}
 
ok jetzt hat auch das kompilieren geklappt. Was bewirkt aber diese anweisung?

Bewirkt dies jetzt, das die Klasse AutoTest die attribute aus der klasse EinfachesAuto übernimmt?
 
Nein. Ein Aufruf der Methode bewirkt, dass die Methode aufgerufen wird. In eurer Klasse heißt das Vorgehen wohl "Methode aktivieren"...
 
"Schreiben Sie eine Testklasse AutoTest.java, mit der Sie EinfachesAuto.class testen, in dem Sie drei Objekte erzeugen und deren Methoden aktivieren."

Wenn ich wüsste was mit "Methoden aktivieren" gemeint ist!!???

Wie kann ich denn die daten ausgeben lassen?

Mit "public void alleDatenAusgeben() {
System.out.println ("Das erste Auto ist im Besitz von" + this.besitzer);
System.out.println ("Das erste Auto istein" + this.autotyp);
.
.
.
}"

Nur wie kann ich den unterscheiden zwischen erstesAuto, zweites Auto und drittesAuto???
 
Zuletzt bearbeitet:
Nein, da schreibst du rein: "DIESES Auto ist im Besitzt.....". Für jedes Auto erscheint eine andere Ausgabe.
Mit "Methoden aktivieren" ist wohl "Methoden aufrufen" gemeint.
 
ok wenn ich jedes Auto einzeln ausgeben lassen muss, wie kann ich Ihm denn sagen welches Auto er ausgibt?

oder reicht es wenn ich schreibe:

"public void alleDatenAusgeben() {
System.out.println ("Das erste Auto ist im Besitz von" + this.besitzer);"


Und er unterscheidet automatisch zwischen erstesAuto, zweitesAuto und drittesAuto und schreibt mir diese getrennt auf?
 
Hast du schon mal versucht die melden-Methode überhaupt auszuführen?
Dir wurde doch gesagt:
Code:
erstesAuto.melden()
... was könntest du denn ändern, damit die Methode bei dem zweiten Auto ausgeführt wird... Ein Tipp: erstesAuto.melden()
 
Ich habs jetzt so gemacht:

Code:
public class AutoTest {
 
    public static void main(String[] args) {
        EinfachesAuto erstesAuto = new EinfachesAuto("Klaus","Passat","blau",2002,175,25600);
        EinfachesAuto zweitesAuto = new EinfachesAuto("Frank","Mercedes","schwarz",2000,116,35600);
        EinfachesAuto drittesAuto = new EinfachesAuto("Peter","BMW","Rot",2008,225,1500);
        erstesAuto.meldung();
        zweitesAuto.meldung();
        drittesAuto.meldung();
    }
}
 
Kannst du mir hierbei auch helfen?
AUfgabe:
Schreibt die Werte der Attribute in übersichtlicher Form auf den Bildschirm

Code:
public void alleDatenAusgeben() {
System.out.println ("Das erste Auto ist im Besitz von" + this.besitzer); 
System.out.println ("Das erste Auto ist ein" + this.autotyp); 
System.out.println ("Es hat die Farbe" + this.farbe); 
.
.
.
System.out.println ("Das zweite Auto ist im Besitz von" + this.besitzer); 
System.out.println ("Das zweite Auto ist ein" + this.autotyp); 
System.out.println ("Es hat die Farbe" + this.farbe);
 .
 .
 .
 }

Ist dies korrekt? Nur wie unterscheidet er denn welches Auto ich meine? erstes, zweites oder drittes?
 
Gar nicht. du kannst höhstens machen:
Java:
System.out.println("Erstes Auto: ");
erstesAuto.alleDatenAusgeben();
System.out.println("Zweites Auto: ");
zweitesAuto.alleDatenAusgeben();
Aber ich glaube ich sage dir schon zum 3. mal, dass die sich innerhalb der Klasse nicht unterschieden...
 
Wie meinst du das mit, "das die siech nicht unterscheiden???"

Ist das denn so korrekt?

Code:
 public void alleDatenAusgeben() {
    	 System.out.println("Erstes Auto: ");
    	 ErweitertesAuto erstesAuto = null;
		erstesAuto.alleDatenAusgeben();
    	 System.out.println("Zweites Auto: ");
    	 ErweitertesAuto zweitesAuto = null;
		zweitesAuto.alleDatenAusgeben();
    	 System.out.println("Drittes Auto: ");
    	 ErweitertesAuto drittesAuto = null;
		drittesAuto.alleDatenAusgeben();
     }
 
Zuletzt bearbeitet:
Innerhalb deines Auto-Objektes siehst du nur dieses Auto-Objekt, nicht erstes, zweites, eintausendstes Auto, sondern EIN AUTO.
 

Neue Themen


Zurück
Oben