Wie kann ich diese Aufgabe lösen (Objektorientierte Programmierung, JAVA)?
- Definiere eine Klasse
CD
- , die folgende Eigenschaften eines Musikalbums verwaltet:
- Interpret
- CD Titel
- playCount (wie oft wurde die CD gespielt)
- Erzeuge eine Programmklasse namens
Sew2UeCD
- und initialisiere in der
main()
- -Methode 4 unterschiedliche CD’s an (der
playCount
- bleibt bei allen vorerst 0)
Schreibe dann folgende zwei Methoden:
static void playCD(CD rec)
static void playCD(CD rec, int count)
Diese beiden Methoden simulieren das Abspielen einer CD und sollen den
playCount
der übergebenen CD verändern:
- Die erste Methode erhöht den Zähler der übergebenen CD um 1,
- Die zweite Methode erhöht den Zähler um den Wert count (Werte kleiner als 0 sollen hier ignoriert werden!)
„Spiele“ die 4 oben angelegten CD’s mehrmals indem Du einige Male die eine oder andere Methode aufrufst.
playCD(record1);
playCD(record1,3);
...
Gib danach die 4 CD’s und ihre aktuell gespeicherten Werte (unsortiert) aus.
Ich verstehe nicht so ganz wie ich die beiden Methoden umsetzen soll. Für was ist denn der Parameter CD rec in den beiden Methoden ? Was soll bei der Ausgabe record1 bedeuten ?
3 Antworten
Guten Morgen,
Für was ist denn der Parameter CD rec in den beiden Methoden?
Du erstellst eine Art Schablone, die Klasse. Die Objekte sind die angewandte Schablone. Nämlich record1 bis record4. Die records sind nämlich die CDs.
In deiner Programmklasse hast du lediglich die Aufgabe, vier CDs (record1 bis record4) anzulegen und abzuspielen.
CD record1 = new CD();
playCD(record1);
CD record2 = new CD();
playCD(record2);
CD record3 = new CD();
playCD(record3);
CD record4 = new CD();
playCD(record4);
In der Klasse CD solltest du am besten den Wert von playCount standardmäßig auf 0 setzen.
Zurück zur Frage, was der Parameter CD rec ist;
static void playCD(CD rec)
heißt, dass eine statische (also Objektunabhängige) Methode angelegt wird, die nichts zurückgibt (void). Dahin übergibst du deine Objekte record1 bis record4. In der Methode werden diese lediglich "rec" genannt. In dieser Methode sollst du dann einfach rec++; ausführen oder eben rec += count.
Was soll bei der Ausgabe record1 bedeuten ?
record1 bis record4 sind die vier genannten CDs. :-) Du sollst also playCD mit allen vier CDs mehrmals durchspielen.
Wenn Du noch Fragen hast, frag gerne!
Liebe Grüße und noch einen schönen Freitag!
Und die Methoden werden in der Programmklasse aufgerufen, oder ?
Das geht mir hier leider nicht deutlich genug heraus. Theoretisch kannst du die Methoden sowohl in CD als auch in der Programmklasse erstellen.
Ich kann mir vorstellen, dass es hier in CD gemeint ist, damit man dir dann ein neues Keyword ("this") vorstellen kann und static als Keyword entfernt. Dann kannst du nämlich ohne Übergabe einer CD einfach "diese" CD abspielen. Das wäre dann record1.playCD();
Jetzt bin ich bissl verwirrt... hahah
Dahin übergibst du deine Objekte record1 bis record4. In der Methode werden diese lediglich "rec" genannt. In dieser Methode sollst du dann einfach rec++; ausführen oder eben rec += count.
also ist rec doch nicht der Name der CD? Man kann doch schlechte ein Name + count machen
Oh, entschuldige, da hast du natürlich Recht! rec.playCount würde man dann entsprechend erhöhen! Da war ich schneller beim Tippen als beim Denken. :o)
Haha :) Kein Problem. Danke und schönen Tag noch :)
Zur Ergänzung "Name" der CD ist vielleicht etwas schwammig formuliert. Das ist der Bezeichner, du verwaltest ja hier das Objekt der CD, nicht nur den Namen. :-)
Ich wünsche dir auch einen schönen Tag!
Wie könnte ich das denn ausgeben?
public class Sew2UeCD {
public static void main(String[] args) {
CD cd1 = new CD ();
cd1.interpret = "Ava Max";
cd1.cdTitel = "So am I";
cd1.playcount = 0;
CD cd2 = new CD ();
cd2.interpret = "Rihanna";
cd2.cdTitel = "Only girl";
cd2.playcount = 0;
CD cd3 = new CD ();
cd3.interpret = "Alan Walker";
cd3.cdTitel = "Alone";
cd3.playcount = 0;
CD cd4 = new CD ();
cd4.interpret = "Laurens Spencer Smith";
cd4.cdTitel = "Flower";
playCD(cd1);
playCD(cd1,3);
}
static void playCD (CD rec){
rec.playcount +=1;
}
static void playCD (CD rec, int count){
if (count < 0) {
return;
}
rec.playcount+=count;
}
}
In der Methode werden diese lediglich "rec" genannt. In dieser Methode sollst du dann einfach rec++; ausführen oder eben rec += count.
Korrektur: Natürlich erhöht man dann entsprechend rec.playCount, nicht rec!
public class CD{
String title;
String interpreter;
int playCount;
public CD(String title, String interpreter){
this.title = title;
this.interpreter = interpreter;
}
public String toString(){
return "CD '" + title + "' (" + interpreter + ") has been played " + playCount + " times.";
}
}
public class Sew2UeCD{
static void playCD(CD rec){
playCD(rec, 1);
}
static void playCD(CD rec, int playCount){
if(playCount < 0){
return;
} else {
rec.playCount += playCount;
}
}
public static void main(String[] args){
CD bravo = new CD("Bravo Hits 2002", "Katy Perry");
playCD(bravo);
playCD(bravo, 5);
System.out.println(bravo.toString());
}
}
Hab in der main nur eine CD erstellt, du musst das halt mit 4 Stück machen.
static void playCD(CD rec){
playCD(rec, 1);
}
Für was steht rec als Parameter ?
rec ist die übergebene CD wenn man playCD mit einer beliebigen CD aufruft. Damit ist keine bestimmte CD gemeint, sondern die, die übergeben wurde. Sie erhält quasi kurzfristig diesen Bezeichner.
Wenn ich z.B. die CD mit dem Bezeichner bravo erstelle ...
CD bravo = new CD("Bravo Hits 2000", "Katy Perry");
...und dann playCD mit dieser CD aufrufe...
playCD(bravo);
... dann ändert sich innerhalb der Methode playCD der Bezeichner von "bravo" zu "rec". D.h. letztendlich wird bravo.playCount += 1 aufgerufen.
public class Sew2UeCD {
public static void main(String[] args) {
CD cd1 = new CD ();
cd1.interpret = "Ava Max";
cd1.cdTitel = "So am I";
cd1.playcount = 0;
CD cd2 = new CD ();
cd2.interpret = "Rihanna";
cd2.cdTitel = "Only girl";
cd2.playcount = 0;
CD cd3 = new CD ();
cd3.interpret = "Alan Walker";
cd3.cdTitel = "Alone";
cd3.playcount = 0;
CD cd4 = new CD ();
cd4.interpret = "Laurens Spencer Smith";
cd4.cdTitel = "Flower";
playCD(cd1);
playCD(cd1,3);
}
static void playCD (CD rec){
rec.playcount +=1;
}
static void playCD (CD rec, int count){
if (count < 0) {
return;
}
rec.playcount+=count;
}
}
Wie kann ich es denn ausgeben?
Ich habe dafür in der Klasse CD die toString() Methode definiert. Diese gibt eine Zeichenkette zurück. Die zurückgegebene Zeichenkette gebe ich dann mit System.out.println(...); aus.
Der Parameter gibt an, um welche CD es sich handelt, also welche CD denn nun abgespielt werden soll.
Soll man die Methode denn in der Programmklasse schreiben oder in der Klasse CD ?
Die Methode schreibst Du am besten in der Klasse CD. Es kommt auf Dein Design an.
Danke!