> Seie eine folgende Aufgabenstellung vorliegend:
> Wir wollen einen Online-Shop fuer digitale Medien modellieren. Die
> Medien in unserem Shop sind dabei Videos, Hoerbuecher und Ebooks.
> Videos und Hoerbuecher haben eine Laufzeit (in Minuten als double),
> die jeweils direkt angegeben ist. Ebooks dagegen haben eine
> Seitenzahl. Es wird angenommen, dass man durchschnittlich 0,75 Seiten
> pro Minute lesen kann. Es soll fuer jedes Medium moeglich sein, die
> durchschnittliche Konsumdauer zu erhalten. Alle Videos, Hoerbuecher
> und Ebooks haben außerdem eine Speichergroeße (in kB als long).
>
> a) Implementieren Sie einen Typen Medium. Erstellen Sie Klassen fuer
> Videos, Hörbücher und Ebooks als Subtypen von Medium. Ihr Code soll
> geeignet sein, die Medien in unserem Online-Shop zu modellieren.
> Achten Sie dabei auf gute Kapselung und vermeiden Sie unnoetige
> Redundanz. Die Eigenschaften der verschiedenen Medien soll bei der
> Erstellung durch den Konstruktor angegeben werden.
Frage 1: (bitte auch Frage2 beachten)
Kann eine Klasse gleichzeitig ein Interface implementieren und eine Superklasse haben.
Speichergroesse kommt in Videos, Hoerbuch und Ebook vor. Daher könnte eine Klasse dieses Attribut an alle drei (Subklassen) vererben.
Problem ist allerdings, dass Abspielbare dann von Speichergr erbt und auch das interface implementieren muss:
interface Medium{
double mUseTime();
}
class SpeicherGr{
long speichergr;
SpeicherGr(){
this.speichergr = speichergr;
}
class Abspielbare extends Speichergr implements Medium{
int laufzeit;
Abspielbare(long speicherge, int laufzeit){
super(speichergr);
this.laufzeit = laufzeit;
}
double mUseTime(){
return this.laufzeit;
}
}
class Videos extends Abspielbare{
Videos(int laufzeit, long speicher){
super(laufzeit, speichergr);
}
}
class Hoerbuecher extends Abspielbare{
Hoerbuecher(int laufzeit, long speicher){
super(laufzeit, speichergr);
}
}
class Ebooks extends Speichergr implements Medium{
int seitenzahl;
Ebooks(int seitenzahl){
this.seitenzahl = seitenzahl;
}
mUseTime(){
return (Seitenzahl*1.25);
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Frage 2: Ist diese Lösung dann richtig, so dass volle Punktzahl erreicht wird?
interface Medium{
double mUseTime();
}
class Abspielbare implements Medium{
long speichergr;
int laufzeit;
Abspielbare(int laufzeit, long speichergr){
this.laufzeit = laufzeit;
this.speichergr = speichergr;
}
double mUseTime(){
return this.laufzeit;
}
}
class Videos extends Abspielbare{
Videos(int laufzeit, long speichergr){
super(laufzeit, speichergr);
}
}
class Hoerbuecher extends Abspielbare{
Hoerbuecher(int laufzeit, long speichergr){
super(laufzeit, speichergr);
}
}
class Ebooks implements Medium{
int seitenzahl;
long speichergr;
Ebooks(int seitenzahl, long speichergr){
this.seitenzahl = seitenzahl;
this.speichergr = speichergr;
}
mUseTime(){
return (Seitenzahl*1.25);
}
}
Vielen Dank für eure Antworten