Wie kann ich diese Aufgabe lösen (Objektorientierte Programmierung, JAVA)?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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!

Woher ich das weiß:Berufserfahrung – Senior Cloud Engineer
leKAzz203 
Fragesteller
 26.08.2022, 09:48

Und die Methoden werden in der Programmklasse aufgerufen, oder ?

0
Sven Kribitz  26.08.2022, 09:51
@leKAzz203

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

1
leKAzz203 
Fragesteller
 26.08.2022, 09:52

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

0
Sven Kribitz  26.08.2022, 09:53
@leKAzz203

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)

0
Sven Kribitz  26.08.2022, 09:55
@leKAzz203

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!

1
leKAzz203 
Fragesteller
 26.08.2022, 10:31
@Sven Kribitz

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;
    }
}
0
Sven Kribitz  26.08.2022, 09:53
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!

0
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());
  }
}
justasking717  26.08.2022, 09:45

Hab in der main nur eine CD erstellt, du musst das halt mit 4 Stück machen.

0
leKAzz203 
Fragesteller
 26.08.2022, 09:46
static void playCD(CD rec){
    playCD(rec, 1);
  }

Für was steht rec als Parameter ?

0
justasking717  26.08.2022, 09:51
@leKAzz203

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.

0
leKAzz203 
Fragesteller
 26.08.2022, 10:16
@justasking717
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?

0
justasking717  26.08.2022, 12:44
@leKAzz203

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.

1

Der Parameter gibt an, um welche CD es sich handelt, also welche CD denn nun abgespielt werden soll.

leKAzz203 
Fragesteller
 26.08.2022, 09:31

Ah also der Name der CD?

0
wiele  26.08.2022, 10:02
@leKAzz203
Ah also der Name der CD?

Etwas, womit Du Deine CD eindeutig identifizierst.

0
leKAzz203 
Fragesteller
 26.08.2022, 09:32

Soll man die Methode denn in der Programmklasse schreiben oder in der Klasse CD ?

0
wiele  26.08.2022, 10:03
@leKAzz203

Die Methode schreibst Du am besten in der Klasse CD. Es kommt auf Dein Design an.

0