Einführung in die Programmierung (fbw) 7. Klassenmethoden

Werbung
7. Klassenmethoden
Einführung in die
Programmierung (fbw)
Sommersemester 2007
Prof. Dr. Bernhard Humm
Hochschule Darmstadt, fbi
1
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 8.5.2007
Ü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. 8.5.2007
Agenda
Geheimnisprinzip
Geheimnisprinzip
Klassenmethoden
Geheimnisprinzip (Information Hiding): eines der
wichtigsten Konzepte des Software Engineering
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. 8.5.2007
Steuerung der Sichtbarkeit:
Modifier
Modifier:
– private: nur innerhalb der Klasse sichtbar
class Fraction {
– public: überall sichtbar
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;
}
…
}
5
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 8.5.2007
Nutzer- und Anbieterrollen: Klassen
Nutzer
Deklaration
…
C c = null;
…
6
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. 8.5.2007
Nutzer- und Anbieterrollen: Methoden
Nutzer
Anbieter
Deklaration
…
C c;
ReturnType result;
…
Definition (Außensicht)
Signatur
public class C {
ReturnType method1(ArgType1)
Nutzung
…
result = c.m(arg1);
…
Implementierung (Innensicht)
{
…
return result;
}
7
Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die Programmierung (fbw), SS 2007. 8.5.2007
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;
Private Sichtbarkeit:
Zwischen { und }
// instance methods
public String toString()
{
String result;
// instance methods
public String toString()
{
String result;
...
result = borrower.getName();
...
}
result = name;
…
return result;
}
…
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. 8.5.2007
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. 8.5.2007
Herunterladen