Für eine Büchersammlung soll eine Software erstellt werden. Hier ein (unvollständiger) Entwurf eines Klassendiagramms und ein wenig Java-Code.
Operation
Beschreibung
einfuegenGenre(name:Text):Genre
Sucht im Feld dasGenre[] nach einem Genre-Objekt mit dem Namen name. Falls es existiert wird eine neues Objekt erzeugt und eingefügt. Rückgabe ist die ID des Genre-Objekts.
Erzeugt ein neues Buch und fügt es in das Feld ein.
getAnzahlBuecher():GZ
Gibt die Anzahl der gespeicherten Bücher in der Sammlung zurück.
getAnzahlGenre():GZ
Gibt die Anzahl der Genres zurück.
ausgebenGenre()
Gibt eine Liste aller Genres auf der Konsole aus
ausgebenSammlung()
Gibt eine Liste aller Bücher auf der Konsole aus
Klasse Buechersammlung Operationen
Operation
Beschreibung
Genre(name:Text)
Erzeugt ein neues Genre-Objekt
getName():Text
Gibt den Namen des Genres zurück
Klasse Genre Operationen
Operation
Beschreibung
Buch(titel:Text,preis:FKZ,seiten:GZ,genre:Genre)
Erzeugt ein neues Buch-Objekt
ausgebenInfo()
Gibt die Buchinfos formatiert auf der Konsole aus
Klasse Buch Operationen
Codevorgaben
public class Test{
private static Buechersammlung dieBuechersammlung = new Buechersammlung();
public static void testen(){
System.out.print("\f"); // Konsole löschen
// Buch testen
//Buch testBuch = new Buch(null,-12.3,-33,null);
//testBuch.ausgebenInfo();
dieBuechersammlung.einfuegenGenre("Herzschmerz");
dieBuechersammlung.einfuegenGenre("");
dieBuechersammlung.einfuegenGenre("Thriller");
dieBuechersammlung.ausgebenGenre();
dieBuechersammlung.einfuegenBuch("Wunderbare Welt",10,66,"Schwurbel");
dieBuechersammlung.einfuegenBuch("Nasen",2,100,"");
dieBuechersammlung.einfuegenBuch("Die Leiden des jungen Werthers",2,100,"Sturm und Drang");
dieBuechersammlung.ausgebenGenre();
dieBuechersammlung.ausgebenSammlung();
}
}
public class Buechersammlung{
public static final int MAX_ANZAHL=10;
private int anzahlBuecher;
private int anzahlGenre;
private Genre dasGenre[] = new Genre[MAX_ANZAHL];
private Buch dasBuch[] = new Buch[MAX_ANZAHL];
public Genre einfuegenGenre(String name){ // gibt ID des Genre-Objekts zurück
if(name==null || name.equals("")){
System.out.println("Buechersammlung.einfuegenGenre(): Genre leer");
return null;
}
for(int i=0;i<anzahlGenre;i++){ // schon vorhanden?
if(name.equals(dasGenre[i].getName())){
return dasGenre[i];
}
}
if(anzahlGenre>=MAX_ANZAHL){ // ist noch Platz?
System.out.println("Buechersammlung.einfuegenGenre(): Kein Platz für neues Genre");
return null;
}
Genre g=new Genre(name);
dasGenre[anzahlGenre++]=g; // g einfügen und anzahl erhöhen
return g;
}
public void einfuegenBuch(String titel,double preis,int seiten,String genre){
if (titel==null || titel.equals("")){
System.out.println("Buechersammlung.einfuegenBuch(): Kein Titel");
return;
}
if (preis<0.0){
System.out.println("Buechersammlung.einfuegenBuch(): Preis negativ");
return;
}
if (seiten<0){
System.out.println("Buechersammlung.einfuegenBuch(): Seitenanzahl negativ");
return;
}
if (genre==null || genre.equals("")){
System.out.println("Buechersammlung.einfuegenBuch(): Kein Genre");
return;
}
if(anzahlBuecher>=MAX_ANZAHL){
System.out.println("Buechersammlung.einfuegenBuch(): Kein Platz für neue Bücher");
return;
}
Genre g = einfuegenGenre(genre);
if(g==null){
System.out.println("Buechersammlung.einfuegenBuch(): Kein Platz für weiteres Genre");
return;
}
dasBuch[anzahlBuecher++] = new Buch(titel,preis,seiten,g); // neues Buch einfügen
}
public int getAnzahlBuecher(){
return anzahlBuecher;
}
public void ausgebenGenre(){
System.out.println("Buechersammlung.ausgebenGenre():");
for(int i=0;i<anzahlGenre;i++){
System.out.printf("%2d. %s\n",i,dasGenre[i].getName());
}
}
public void ausgebenSammlung(){
System.out.println("Buechersammlung.ausgebenSammlung():");
for(int i=0;i<anzahlBuecher;i++){
dasBuch[i].ausgebenInfo();
}
}
}
public class Genre{
private String name; // {nicht leer}
public Genre(String name){
if (name==null || name.equals("")){
System.out.println("Genre: Name leer");
this.name = "Name leer";
} else {
this.name=name;
}
}
public String getName(){
return name;
}
}
public class Buch{
private String titel; // {nicht leer}
private double preis; // {>=0.0}
private int seiten; // {>=0}
private Genre dasGenre; // {nicht null}
public Buch(String titel,double preis,int seiten,Genre genre){
if (titel==null || titel.equals("")){
this.titel = "Kein Titel";
System.out.println("Buch: Kein Titel");
} else {
this.titel = titel;
}
if (preis<0.0){
System.out.println("Buch: Preis negativ");
} else {
this.preis = preis;
}
if (seiten<0){
System.out.println("Buch: Seitenanzahl negativ");
} else {
this.seiten = seiten;
}
if (genre==null){
System.out.println("Buch: Genre null");
}
dasGenre = genre;
}
public void ausgebenInfo(){
System.out.printf("Titel: %-30s \tPreis:%7.2f€ \tSeiten:%5d \tGenre: %s\n",titel,preis,seiten,dasGenre.getName());
}
}