07 Klassenmethoden - Fachbereich Informatik Hochschule Darmstadt

Werbung
7. Klassenmethoden
Einführung in die
Programmierung (fbw)
Sommersemester 2008
Prof. Dr. Bernhard Humm
Hochschule Darmstadt, fbi
1
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 28.5.2008
Übersicht über den Kurs
Einordnung in den gesamten Kurs
1. Einführung
2. Funktionen
3. Variablen
4. Kontrollstrukturen
5. Klassen und Objekte
6. Konstruktoren
7. Klassenmethoden
8. Vererbung
9. Erweiterte Java-Konzepte
2
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 28.5.2008
Agenda
Geheimnisprinzip
Geheimnisprinzip
Klassenmethoden
Geheimnisprinzip (Information Hiding): eines der
wichtigsten Konzepte des Software Engineering
David L. Parnas
Information Hiding (D.L. Parnas, 1972):
– Implementierung komplexer Datenstrukturen soll in einer Klasse (Modul) verborgen werden
– Nutzer erhalten nur eine abstrakte Sicht auf die Daten (abstrakte Datenstrukturen)
– Datenzugriff nur über die Methoden (Encapsulation = Kapselung)
Gekapselte (abstrakte) Klassen besitzen einen Zustand ("Gedächtnis"), der durch Zugriffsmethoden
geändert werden kann
Die Datenkapselung hat folgende Vorteile:
– Gekapselte Klassen sind einfacher nutzbar (reduzierte Komplexität)
– Sie können ohne Auswirkung auf andere Klassen geändert werden
Es bestehen jedoch auch Nachteile:
– Zugriff etwas weniger effizient
– Eingeschränkte Flexibilität des Zugriffs, da nur über Methoden der Klasse auf die Daten zugegriffen
werden kann
4
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 28.5.2008
Nutzer- und Anbieterrollen: Klassen
Nutzer
Deklaration
…
C c;
…
5
Definition (Außensicht)
…
public class C {
…
}
Nutzung
…
c = new C();
…
Anbieter
Entweder
selbst definiert,
Teil der JavaBibliothek oder
von Dritten
Implementierung (Innensicht)
Type1 variable1;
…
ReturnType method1(ArgType1)
…
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 28.5.2008
Nutzer- und Anbieterrollen: Methoden
Nutzer
Anbieter
Deklaration
…
C c;
ReturnType result;
…
Definition (Außensicht)
Signatur
public class C {
public ReturnType m (ParamType1
p1)
Nutzung
…
result = c.m(p1);
…
Implementierung (Innensicht)
{
…
return result;
}
6
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 28.5.2008
Steuerung der Sichtbarkeit:
Modifier
Modifier:
– private: nur innerhalb der Klasse sichtbar
– public: überall sichtbar
class Fraction {
private int z; // Zähler
private int n; // Nenner
– protected, package scope: Mischformen
(später)
public int getZ () {
return this.z;
}
Gilt für Variablen und Methoden
Variablen sollten in der Regel private
deklariert werden. Soll lesender und / oder
schreibender Zugriff explizit erlaubt werden,
dann über Getter / Setter-Methoden
public int getN () {
return this.n;
}
…
}
7
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 28.5.2008
Sichtbarkeit von Variablen und Methoden
Rot = Definition
public class Loan
{
private Person borrower;
private Book borrowedBook;
public class Person
{
// instance variables
private String name;
String address;
….
borrower = new Person();
…
// instance methods
public String toString()
{
String result;
// instance methods
result = name;
…
return result;
public String toString()
{
String result;
...
result = borrower.getName();
...
}
}
Private Sichtbarkeit:
Zwischen { und }
}
…
public String getName()
{
return name;
}
Lokale Variablen von
Methoden sind
automatisch privat
}
Blau = Nutzung
8
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 28.5.2008
Agenda
Geheimnisprinzip
Klassenmethoden
Klassenmethoden
Klassenvariablen und -methoden
Bisher betrachtete Variablen und Methoden
beziehen sich auf die einzelne Objekte class Customer {
Instanzvariablen / -methoden
// class variables
public static int numberOfCustomers;
Variablen, Konstanten und Methoden, die
sich auf alle Objekte beziehen Klassenvariablen / Methoden
// instance variables
private String name;
…
Typische Beispiele: Instanziierung, Suche
// class methods
public static Customer makeCustomer
(String name, …) {…}
public static Customer findCustomer
(int number) {…}
Keyword in Java: static
Häufig werden statt dessen auch
Managerklassen verwendet
// instance methods
public void changeAddress
(String newAdress) {…}
}
10
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 28.5.2008
Klassen, Objekte, Klassenvariablen, Klassenmethoden,
Instanzvariablen, Instanzmethoden – Was ist was?
Kunde
nimm Kredit auf
Kundennummer
Konto
suche Kunden
drucke Kontoauszug
Kontoauszugsdrucker
Anzahl der Kunden
führe Zahlungslauf durch
hebe Geld ab
Zahlungslauf
Mehrwertsteuersatz
rechne in Fremdwährung um
Betrag
Währung
zahle Geld ein
Bank
lege neuen Kunden an
11
Kredit
IP-Adresse
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 28.5.2008
Herunterladen