# Klassen und Objekte. Aufgabe - brauche Hilfe



## fjordschritt (16. Dezember 2009)

Wurde gelöst!


----------



## FrankBooth (16. Dezember 2009)

So, wo fangen wir an?
Also ich würde nach dem Einlesen ein Buchobjekt erstellen. Dafür brauchst du in deiner Klasse Book einen Konstruktor.


```
public Book (String name, String autor, int isbn, double preis) {
               this.name = name;
               this.autor = autor;
               this.isbn = isbn;
               this.preis = preis;
}
```

Aufruf in BookSorter


```
Book b = new Book(a,b,c,d);
```

Die Buchobjekt musst du dir noch in einem Feld oder so abspeichern.

Danach würde ich eine switch case Anweisung zum sortieren benutzen.
Du brauchst dann nur 4 Methoden zum sortieren schreiben, denen du das unsortierte Feld übergibst und die es sortiert zurück geben.


----------



## fjordschritt (16. Dezember 2009)

Wurde gelöst!


----------



## FrankBooth (16. Dezember 2009)

```
public static void main(String[] args) {
	        String a = JOptionPane.showInputDialog("Bitte geben Sie den Titel des ersten Buches ein");
	        String b = JOptionPane.showInputDialog("Bitte geben Sie den Autor des ersten Buches ein");
	        String c = JOptionPane.showInputDialog("Bitte geben Sie die ISBN Nummer des ersten Buches ein");
	        String d = JOptionPane.showInputDialog("Bitte geben Sie den Preis des ersten Buches ein");
	        int m = Integer.parseInt(c);
	        double n = Double.parseDouble(d);
	        Book book = new Book(a,b,m,n);
```


```
public class Book {
	
    private String titel;
    private String autor;
    private int isbn;
    private double preis;

    public Book(String titel, String autor, int isbn, double preis) {
    	this.titel = titel;
        this.autor = autor;
        this.isbn = isbn;
        this.preis = preis;
    }
}
```

this spricht die Klassenvariable an. 
Btw Klassenvariablen sollten private sein!


----------



## fjordschritt (16. Dezember 2009)

Wurde gelöst!


----------



## FrankBooth (16. Dezember 2009)

Du solltest dir dann noch Gedanken über eine Fehlerbehnadlung machen.
Wenn ein Wert falsch eingegeben wird, knallt es natürlich sofort im Konstruktor


----------



## fjordschritt (16. Dezember 2009)

Wurde gelöst!


----------



## FrankBooth (16. Dezember 2009)

Book book = new Book(a,b,c,d);
ist das erstellen einer Instanz der Klasse Book.
Du deklarierst eine Varible mit dem Namen book vom Typ Book.
Ist das gleiche wie


```
Book book =
int i =
```

Der Konstruktor leifert als Rückgebewert Book (public Book())

Das Objekt das der Konstruktor zurück liefert wird der Variablen book zugewiesen.

Also warum sollten Klassenvaribalen private sein. OOP sieht eine Datenkaselung vor. Man soll nur Klassen schreiben auf das innere der Klassen aber nicht zugreifen können. Klassenvariablen sollen immer über getter und setter Methoden verändert werden. So kann man nicht direkt auf die Variable zugreifen.


----------



## fjordschritt (16. Dezember 2009)

Wurde gelöst!


----------



## FrankBooth (16. Dezember 2009)

fjordschritt hat gesagt.:


> Jetzt müsste ich doch mit der Sortierung beginnen oder?



Du hast 3 Objekt der Klasse Book erstellt. Die hast du aber noch nicht gespeichert
Dann fragst du ab wonach sortiert werden soll. Die Antwort wertest du mittels switch/case aus.

Dann schreibst du für jedes Sortieren eine eingenen Methode z.B.

```
sortByPrice()
sortByTitel()
sortByAuthor()
sortByISBN()
```

und übergibst die Bücher. Die Methoden liefern die Bücher sortiert zurück.


----------



## FrankBooth (16. Dezember 2009)

