Verständnissprobleme mit Quelltext - Make Typ

Status
Nicht offen für weitere Antworten.
S

Seba

Gast
Halle verehrte Java Gemeinde!

Leider bin ich noch ein Anfänder in der Java programmierung und desshalb hab ich auch einige Fragen, die ihr mir hoffentlich beantworten könnt.

Ich habe euch hier einen text gepostet zu einer übungsaufgabe, die ich in der Uni erhalten habe.
Nur leider versteh ich den ganzen Quelltext noch nicht. Ich habe das Gefühl, das da noch ein Stückchen fehlt.

Code:
enum Make {VOLKSWAGEN, AUDI, OPEL, DAIMLER, BMW, PORSCHE}
class Vehicle {
int speed = 0;
int location = 0;
public int getSpeed() {
return speed;
}
public int getLocation() {
return location;
}
}
public class Car extends Vehicle {
private Make make = null;
private String model = "";
private java.awt.Color color = null;
private int serialNr = 0;
public void accelerate (int speedIncr) {
speed += speedIncr;
}
public void go (int seconds) {
location += speed*seconds;
}
public String toString (){
return make + " " + model + " " + serialNr;
}
}
class Race {
public static void main(String[] args) {
Car[] cars = new Car[3];
cars[0] = new Car(Make.BMW, "318");
cars[1] = new Car(Make.AUDI, "100");
cars[2] = new Car(Make.PORSCHE, "Carrera");
for (int i=5; i>0; i--) {
for(Car c : cars) {
c.accelerate((int)(3*Math.random())); // accelerate by a random amount (0-3)
c.go(3);
}
}
for (Car cc:cars) {
for (int j=cc.getLocation(); j>0; j--) {
System.out.print(".");
}
System.out.print(" | " + cc);
System.out.println();
}

Meine probleme liegen speziell in diesen Code Segmenten:

Code:
.
public class Car extends Vehicle {             //neue Subklasse erbt von Superklasse

private Make make = null;                        // Was bedeutet dieser Make Befehl?

private String model = "";                         // normaler String mit leerem Inhalt

private java.awt.Color color = null;            // Variable color aus dem paket java.awt.color..

private int serialNr = 0;                             // variable serialNr.
.

Vielleicht kann mir ja jemand beantworten, was das "Make" vor der Variable make zu bedeuten hat.

Danke schonmal für eure Hilfe.

Grüße
 
S

Seba

Gast
Marco13 hat gesagt.:
Von der Aussaprache her .... .... soll das vielleicht "Marke" "[ma:ke]" sein? :wink:

Ja, das kann schon sein, vllt hat sich da jemand ein wenig vertipt :)


So also wie ich das jetzt verstanden habe, ist enum wie eine Klasse, welche aber nur bei Aufzählungen verwendet wird.
Die Konstanten in der Klammer, sind also Objekte, die sich verändern lassen.

soweit so gut.


Nun wird etwas komplizierter:



Code:
public String toString (){
return make + " " + model + " " + serialNr;
}
}

Hier wird dann ein String erstellt, in dem make_modell_serialnr gespeichert werden kann.

Code:
class Race {
public static void main(String[] args) {
Car[] cars = new Car[3];                       
cars[0] = new Car(Make.BMW, "318");  
cars[1] = new Car(Make.AUDI, "100");
cars[2] = new Car(Make.PORSCHE, "Carrera");
for (int i=5; i>0; i--) {
for(Car c : cars) {
c.accelerate((int)(3*Math.random())); // accelerate by a random amount (0-3)
c.go(3);
}
}
for (Car cc:cars) {
for (int j=cc.getLocation(); j>0; j--) {
System.out.print(".");
}
System.out.print(" | " + cc);
System.out.println();
}

Nun hier bei der Klasse Race verstehe ich nicht was genau passiert

Es wird ein String erstellt, mit 3 Felder. in den 3 Felder wird durch Make.BMW. "318" den Objekten aus dem enum eine Zahl zugewiesen?

Dann folget die erste for Schleife...

Code:
for (int i=5; i>0; i--) {
for(Car c : cars) {

handelt es sich hierbei nicht um diesselbe forschleife?

könnt ihr mir vielleicht erklären, was er in der Klasse Race der Reihe nach macht?
Und was schließlich eine Typische Ausgabe der Main Methoder der Klasse Race wäre?
 

diggaa1984

Top Contributor
Seba hat gesagt.:
Es wird ein String erstellt, mit 3 Felder. in den 3 Felder wird durch Make.BMW. "318" den Objekten aus dem enum eine Zahl zugewiesen?

Code:
Car[] cars = new Car[3];  //Array für insgesamt 3 Objekte des Typs Car
cars[0] = new Car(Make.BMW, "318");  //1. Car ist n BMW, Typ 318
cars[1] = new Car(Make.AUDI, "100");  // etc.
cars[2] = new Car(Make.PORSCHE, "Carrera");

Die 3 unteren Zeilen sagen dir implizit, dass die Klasse Car ein Konstruktor benötigt, welche zum Einen eine der bereitgestellten Automarken aus dem Enum bekommt, und als 2. Parameter nen String, welcher den genauen Typ des Autos widerspiegeln soll. Der Konstruktor ist in deinem 1. Beitrag weder in Car noch in Vehicel zu finden .. sollst den eventuell nachtragen? :D

Die Objekte im Enum werden dadurch in keinster Weise beeinflusst.


Code:
for (int i=5; i>0; i--) { 
    for(Car c : cars) { 
        c.accelerate((int)(3*Math.random())); // accelerate by a random amount (0-3) 
        c.go(3); 
    }//for car c
}//for i

for (Car cc:cars) { 
    for (int j=cc.getLocation(); j>0; j--) { 
        System.out.print("."); 
    }//for j
 
    System.out.print(" | " + cc); 
    System.out.println();
}//for car cc

ma schaun, die oberste Schleife (for i) sieht aus wie die Rundenanzahl, in dem Fall also 5.
Nun werden alle Autos (for car c) in jeder Runde, also in jedem Durchlauf der obersten Schleife, um eine eine Zahl von 0-3 bewegt. Das ganze wird dann durch die go-Methode in "location" der Vehicel-Klasse gespeichert.
Nachdem das Rennen vorbei ist (for i ist beendet) erfolgt die Ausgabe des Ganzen.

wieder wird über alle Autos (for car cc) iteriert und der Fortschritt der Fortbewegung wird hier in Punkten dargestellt (für location = 3 wären das zB: ...), das geschieht in der inneren Schleife (for j). Danach kommt ne Pipe (|) und nun glaube ich müsste insgeheim die toString - Methode der Car-Klasse aufgerufen werden (durch das + cc), was in dem Fall die Kennung deines Autos darstellt.

Code:
Beispielausgabe:
.. | BMW 318 <serialNr>
.... | AUDI 100 <serialNr>
............... | Porsche Carrera <serialNr>

die serialNr liegt in der Vehicel-Klasse und ist Standardmäßig 0, inwiefern die von etwas bestimmt wird, vermag ich grad mal nicht zu urteilen, daher nur der Platzhalter .. eventuell ne Rennnummer?

Der Porsche is klarer gewinner ^^ *joke*
 
S

Seba

Gast
Vielen Dank diggaa1984, dass hat mir schon sehr weitergeholfen!

Ja den fehlenden Konstruktor musste man noch dazuschreiben.

Ich habe ihn mal erstellt. Er lautet wie folgt:

Code:
public Car (Make newmake, String newmodel){
  make = newmake;
  model = newmodel;
}

Ist dieser dann so korrekt?

Die Ausgabe, die mir mein Java Editor erzeugt hat sie wie folgt aus:



Code:
......................................................... | BMW 318 0
.................................... | AUDI 100 0
.................................... | PORSCHE Carrera 0

oder..

Code:
................................. | BMW 318 0
.................................... | AUDI 100 0
................................................... | PORSCHE Carrera 0



Bei jedem run ergibt sich eine neue Ausgabe. serialNr ist standartmäßig 0.

Grüße
 

diggaa1984

Top Contributor
jap der konstruktor ist so in ordnung.

hab mich grad gewundert über die elend lange ausgabe .. aber hatte den code da gestern nur überflogen, ist völlig ok :D

wenn du weisst was die serialNr für ne Bedeutung hat kannst dir ja ne neue Methode setSerialNr(int snr) bauen und diese dann damit setzen.
 
S

Seba

Gast
Also ich hätte auch eher marke oder brand bevorzugt ;-)

Aber woher weiß ich nun, dass die Variable "cc" im Code eine Verbindung zu der Methode toString() herstellt?

Code:
System.out.print(" | " + cc);
System.out.println();


... und somit diese Ausgabe bewirkt...


Code:
return make + " " + model + " " + serialNr;
 

diggaa1984

Top Contributor
das liegt daran das du dort ein Objekt referenzierst wo aber normalerweise nen String erwartet wird. Und bitte korrigiere mich einer falls ich falsch liege ... in dem Moment wird automatisch die toString-Methode des referenziertes Objektes aufgerufen. Und da alles von Object abstammt hat wie hier zu sehen auch alles eine toString-Methode. Und da du diese in der Klasse Car überschreibst gibts da statt wüster Ausgabe nen schön formatierten String mit dem was der Nutzer auch versteht :D
 
S

Seba

Gast
diggaa1984 hat gesagt.:
das liegt daran das du dort ein Objekt referenzierst wo aber normalerweise nen String erwartet wird. Und bitte korrigiere mich einer falls ich falsch liege ... in dem Moment wird automatisch die toString-Methode des referenziertes Objektes aufgerufen. Und da alles von Object abstammt hat wie hier zu sehen auch alles eine toString-Methode. Und da du diese in der Klasse Car überschreibst gibts da statt wüster Ausgabe nen schön formatierten String mit dem was der Nutzer auch versteht :D

Okay super danke, wieder etwas dazu gelernt.

Von alleine wäre ich wohl nie auf sowas gekommen.. wie denn auch :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Quelltext mit komischen griechischen Zeichen Java Basics - Anfänger-Themen 4
J Java GUI- Objekte Position per Quelltext bestimmen Java Basics - Anfänger-Themen 4
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
F Webseiten Quelltext auslesen Java Basics - Anfänger-Themen 5
C Quelltext mit Formatierungs- und Style-Informationen versehen Java Basics - Anfänger-Themen 7
S HTML-Quelltext hinter HTTPS Java Basics - Anfänger-Themen 1
D Erste Schritte Suche Quelltext Java Basics - Anfänger-Themen 7
J QuellText Frage Java Basics - Anfänger-Themen 1
X Quelltext einen Tic Tac Toe Spiels erklären Java Basics - Anfänger-Themen 4
U Website Quelltext auslesen - Javaskripte im Hintergrund? Java Basics - Anfänger-Themen 4
T Quelltext wird nicht compiliert obwohl er Fehlerfrei ist. Java Basics - Anfänger-Themen 4
O Java will mir den Quelltext nich zu Bytecode Compilieren Java Basics - Anfänger-Themen 24
J Quelltext einer Homepage auslesen Java Basics - Anfänger-Themen 14
R Problem mit Quelltext : Kommazeichen Java Basics - Anfänger-Themen 7
E Quelltext für Grafik verschwindet Java Basics - Anfänger-Themen 9
R Quelltext sachen rausfiltern Java Basics - Anfänger-Themen 16
R Input/Output Formular absenden und Quelltext auslesen Java Basics - Anfänger-Themen 5
A Komentieren von Quelltext Java Basics - Anfänger-Themen 12
D Quelltext richtig verstanden? Java Basics - Anfänger-Themen 7
E Korrekter Quelltext? Java Basics - Anfänger-Themen 17
F HttpURLConnection Fehler beim Quelltext holen Java Basics - Anfänger-Themen 6
K Erste Schritte quelltext hilfe anfänger Java Basics - Anfänger-Themen 8
M Quelltext auslesen und diesen in einen String schreiben Java Basics - Anfänger-Themen 3
G Internet-Zugriff // URL posten, Quelltext einlesen Java Basics - Anfänger-Themen 5
E Compiler-Fehler Quelltext aus Buch erzeugt Fehler Java Basics - Anfänger-Themen 3
H Methoden Problem mit get-methode im Quelltext Java Basics - Anfänger-Themen 17
B Quelltext einlesen Java Basics - Anfänger-Themen 12
L Quelltext von vorgefertigten Klassen ansehen Java Basics - Anfänger-Themen 4
StrikeTom Quelltext einer Internetseite auf JTextArea anzeigen Java Basics - Anfänger-Themen 4
K Passage im Quelltext verstehen Java Basics - Anfänger-Themen 2
M Quelltext kürzen Java Basics - Anfänger-Themen 8
F Aus UML Diagramm Quelltext Java Basics - Anfänger-Themen 7
A Quelltext Java Basics - Anfänger-Themen 21
N kommentierter Quelltext zum Üben erwünscht Java Basics - Anfänger-Themen 6
R Quelltext einfügen und kompilieren Java Basics - Anfänger-Themen 4
D Quelltext zu vereinfachen? Java Basics - Anfänger-Themen 4
G Mit Java Quelltext auf Element untersuchen. Java Basics - Anfänger-Themen 5
G Brauche ein paar erklärungen zu Quelltext Java Basics - Anfänger-Themen 5
Y Einfachen Quelltext in UML darstellen mit Eclipse Java Basics - Anfänger-Themen 8
M Quelltext - Urls filtern Java Basics - Anfänger-Themen 4
G Quelltext von Methoden in der Klasse Math Java Basics - Anfänger-Themen 11
D Quelltext schützen ? Java Basics - Anfänger-Themen 16
M quelltext html-seite speichern + links speichern Java Basics - Anfänger-Themen 2
B NSD-Diagramme aus Java-Quelltext erstellen! Java Basics - Anfänger-Themen 3
P Quelltext nicht kompilierbar Java Basics - Anfänger-Themen 15
I translate.java - kein sichtbarer fehler im quelltext Java Basics - Anfänger-Themen 18
L Quelltext problem Java Basics - Anfänger-Themen 46
G Quelltext compilieren und öffnen Java Basics - Anfänger-Themen 11
M Quelltext vom Applet Java Basics - Anfänger-Themen 20
M brauche hilfe mit folgendem quelltext Java Basics - Anfänger-Themen 7
V Quelltext einer Homepage einlesen Java Basics - Anfänger-Themen 12
N Quelltext durchsuchen ggfls Alarm schlagen. Java Basics - Anfänger-Themen 29
L quelltext kompilieren Java Basics - Anfänger-Themen 2
G eigenen Quelltext ausgeben Java Basics - Anfänger-Themen 8
G Html Quelltext auslesen der passwortgeschützt ist Java Basics - Anfänger-Themen 4
R Quelltext einer HTML-Seite auslesen Java Basics - Anfänger-Themen 2
M Wo liegt der Quelltext von System.out.println() Java Basics - Anfänger-Themen 3
M Handy Programm, kompletter Quelltext.Methodische Fehler? Java Basics - Anfänger-Themen 3
S Quelltext mit Fehlern Java Basics - Anfänger-Themen 12
U Abkürzung in Quelltext :(( Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben