ein besserer titel fällt mir gerade nicht ein.
habe eine videothek, dort gibt es medien (dvd und vhs) und kunden, die filme ausleihen können.
insgesamt bin ich mit meiner aufgabe ziemlich fertig, nur mir fehlt noch die möglichkeit, dass es dvds oder vhs auch mehr als einmal geben kann, bsp die dvd terminator 3mal.
ich komm grad leider nicht drauf, wie ich das hier lösen kann.
und falls jemand sonst noch ein fehler auffällt, was nicht so gut gemacht wurde, bitte sagen
hier nun der code:
habe eine videothek, dort gibt es medien (dvd und vhs) und kunden, die filme ausleihen können.
insgesamt bin ich mit meiner aufgabe ziemlich fertig, nur mir fehlt noch die möglichkeit, dass es dvds oder vhs auch mehr als einmal geben kann, bsp die dvd terminator 3mal.
ich komm grad leider nicht drauf, wie ich das hier lösen kann.
und falls jemand sonst noch ein fehler auffällt, was nicht so gut gemacht wurde, bitte sagen
hier nun der code:
Code:
package aufgabenblatt1.aufgabe1;
import java.util.Iterator;
import java.util.Vector;
/**
* @author Kai
*
* Repräsentiert eine Videothek
*/
public class VideothekImpl //implements VideothekInterface
{
private Vector _kundenlisteVector;
private Vector _dvdMedienlisteVector;
private Vector _vhsMedienlisteVector;
private static int _videothekenID = 0;
private String _name;
public VideothekImpl(String name)
{
_videothekenID++;
this._name = name;
_kundenlisteVector = new Vector();
_dvdMedienlisteVector = new Vector();
_vhsMedienlisteVector = new Vector();
}
/**
* Fügt der Videothek einen Kunden hinzu
* @param k Kunde, der hinzugefügt wird
* @return Einen String als Bestätigung, dass der Kunde erfolgreich
* hinzufügt wurde
*/
public String addKunde(Kunde k)
{
_kundenlisteVector.add(k);
return new String("Kunde '" + k.getKundenname() + " " + k.getVorname()
+ "' wurde erfolgreich hinzugefügt.");
}
/**
* Löscht einen Kunden der Videothek
* @param k Kunde, der gelöscht wird
* @return Einen String als Bestätigung, dass der Kunde erfolgreich
* gelöscht wurde
*/
public String deleteKunde(Kunde k)
{
_kundenlisteVector.removeElement(k);
return new String("Kunde '" + k.getKundenname() + " " + k.getVorname()
+ "' wurde erfolgreich entfernt.");
}
/**
* Gibt die Kundendaten des Kunden aus
* @param k Kunde, dessen Daten ausgegeben werden
* @return Einen String mit den Daten des Kunden
*/
public String printKundendaten(Kunde k)
{
return k.printKunde();
}
/**
* Gibt die Daten aller Kunden der Videothek aus
* @return Einen String mit allen Daten aller Kunden
*/
public String printAlleKundenDaten()
{
Iterator it = _kundenlisteVector.iterator();
String temp = new String("");
while (it.hasNext())
{
temp += it.next().toString();
}
return temp;
}
/**
* Fügt eine VHS Kassette zum Bestand der Videothek hinzu
* @param vhs Ein Spielfilm auf VHS Kassette
* @return Einen String als Bestätigung, dass die VHS Kassette erfolgreich
* hinzugefügt wurde
*/
public String addMedien(VHS vhs)
{
_vhsMedienlisteVector.add(vhs);
return new String("VHS Film '" + vhs.getTitel()
+ "' wurde erfolgreich hinzugefügt.");
}
/**
* Fügt einen DVD Film zum Bestand der Videothek hinzu
* @param dvd Ein Spielfilm auf DVD
* @return Einen String als Bestätigung, dass die DVD erfolgreich
* hinzugefügt wurde
*/
public String addMedien(DVD dvd)
{
_dvdMedienlisteVector.add(dvd);
return new String("DVD Film '" + dvd.getTitel()
+ "' wurde erfolgreich hinzugefügt.");
}
/**
* Löscht einen VHS Film der Videothek
* @param vhs VHS Film, der gelöscht wird
* @return Einen String als Bestätigung, dass der VHS Film erfolgreich
* gelöscht wurde
*/
public String deleteMedien(VHS vhs)
{
_vhsMedienlisteVector.removeElement(vhs);
return new String("VHS Film '" + vhs.getTitel()
+ "' wurde erfolgreich entfernt.");
}
/**
* Löscht einen DVD Film der Videothek
* @param dvd DVD Film, der gelöscht wird
* @return Einen String als Bestätigung, dass der DVD Film erfolgreich
* gelöscht wurde
*/
public String deleteMedien(DVD dvd)
{
_vhsMedienlisteVector.removeElement(dvd);
return new String("DVD Film '" + dvd.getTitel()
+ "' wurde erfolgreich entfernt.");
}
/**
* Gibt alle Medien (DVD und VHS) aus, welche die Videothek besitzt
* @return Einen String mit allen Medien der Videothek
*/
public String printAlleMedien()
{
// erst alle DVDs...
String temp = new String("\nDVDs:\n");
Iterator it = _dvdMedienlisteVector.iterator();
while (it.hasNext())
{
temp += it.next().toString();
}
temp+= "-------------------------------------------------------\n";
// dann alle VHS Filme
temp += "VHS Filme:\n";
Iterator it2 = _vhsMedienlisteVector.iterator();
while (it2.hasNext())
{
temp += it2.next().toString();
}
temp+= "-------------------------------------------------------\n";
return temp;
}
}
package aufgabenblatt1.aufgabe1;
import java.util.Date;
/**
* @author Kai
*
* Repräsentiert einen Kunden der Videothek
*/
public class Kunde implements KundeInterface
{
private static int _staticKundennummer = 1;
private int _kundennummer;
private String _name;
private String _vorname;
private String _ort;
private int _postleitzahl;
private String _alleAusgeliehenenFilme; // alle filme die ausliehen werden, werden hier
// registriert.
public Kunde(String name, String vorname, int postleitzahl, String ort)
{
_kundennummer = _staticKundennummer++;
this._name = name;
this._vorname = vorname;
this._ort = ort;
this._postleitzahl = postleitzahl;
_alleAusgeliehenenFilme = new String("Folgende Filme wurden bisher von "
+ getKundenname() + " ausgeliehen:\n");
}
/**
* Gibt die Daten des Kunden aus
* @return Kundendaten
*/
public String printKunde()
{
//funltioniert noch nicht, muss auf Vector zugreifen !!!
/*String temp = new String("\n");
temp += "Kundendaten:\n";
temp += "Kundennummer: " + getKundennummer() +"\n";
temp += "Name: " + getKundenname() + " " + getVorname() + "\n";
temp += "Adresse: " + getPostleitzahl() + " " + getOrt() + "\n";
temp += "-----------------------------------------------------------------";
return temp;*/
return toString();
}
/**
* Ein Kunde kann Filme ausleihen, sofern sie verfügbar sind.
* @param medien Medien (entweder DVD oder VHS)
* @throws BereitsAusgeliehenException
*/
public void ausleihen(Medien medien) throws BereitsAusgeliehenException
{
if (medien instanceof VHS)
{
if (!medien.isAusgeliehen())
{
medien.setAusgeliehen(true);
medien.set_ausgeliehenAnWen(getKundenname());
registriereAusgeliehenenFilm(medien);
System.out.println("Der VHS Film " + medien.getTitel() + " wurde von "
+ getKundenname() + " (KdNr: " + getKundennummer() + ") ausgeliehen.");
}
else
{
throw new BereitsAusgeliehenException("Der VHS Film " + medien.getTitel()
+ " ist im Moment leider schon verliehen an den Kunde "
+ medien.get_ausgeliehenAnWen() + ".");
}
}
if (medien instanceof DVD)
{
if (!medien.isAusgeliehen())
{
medien.setAusgeliehen(true);
medien.set_ausgeliehenAnWen(getKundenname());
registriereAusgeliehenenFilm(medien);
System.out.println("Der DVD Film " + medien.getTitel() + " wurde von "
+ getKundenname() + " (KdNr: " + getKundennummer() + ") ausgeliehen.");
}
else
{
throw new BereitsAusgeliehenException("Der DVD Film " + medien.getTitel()
+ " ist im Moment leider schon verliehen an den Kunde "
+ medien.get_ausgeliehenAnWen() + ".");
}
}
}
/**
* Der Kunde kann den ausgeliehenen Film zurückgeben.
* @param medien Medien (entweder DVD oder VHS)
*/
public void zurueckgeben(Medien medien)
{
if (medien instanceof VHS)
{
medien.setAusgeliehen(false);
medien.set_ausgeliehenAnWen("");
registriereZurueckgegebenFilm(medien);
System.out.println("Der VHS Film " + medien.getTitel() + " wurde von "
+ getKundenname() + " (KdNr: " + getKundennummer() + ") zurückgegeben.");
}
if (medien instanceof DVD)
{
medien.setAusgeliehen(false);
medien.set_ausgeliehenAnWen("");
registriereZurueckgegebenFilm(medien);
System.out.println("Der DVD Film " + medien.getTitel() + " wurde von "
+ getKundenname() + " (KdNr: " + getKundennummer() + ") zurückgegeben.");
}
}
/**
* Überschreibt die toString Methode von Object
*/
public String toString()
{
String temp = new String("\n");
temp += "Kundendaten:\n";
temp += "Kundennummer: " + getKundennummer() +"\n";
temp += "Name: " + getKundenname() + " " + getVorname() + "\n";
temp += "Adresse: " + getPostleitzahl() + " " + getOrt() + "\n";
temp += _alleAusgeliehenenFilme;
temp += "-----------------------------------------------------------------";
return temp;
}
// Wenn ein Kunde einen Film ausleiht, wird er in dieser Methode zu dem String
// _alleAusgeliehenenFilme hinzugefügt.
private void registriereAusgeliehenenFilm(Medien medien)
{
if (medien instanceof VHS)
{
_alleAusgeliehenenFilme += "VHS Film: " + medien.getTitel()
+ " --- Ausleihzeitpunkt: " + new Date().toString() + "\n";
}
if (medien instanceof DVD)
{
_alleAusgeliehenenFilme += "DVD Film: " + medien.getTitel()
+ " --- Ausleihzeitpunkt: " + new Date().toString() + "\n";
}
}
// Wenn ein Kunde einen Film zurueckgibt, wird diese Information in dieser Methode
// zu dem String _alleAusgeliehenenFilme hinzugefügt.
private void registriereZurueckgegebenFilm(Medien medien)
{
if (medien instanceof VHS)
{
_alleAusgeliehenenFilme += "VHS Film: " + medien.getTitel()
+ " --- Rückgabezeitpunkt: " + new Date().toString() + "\n";
}
if (medien instanceof DVD)
{
_alleAusgeliehenenFilme += "DVD Film: " + medien.getTitel()
+ " --- Rückgabezeitpunkt: " + new Date().toString() + "\n";
}
}
/**
* @return Gibt den Namen zurück.
*/
public String getKundenname()
{
return _name;
}
/**
* @return Gibt die Kundennummer zurück.
*/
public int getKundennummer() {
return _kundennummer;
}
/**
* @return gibt den Ort zurück.
*/
public String getOrt() {
return _ort;
}
/**
* @return Gibt die Postleitzahl zurück.
*/
public int getPostleitzahl() {
return _postleitzahl;
}
/**
* @return Gibt den Vornamen zurück.
*/
public String getVorname() {
return _vorname;
}
}
package aufgabenblatt1.aufgabe1;
/**
* @author Kai
*
* Repräsentiert Medien, welche die Videothek besitzt. Die Klasse ist abtract und kann
* daher nicht erzeugt werden.
*
*/
public abstract class Medien
{
protected boolean _isAusgeliehen;
protected String _ausgeliehenAnWen;
protected String _titel;
protected int _laufzeit;
protected int _fsk; //ToDo: ENUMS (0,6,12,16,18) ---> java 1.5 nötig !!!
protected String[] _sprachen;
//private int[] _bestandEinesFilmes; //zb 2mal als vhs und 3 mal als dvd vorhanden
/**
* @return Gibt zurück, ob isAusgeliehen wahr oder falsch ist.
*/
public boolean isAusgeliehen() {
return _isAusgeliehen;
}
/**
* @param isAusgeliehen Setzt die Variable isAusgeliehen auf wahr oder falsch.
*/
public void setAusgeliehen(boolean isAusgeliehen)
{
this._isAusgeliehen = isAusgeliehen;
}
/**
* Gibt den Filmtitel aus.
* @return titel
*/
public String getTitel()
{
return _titel;
}
/**
* Gibt die Laufzeit des Filmes aus
* @return laufzeit
*/
public int getLaufzeit()
{
return _laufzeit;
}
/**
* Gibt die Alterbeschränkung (FSK) aus
* @return fsk
*/
public int getFsk()
{
return _fsk;
}
public String getSprachen()
{
String temp = new String("");
for (int i=0; i<_sprachen.length; i++)
{
temp += _sprachen[i] + " ";
}
return temp;
}
/**
* @return Gibt zurück, an wen der Film ausgeliehen wurde.
*/
public String get_ausgeliehenAnWen() {
return _ausgeliehenAnWen;
}
/**
* @param Setzt den String auf den Kunden, der den Film ausgeliehen hat.
*/
public void set_ausgeliehenAnWen(String anWen) {
_ausgeliehenAnWen = anWen;
}
}
package aufgabenblatt1.aufgabe1;
/**
* @author Kai
*
* Repräsentiert eine VHS Kassette mit einem Spielfilm
*/
public class VHS extends Medien
{
public VHS(String titel, int laufzeit, int fsk, String[] sprache)
{
this._titel = titel;
this._laufzeit = laufzeit;
this._fsk = fsk;
this._sprachen = sprache;
_isAusgeliehen = false;
_ausgeliehenAnWen = new String("");
}
/**
* Überschreibt die toString Methode der Klasse Object.
*/
public String toString()
{
String temp = new String("\n");
temp += "Informationen über die VHS Kassette:\n";
temp += "Titel: " + getTitel() +"\n";
temp += "Laufzeit: " + getLaufzeit() + "\n";
temp += "FSK: " + getFsk() + "\n";
temp += "Sprache: " + getSprachen() + "\n";
temp += "-----------------------------------------------------------------";
return temp;
}
}
package aufgabenblatt1.aufgabe1;
/**
* @author Kai
*
* Repräsentiert einen DVD Film
*/
public class DVD extends Medien
{
private int _inhaltMedien;//bei dvds ist zb eine bonus dvd dabei (nicht bei VHS)
public DVD(String titel, int laufzeit, int fsk, String[] sprache,
int inhaltMedien)
{
this._titel = titel;
this._laufzeit = laufzeit;
this._fsk = fsk;
this._sprachen = sprache;
this._inhaltMedien = inhaltMedien;
_isAusgeliehen = false;
}
/**
* Überschreibt die toString Methode der Klasse Object.
*/
public String toString()
{
String temp = new String("\n");
temp += "Informationen über die DVD:\n";
temp += "Titel: " + getTitel() +"\n";
temp += "Laufzeit: " + getLaufzeit() + "\n";
temp += "FSK: " + getFsk() + "\n";
temp += "Sprachen: " + getSprachen() + "\n";
temp += "Anzahl der DVDs: " + getInhaltMedien() + "\n";
temp += "-----------------------------------------------------------------";
return temp;
}
/**
* Gibt die Anzahl der DVDs zurück (Hauptfilm + Zusatzdiscs)
* @return inhaltMedien
*/
public int getInhaltMedien()
{
return _inhaltMedien;
}
}
package aufgabenblatt1.aufgabe1;
/**
* @author Kai
*
* Testklasse, um zu testen ob alle Funktionen ohne Fehler laufen
*/
public class VideothekTestClass
{
public static void main(String[] args)
{
//Kunde und Videothek testen ---> test ok!!!
Kunde kunde1 = new Kunde("Schmid", "Joe", 91301, "Forchheim");
Kunde kunde2 = new Kunde("Wolf", "Stefan", 90000, "München");
VideothekImpl v1 = new VideothekImpl("Top Video");
System.out.println(v1.addKunde(kunde1));
System.out.println(v1.addKunde(kunde2));
//v1.deleteKunde(kunde2); ---> test ok !!!
// klappt noch nicht:
//System.out.println(v1.printKundendaten(kunde1));
//System.out.println(v1.printKundendaten(kunde2));
System.out.println(v1.printAlleKundenDaten());
// Medien (DVD und VHS) testen ---> test ok!!!
String[] herrDerRingeSprachen = new String[] {"deutsch", "englisch"};
DVD dvd1 = new DVD("Herr der Ringe", 300, 12, herrDerRingeSprachen , 3);
System.out.println(v1.addMedien(dvd1));
String[] terminatorSprachen = new String[] {"deutsch", "französisch"};
DVD dvd2 = new DVD("Terminator", 120, 18, terminatorSprachen , 2);
System.out.println(v1.addMedien(dvd2));
String[] starWarsSprachen = new String[] {"deutsch"};
VHS vhs1 = new VHS("Star Wars", 120, 6, starWarsSprachen );
System.out.println(v1.addMedien(vhs1));
System.out.println(v1.printAlleMedien());
// ausleihen (verfügbar?!?)
try
{
kunde1.ausleihen(vhs1);
}
catch(BereitsAusgeliehenException e)
{
System.out.println(e.getMessage());
}
try
{
kunde2.ausleihen(vhs1);
}
catch(BereitsAusgeliehenException e)
{
System.out.println(e.getMessage());
}
kunde1.zurueckgeben(vhs1);
try
{
kunde2.ausleihen(vhs1);
}
catch(BereitsAusgeliehenException e)
{
System.out.println(e.getMessage());
}
try
{
kunde2.ausleihen(dvd1);
}
catch(BereitsAusgeliehenException e)
{
System.out.println(e.getMessage());
}
System.out.println(v1.printAlleKundenDaten());
}
}