```
String sortierung = javax.swing.JOptionPane.showInputDialog ("Nach was sollen die Bücher sortiert werden?\r Titel=1,Autor=2,ISBN=3,Preis=4");
int r = Integer.parseInt (sortierung);
```

Das geht wohl.


```
switch(r) {
	case 1: sortByTitle();
                 break;
	case 2: sortByAuthor();
                 break;
	case 3: sortByISBN();
                 break;
	case 4: sortByPrice();
                  break;
}
```


----------



## fjordschritt (16. Dezember 2009)

Wurde gelöst!


----------



## fjordschritt (16. Dezember 2009)

Wurde gelöst!


----------



## FrankBooth (16. Dezember 2009)

swith() erwartet int

switch(book) geht nicht.

muss immer switch(int) sein!


----------



## FrankBooth (16. Dezember 2009)

kein weiterer Parameter bei main()

ich hab einen Fehler eingebaut.


```
String sortierung = javax.swing.JOptionPane.showInputDialog ("Nach was sollen die Bücher sortiert werden?\r Titel=1,Autor=2,ISBN=3,Preis=4");
            int x = Integer.parseInt (sortierung);
```


----------



## fjordschritt (16. Dezember 2009)

Wurde gelöst!


----------



## stefnatz (16. Dezember 2009)

```
String sortierung = javax.swing.JOptionPane.showInputDialog ("Nach was sollen die Bücher sortiert werden?\r Titel=1,Autor=2,ISBN=3,Preis=4");
            int x = Integer.parseInt (Sortierung);
```

Der Fehler müsste davon kommen das du String sortierung = .. einmal klein und in beim parsen groß gescrieben hast 
Machst du beide gleich müsste es ohne String sortierung in main gehen

grüße nafetS


----------



## stefnatz (16. Dezember 2009)

Die switch anweisung kann nur mit int werten oder char arbeiten alle anderen Datentypen versteht sie nicht


----------



## FrankBooth (16. Dezember 2009)

Da fällt mir doch gerade dein letzter Thread ein. "Berechnung von Punkten" oder ?

Also die sortBy... sollst du selber schreiben!

Hier ein kleiner Link für dich.
http://www.tutorials.de/forum/java/272545-zum-thema-ubungszettel.html

und noch einer

http://openbook.galileocomputing.de/javainsel8/

Grüße


----------



## fjordschritt (16. Dezember 2009)

Wurde gelöst!


----------



## FrankBooth (16. Dezember 2009)

Die Auswahl auf- oder absteigend würde ich an die Methoden übergeben.


----------



## fjordschritt (16. Dezember 2009)

Wurde gelöst!


----------



## stefnatz (16. Dezember 2009)

public void sortByxy(int y)
je nach dem wie du dein sortieren aufbaust kein void


----------



## FrankBooth (16. Dezember 2009)

Ich geb dir jetzt alles was ich noch habe und das sind nur noch Gedanken.


Speicher dir die Bücher in einer List oder einem Feld.

In der Klasse BookSorter schreibst du die Sortiermethoden. Die geben das Feld/die Liste sortiert zurück. Als Parameter haben die Methoden ein Feld / eine Liste und eine Zahl oder einen boolean für die Unterscheidung auf- oder absteigend sortieren. das sollte es gewesen sein!

Man deklariet eine Methode so:

public/private Rückgabewert NamederMethode (Parameter1, Parameter2)

Ein Beispiel:

```
public Book gibMirEinBuch(String namedesBuches) {
    Anweisung1
    Anweisung2
    return dasRichtigeBuch
}
```


----------



## fjordschritt (4. Januar 2010)

Wurde gelöst!


----------



## zerix (4. Januar 2010)

fjordschritt hat gesagt.:


> Wurde gelöst!



Hallo,

wenn du hier schon Hilfe bekommst, dann lass deine Posts wenigestens stehen, da es sonst unbrauchbar wird. Das hier ist ein Forum, da können Beiträge auch anderen Usern helfen. 
Wenn du sowas nicht möchtest, solltest du keinem Forum beitreten.

Gruß

Sascha


----------

