Klassen sind das wichtigste Merkmal objektorientierter Programmiersprachen. Unter einer Klasse versteht man in der objektorientierten Programmierung ein abstraktes Modell bzw. einen Bauplan für eine Reihe von ähnlichen Objekten.
Die Klasse dient als Bauplan für die Abbildung von realen Objekten in Objekte in der Programmierung und beschreibt Attribute (Eigenschaften) und Methoden (Verhaltensweisen) der Objekte. Jedes Objekt ist ein Exemplar einer Klasse.
Welche Eigenschaften und welches Verhalten eine Klasse tatsächlich besitzen soll, wird in der Analyse- und Designphase festgelegt. Die Attribute eines Objekts definieren die Zustände und sie werden durch Variablen implementiert. Methoden definieren das Verhalten einer Klasse. Der Anfangszustand einer Klasse wird durch einen Konstruktor definiert. Er legt konkrete Startwerte für Variablen fest. Eine Klasse definiert im Wesentlichen also drei Dinge:
Attribute (was das Objekt hat)
Konstruktor (wie das Objekt zu Beginn beschaffen ist)
Methoden (was das Objekt kann)
Um bereits realisierte Funktionalität wiederzuverwenden, gibt es zwei Möglichkeiten. Eine Klasse kann zusätzliche Eigenschaften und weiteres Verhalten von einer Vater-Klasse erben (http://openbook.galileocomputing.de/javainsel/javainsel_03_001.html#dodtp394ff2f8-9134-4eb3-a6b4-469ed4572a74). Funktionalität kann in Form von bereits realisierten Bibliotheken bzw. Klassen importiert werden.
Die Klasse, Attribute, Methoden und Konstruktoren können mit Kommentaren versehen werden. Sie haben auf den Programmablauf keinen Einfluss. Sie dienen nur der Erläuterung und erleichtern das Verständnis. Klassen stehen nie für sich allein. Sie sind immer in einem Projekt gebündelt.
Bei der Programmierung einer Java-Klasse müssen syntaktische Regeln eingehalten werden, damit der Compiler den Quellcode erfolgreich übersetzten kann.
Sollen Klassen anderer Bibliotheken importiert werden, benötigt man ein Import Statement.
import Bibliothekspfad.Klassenname;
Eine Klasse benötigt einen Kopf. Der Kopf besteht aus folgenden Angaben:
1. Sichtbarkeit
Mögliche Sichtbarkeiten sind public, private oder protected.
2. Schlüsselwort class
3. Name der Klasse. Er muss immer mit einem großen Anfangsbuchstaben beginnen
4. Gegebenenfalls weitere Schlüsselwörter wie implements oder extends
Optional können im Kopf noch die Schlüsselwörter extends für Vererbung und implements für Interfaces aufgeführt werden. Zudem können Klassen mit dem Schlüsselwort import und dem Bibliothekspfad importiert werden.
Eine Klasse benötigt einen Körper. Hier steht der eigentliche Inhalt. Der Körper wird durch ein Klammerpaar gebildet {}.
Betrachten wir ein Beispiel. Die Kommentare wurden blau formatiert.
// Schlüsselwort import leitet den Verweis auf eine Bibliothek ein
import java.util.*;
//public ist ein Schlüsselwort und bestimmt die Sichtbarkeit einer Klasse
//class ist ein Schlüsselwort und macht dem Compiler bekannt, dass nun eine Klasse beginnt.
//Salon ist der Name der Klasse
//extends ist ein Schlüsselwort. Es zeigt an, dass die Klasse Salon von einer anderen Klasse erbt.
//Geschaeftsobjekt ist die Klasse, welche Eigenschaften und Verhalten vererbt.
public class Salon extends Geschaeftsobjekt
{
// Es folgen Deklarationen von Attributen
private String name;
private String salonNummer;
private ArrayList<Mitarbeiter> mitarbeiterListe;
private ArrayList<Kunde> kundenListe;
private ArrayList<Termin> terminListe;
// Dies ist ein Konstruktor
public Salon(String name){
this.name = name;
mitarbeiterListe = new ArrayList<Mitarbeiter>();
kundenListe = new ArrayList<Kunde>();
terminListe = new ArrayList<Termin>();
}
// Dies ist ein Konstruktor
public Salon(int salonNummer, String name){
this.setNummer(salonNummer);
this.name = name;
mitarbeiterListe = new ArrayList<Mitarbeiter>();
kundenListe = new ArrayList<Kunde>();
terminListe = new ArrayList<Termin>();
}
// Es folgen mehrere Methoden
public Mitarbeiter findeMitarbeiter(String nachname){
for(Mitarbeiter aktuellerMitarbeiter:mitarbeiterListe){
if(aktuellerMitarbeiter.equals(nachname)){
return aktuellerMitarbeiter;
}
}
return null;
}
public Kunde findeKunden(String nachname){
for(Kunde aktuellerKunde:kundenListe){
if(aktuellerKunde.equals(nachname)){
return aktuellerKunde;
}
}
return null;
}
public ArrayList<Termin> getTerminListe(){
return terminListe;
}
public void setTerminListe(ArrayList<Termin> terminListe){
this.terminListe = terminListe;
}
public ArrayList<Kunde> getKundenListe(){
return kundenListe;
}
public void setKundenListe(ArrayList<Kunde> kundenListe){
this.kundenListe = kundenListe;
}
public ArrayList<Mitarbeiter> getMitarbeiterListe(){
return mitarbeiterListe;
}
public void setMitarbeiterListe(ArrayList<Mitarbeiter> mitarbeiterListe){
this.mitarbeiterListe = mitarbeiterListe;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String toString(){
return getNummer() + " " + getName();
}
public void setNummer(int salonNummer){
this.salonNummer=salonNummer;
}
}