Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009
Inhaltsverzeichnis klasse 1 klasse Klassendefinition Klassendeklaration: Klassen-Anatomie 2 3
Das Prinzip von Klassen in Java Klassendefinition Klassendeklaration: Klassen-Anatomie Eine Kuh macht Muh, viele Kühe machen Mühe!
Das Prinzip von Klassen in Java Klassendefinition Klassendeklaration: Klassen-Anatomie Eine Kuh macht Muh, viele Kühe machen Mühe!
was ist eine Klasse? klasse Klassendefinition Klassendeklaration: Klassen-Anatomie was ist eine Java-Klasse? Eine Klasse ist ein Bauplan für eine Menge gleichartiger. Dieser Bauplan legt die Eigenschaften und das Verhalten der fest. Eine Java Klasse bildet ein Teil der Realität ab! Klasse Student (Eigenschaften sind z.b. matrikelnr, Name, FAch, Adresse..) Klasse Personalausweis (Eigenschaften sind z.b. ID, Augenfarbe, Größe, Adresse..)
Klassendefinition Klassendeklaration: Klassen-Anatomie Die Anatomie einer Java-Klasse: Klassendeklaration Teil Syntax Bedeutung package Kommando package ke04; gruppiert zusammengehörige Klassen import Kommando import java.util.*; stellt vordefinierte Klassen zur Verfügung Klassen Kommentare /**...*/ beschreibt die Aufgaben der Klasse Klassendefinition public/protected/private class klassenname{..} Klassenname und Zugriff Konstanten final Datentyp VARIABLE nehmen konstante Werte auf, die nicht mehr änderbar z.b. PI Klassenvariablen static Datentyp variable; Variable existiert unabhängig von n Feldvariablen Datentyp variable speichern die Daten (igenschaften) klassenname(parameterlise){anweisungen;} rzeugungsmuster Methoden Rückgabewert methodename(parameterliste){..} Führen Berechnungen und Operationen (Objektverhalten) innere Klassen innerklasse{..} Ist eine Helpklasse innerhalb einer anderen Klasse Tabelle: Optionale Teile einer Javaklasse
Beispiel für eine Klassenstruktur Klassendefinition Klassendeklaration: Klassen-Anatomie
Goldene Regeln für Klassendefinition Klassendefinition Klassendeklaration: Klassen-Anatomie 1 Deklariere die Feldvariablen als private (Kapselungsprinzip) 2 Initializiere immer die Feldvariablen mit Standardwerten. 3 Benutzte nicht zu viele einfachen Datentypen in einer Klasse 4 Benutzte Standardformat für Klassendeklaration 5 Ersetzte eine komplexe Klasse durch n einfache Klassen! 6 Gib die Klasse, Methoden und Variablen aussagekräftige zweckspiegelende Namen
Klassendefinition Klassendeklaration: Klassen-Anatomie Programmieraufgaben für Klassendefinition Aufgabe 4.1. Klasse Student 1 Programmiere eine Klasse, die Student heißt und wichtige Merkmale/Eigenschaften eines Studenten festlegt. TIPP: welche Eigenschaften stehen in Ihrem Studentenausweis? Aufgabe 4.2. Klasse Mitarbeiter 1 Programmiere eine Klasse, die Mitarbeiter heißt und die wichtigen Merkmale/Eigenschaften eines Mitarbeiters in einer Firma festlegt.
Definiton von n Defintion von n Ein Objekt ist ein eindeutiges Instanz seiner Klasse und verfügt daher über alle ihrer Eigenschaften und Methoden.
Definiton von n Defintion von n Ein Objekt ist ein eindeutiges Instanz seiner Klasse und verfügt daher über alle ihrer Eigenschaften und Methoden.
Goldene Regeln für 1 Ein Java-Objekt hat 1 einen aktuellen Zustand: Wertbelegungen der Feldvariablen 2 Verhalten: Methoden, die es ausführen kann (seine Methoden) 3 eine Identität:jedes Objekt ist einmalig und hat eindeutige Speicheradressen. 2 rzeugung: Operator new + Konstrukturaufruf 3 Zugriff auf Feldvariablen innerhalb der Klasse objektname.feldvariable aber lieber über Methoden. 4 Zugriff auf Feldvariablen außerhalb der Klasse Nur über Methoden (Falls die Feldvariablen nicht als public deklariert sind!)
klasse oder Informationsverbergen ist 1 von Daten und Verhalten in einem Objekt 2 Verbergen der Implementationsdetails vom Objekt-Benutzer
klasse oder Informationsverbergen ist 1 von Daten und Verhalten in einem Objekt 2 Verbergen der Implementationsdetails vom Objekt-Benutzer
Goldene Regeln für das Kapselungsprinzip 1 Kapselungsprinzip wird erreicht durch Verbieten des direkten Zugriffs auf die Daten (private Feldvariablen) Erlauben des indirekten Zugriffs auf die Daten über Methoden. 2 Vorteile des Kapselungsprinzipes beliebige Änderungen der Daten ohne dass der Benutzer davon betroffen wird. 3 Alle Java Klassen sind nach dem Kapselungsprinzip implementiert.
erzeugen: Ein Konstruktur ist ein Erzeugungsmuster für die KlassenName(optionale Parameter Liste){ feldvariable_1 = parameter 1; feldvariable_n = parameter n; } Beispiel Konstruktur für KlassenDemo KlassenDemo(String meinname, int meinid){ name = meinname; id = meinid; }
Goldene Regeln für I 1 Ein Konstruktur muss den gleichen Namen wie seine Klasse haben sowie eine optionale Parameterliste in runden Klammern und ein Bock von optionalen Anweisungen. 2 Ein Default-Konstruktur: klassenname(){} ist ein Konstruktur mit leerer Parameterliste und wird von Java für jede Klasse implizit zur Verfügung gestellt. 3 Der Default-Konstruktur: klassenname(){} steht nicht mehr implizit zur Verfügung und muss explizit hinzugefügt werden, wenn die Klasse einen eigenen Konstruktur definiert. 4 Erzeugung eines Objekt ein Objekt wird durch den Aufruf eines bestimmten Konstruktur seiner Klasse mit new Klassenname(Wertbelegung par 1,..Wertbelegung par n) seiner Parameterliste erzeugt.
Goldene Regeln für II 5 (Optionale Parameterliste) kann Parameter für alle Feldvariablen, Teil davon oder für keine enthalten. Die Anzahl 6 Die Anzahl der lokalen Variablen in einer Parameterliste kann auch wegen zusätzlichen Hilfsvariablen mehr als die Anzahl der Feldvariablen sein. 7 Mehrere können in einer Klasse vorkommen. Sie müssen unterschiedliche Parameterlist haben. Auch zwei Parameterliste mit den gleichen Typen aber verschiedene Reihenfolge sind unterschiedlich. 8 Wertbelegungen der Parameter muss in die gleiche Reihenfolge der Parameterliste sein.
Erzeugung von n: Was geschieht im Hintergrund?
Programmieraufgaben für Aufgabe 4.3. Programmieren Sie für die Klasse Student 6 ohne den Standardkonstruktur zu verberen. 1 Konstruktur I: name 2 Konstruktur II: name, matrikel-nr 3 Konstruktur III: name, matrikel-nr und Studienfach 4 Konstruktur IV: name, matrikel-nr, Studienfach und Geburtsort 5 Konstruktur V: name, matrikel-nr, Studienfach, Geburtsort und Geburtsdatum Erzeugen Sie mit Hilfe der 6 jeweils ein konkretes Objekt und drücke es aus! TIPP I und die goldenen Regeln ansehen!
this Schlüsselwort klasse this bezieht sich (refernziert) auf das aktuelle Objekt this vermeidet das Verbergen von Feldvariablen durch lokale Variablen gleicher Namen. this.variable = variable; lokale Variablen sind die Hilfsvariablen innerhalb und Methoden Parameter this ermöglicht den Aufruf von einem Konstruktur innerhalb eines anderen. Der Aufruf mit this muss als erste Anweisung sein.
Benutzung von this klasse
Programmieraufgaben für das Benutzen von this Aufgabe 4.4. mit this Programmieren Sie für die Klasse Student 6 ohne den Standardkonstruktur zu verberen und unter Benutzung von this. 1 Konstruktur I: name 2 Konstruktur II: name, matrikel-nr 3 Konstruktur III: name, matrikel-nr und Studienfach 4 Konstruktur IV: name, matrikel-nr, Studienfach und Geburtsort 5 Konstruktur V: name, matrikel-nr, Studienfach, Geburtsort und Geburtsdatum Erzeugen Sie mit Hilfe der 6 jeweils ein konkretes Objekt und drücke es aus! TIPP Folien vom dem Schlüsselwort this ansehen!
Was haben wir gelernt? In dieser Einheit haben wir folgende Konzepte gelernt: 1 Das Prinzip von Klassen 2 Das Prinzip von n 3 4 Erzeugung von n 5
Was kommst in nächster Einheit? In nächster Einheit werden wir folgende Konzepte lernen: 1 Methoden in Java 2 Methoden mit void 3 Methoden mit return 4 Static Methoden und Variablen 5 ausdrücken, vergleichen