# Herangehensweise an ein Java Programm



## ::Walter (3. Apr 2004)

Hallo zusammen,

ich bin dabei Java zu lernen, durch google hab ich schon einiges an Lernmaterial gefunden auch eine PDF Datei, die mir momentan Kopfschmerzen bereitet.
Inhalt der Datei:


Medienverwaltung
-  Sie sollen in dieser Aufgabe die Verwaltung von Medien für einen
Internet-Shop implementieren.
-  Medien erhalten bestimmte Eigenschaften:
 * Name (z.B. Buchtitel, Name eines Films, …)
 * Inhaltsangabe
 * Ort (wo ist der Artikel im Lager zu finden)
 * Anzahl (wie viele dieser Medien sind momentan im Lager)
 * Preis (Einkauf, Verkauf)
 * Kategorie
 * Medien-Typ

-  Ein Medium wird immer genau einer Kategorie zugeordnet:
 * Humor
 * Action
 * …

-  Als Medien-Typ gelten:
 * DVD
 * CD
 * Band
 * Audio-CD
 * VHS-Band
 * Zeitschrift
 * Buch

-  Erstellen Sie eine Klasse Medium, mit deren Hilfe Sie ein Medium
verwalten können:
-  Überlegen Sie sich geeignete Datentypen für die Attribute.
-  Welche Zugriffsmethoden benötigen Sie?
-  Wie können Sie die Kategorie und den Medientyp verwalten?

Mir geht es nicht darum nun ein fertiges Programm geliefert zu bekommen bzw. den fertigen Quelltext dazu. Nein, mich würde mal die Herangehensweise von euch intressieren, wie ihr an sowas herangeht.
Was das Programmieren an geht bin ich noch ziemlich am Anfang des Ganzen, deswegen bereitet mir das etwas Schwierigkeiten.
Vielleicht kann mir ja der eine oder andere hier unter die Arme greifen und mir an Hand des Beispiels erklären wie man so ein Projekt bewältigt - eine kleine Art der Interaktion. Ich würde mich sehr freuen 

Gruß Walter


----------



## Roar (3. Apr 2004)

wo ist denn genau das problem? wo bleibst du hängen, was kannst du nicht?
is doch einfach: neue klasse Medium, eigenschaften wie titel und so, n paar getter und setter methoden. für die art des mediums würde ich ne interface schreiben mit public static final ints die art des mediums darstellen..


----------



## ::Walter (3. Apr 2004)

Thx Roar, das mit der Klasse ist ja kein Problem.

Welchen Datentyp nehm ich für die Kategorie und den Medien-Typ ?
Wenn ich später abfragen will wieviele Medien in der Kategorie "Action" vorhanden sind oder wieviele Medien es als Medien-Typ "DVD" gibt, welche Datentypen müsste ich dann wählen??
Danke für die Hilfe

Walter


----------



## Roar (4. Apr 2004)

für kategorie und medium würd ich das so machen:

```
public interface MediumTypes {
public static final int DVD = 0;
public static final int CD = 1;
//.. und so
}

public interface CategoryTypes {
public static final int HUMOR = 0;
public static final int ACTION = 1;
//...
}

class Medium {
 private int category;
 private int type;

public Medium(int category, int type, String name, ...) {
this.category = category;
//.....
}

public int getCategory() {
return category;
}

//.. blablabla
}
```

dann würde ich alle medien noch in einer managerklasse odersowas registrieren:


```
public class MediumManager {
private Vector mediums = new Vector();

public MediumManager() { }

public void registerMedium(Medium m) {
mediums.add(m);
}

public int getRegisteredMediumsByCategory(int cat) {
int mediumCount = 0;
for(int i=0; i< mediums.size(); i++) {
if(((Medium)mediums.elementAt(i)).getCategory() == cat)
mediumCount++; 
}
}
}
```

das war jetz nur schnell hingeschrieben, also keine garantie für richtigkeit..
so würde ich das jedenfalls machen..


----------



## L-ectron-X (27. Apr 2004)

Den Datentyp musst Du in diesem Fall selbst erstellen, da es keine Standard-Datentypen wie Medium oder DVD oder Kategorie gibt.
In diesem Fall musst Du jeweils Klassen schreiben, die von Object abgeleitet sind.
Im Prinzip gehst Du in der objektorientierten Programmierung ran, wie im "wirklichen Leben", denn genau das macht man in der OOP. Man bildet die Realität auf Objekte ab.
Jedes Objekt/Ding in der Welt hat einen Namen und Eigenschaften, die man in der OOP mit Variablen, Methoden und Klassen beschreibt.
Für das Medium in Deinem Beispiel könnte das mal ganz einfach gemacht etwa so aussehen:

```
public class Medium {
   private String name, inhalt;
   private int ort, typ, kategorie;
   private double anzahl, preis;
...
...
...
   //Konstruktor
   public Medium(String einName, int derTyp) {
      name = einName;
      typ = derTyp;
   }
   
   //Methode zum setzen eines Namens
   public void setName(String einName) {
      name = einName;
   }

   //Methode zur Rückgabe des Namens
   public String getName() {
      return name;
   }
...
...
...
}
```
Damit hätte man man eine Klasse Medium von der man Objekte herstellen kann.
Eine DVD ist ein Medium, hat aber andere Eigenschaften als eine Zeitung, die aber auch ein Medium ist.
Es sind also Spezialisierungen von Medium. Daher kann man DVD oder Zeitung auch von Medium ableiten.
Was dann schon wieder ein anderes Kapitel der OOP ist.


----------

