pkj 2005/1 stefan dissmann zusammenfassung bisher bekannt: einfache typen (z.b. int, char, boolean)...

39
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren für diese Typen Anweisungen Bedingte Anweisungen: if und if-else Schleifen: while und for Methoden (auch rekursiv)

Upload: beate-anspach

Post on 05-Apr-2015

104 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/1Stefan Dissmann

Zusammenfassung

Bisher bekannt:

• Einfache Typen (z.B. int, char, boolean)

• Zusammengesetzte Typen (Felder, auch String)

• Operatoren für diese Typen

• Anweisungen

• Bedingte Anweisungen: if und if-else

• Schleifen: while und for

• Methoden (auch rekursiv)

Page 2: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/2Stefan Dissmann

Zusammenfassung

Mit diesen Hilfsmitteln möglich:

• Lösen von algorithmischen Fragestellungen• Bearbeitung von Problemen mit

fester Anzahlsequentiell angeordneter Elementeeines Typs

Nicht möglich:

z.B. komfortabler Umgang mit den Daten aller

Studierendeneiner Universität

Page 3: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/3Stefan Dissmann

Ausblick

Es fehlen noch:

• Möglichkeiten zum Strukturieren größerer Programme

• Umgang mit variabler Zahl von Elementen• Umgang mit nicht-sequentiellen Strukturen• Umgang mit Strukturen aus heterogenen Typen

In JAVA gelöst durch

Klassen und Objekte

Page 4: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/4Stefan Dissmann

Klassen und Objekte

In der „physikalischen“ Umwelt:

abgeschlossene Einheiten mit vorgegebener

Funktionalität,zum Beispiel:

– Kaffeemühle

– Taschenrechner

– Handy

– Videorekorder

Auffällig: technische Details sind uninteressant

Page 5: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/5Stefan Dissmann

Formalisierung

Kaffeemühle

Page 6: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/6Stefan Dissmann

Kaffeemühle: Funktionen

Formalisierung

Kaffeebohneneinfüllen

Kaffeepulverentnehmen

kurbeln = mahlen

Page 7: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/7Stefan Dissmann

Kaffeemühle: Zustand

Formalisierung

Vorrat Bohnen

Vorrat Pulver

Page 8: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/8Stefan Dissmann

Charakterisierung der Kaffeemühle

Die Kaffeemühle unterstützt bestimmte Funktionen zur Nutzung:

• Füllen (mit Kaffeebohnen)• Mahlen (manipuliert den Inhalt)• Entnehmen (von Kaffeepulver)

• Inspektion des Bohnenvorrates• Inspektion des Pulvervorrates

Formalisierung

Page 9: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/9Stefan Dissmann

Formalisierung

Charakterisierung der Kaffeemühle (Fortsetzung)

Die Kaffeemühle besitzt zustandsbestimmende, interne Werte (= Attribute):

• Vorrat an Kaffeebohnen• Vorrat an Kaffeepulver

Page 10: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/10Stefan Dissmann

Charakterisierung der Kaffeemühle (Fortsetzung)

Zwischen der Ausführung der Funktionenund den Attributen (= interner Zustand) besteht Zusammenhang:

• Füllen ist nur möglich, wenn der Vorrat an Kaffeebohnen noch nicht voll ist.

• Mahlen erzeugt nur dann Kaffeepulver, wenn ein Vorrat von Kaffeebohnen noch vorhanden ist.

• Entnehmen ist nur möglich,wenn zuvor gemahlen wurde undnoch nicht alles Pulver entnommen wurde.

Formalisierung

Page 11: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/11Stefan Dissmann

Formalisierung

Charakterisierung der Kaffeemühle (Fortsetzung)

aber: Die technische Realisierungder internen Abläufe bleibt unbekannt!

• Wie funktioniert das Mahlen?• Wie kommen Bohnen zum Mahlwerk?

und: Das Wissen um die technische Realisierung ist für die Benutzung der Kaffeemühle unerheblich!

Page 12: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/12Stefan Dissmann

Weitere Diskussion- Taschenrechner

Taschenrechner ist auch eine abgeschlossene Einheit!

• Funktionen:• Ziffern eingeben• Ziffern anzeigen• Operator wählen• Ziffern eingeben• Ziffern anzeigen • Auswertung anstoßen und

Ergebnis anzeigen

1 2 3

4 5 6

7 8 9

0

+

x

/C =

Page 13: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/13Stefan Dissmann

Taschenrechner

präzisere Beschreibung der internen Abläufe:• Ziffer eingeben und

anzeigen und dabei andere Ziffern verschieben)

• Operator wählen und merken

• Wert eines Operanden aus Ziffernfolge bestimmen und merken

• Auswertung anstoßen und Ergebnis berechnen als Anwenden des Operators auf die beiden Operanden

• Ergebniswert in Ziffernfolge umwandeln und anzeigen

Page 14: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/14Stefan Dissmann

Taschenrechner

Taschenrechner• besitzt Gedächtnis, in dem mindestens

2 Zahlenwerte und 1 Operator abgelegt werden,• manipuliert Gedächtnis nach Druck von Tasten,• nutzt Werte aus Gedächtnis für Berechnungen,• bestimmt Ergebnis aus Gedächtnis,• löscht Gedächtnis.

oder abstrakter:• besitzt definierte extern verwendbare Funktionen

(= Eingabe über Tasten),• besitzt einen durch Attribute gegebenen internen Zustand

(= Gedächtnis),• verwendet nur intern bekannte Operationen

(= Ziffernfolge zu Zahl)

Page 15: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/15Stefan Dissmann

Erkenntnisse

Prinzipien bei der Gestaltung von abgeschlossenen Einheiten:

• Kapselung• Jede Einheit hat Grenzen.

• Lokalität• Funktionen und Daten der Einheit sind zusammengefasst.

• konzeptionelle Vollständigkeit• Jede Einheit kann ihre Aufgaben erledigen.

• Geheimhaltung von „Interna“• Jede Einheit verbirgt Daten und Handlungsumsetzung.

• Autonomie• Jede Einheit entscheidet selbstständig.

Page 16: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/16Stefan Dissmann

Beispiel: BibliothekAnwendung der Prinzipien

Leihbibliothek auf Vertrauensbasis

BücherbestandZugang

Buchausgabe und -rückgabe durch Selbstbedienung

Page 17: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/17Stefan Dissmann

Beispiel: Bibliothek

Leihbibliothek mit Kontrolle

BücherbestandZugang

- Buchausgabe und -rückgabe werden überwacht

- Organisation des Buchbestandes ist unsicher

Aufsicht

Page 18: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/18Stefan Dissmann

Beispiel: Bibliothek

Leihbibliothek mit Service

BücherbestandZugang

- Kontrolle der Organisation des Bestandes

- universelle Aufsicht muss leistungsfähig sein

Aufsicht

Page 19: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/19Stefan Dissmann

Beispiel: Bibliothek

Leihbibliothek mit spezialisiertem Service

Bücherbestand

Zugang

- spezialisierte Bibliothekare erfüllen einfache Teilaufgaben

- Organisation des Buchbestandes ist ohne Bedeutung

Page 20: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/20Stefan Dissmann

Klassen und Objekte

Objekt ist abgeschlossene Einheit im JAVA-Programm

Klasse istKonstruktionsbeschreibung für Objekte

Folgerungen:• Klasse wird benötigt, um Objekt zu erzeugen.• Aus einer Klasse können viele Objekte erzeugt werden.

Page 21: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/21Stefan Dissmann

Beispiel – Klasse Studierende

Folgende Daten von jedem Studierenden sollen verwaltet werden:

• Vorname• Name• Geburtsdatum• Matrikelnummer• Studiengang• Studienbeginn• Semesterzahl

Page 22: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/22Stefan Dissmann

Beispiel – Klasse Studierende

Folgende Daten von jedem Studierenden sollen verwaltet werden:

• Vorname Text• Name Text• Geburtsdatum Datum• Matrikelnummer Zahl• Studiengang Text• Studienbeginn Datum• Semesterzahl Zahl

Page 23: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/23Stefan Dissmann

Klasse

public class Studierende {

private String name, vorname, studiengang;

private int matNr, semester;

private ??? geburt, beginn;

}

Page 24: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/24Stefan Dissmann

Klasse

public class Studierende {

private String name, vorname, studiengang;

private int matNr, semester;

private ??? geburt, beginn;

}

bekannt

Page 25: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/25Stefan Dissmann

Klasse

public class Studierende {

private String name, vorname, studiengang;

private int matNr, semester;

private ??? geburt, beginn;

}

neu

Page 26: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/26Stefan Dissmann

Klasse

public class Studierende {

private String name, vorname, studiengang;

private int matNr, semester;

private ??? geburt, beginn;

}

neu

Geheimnisprinzip Attribut

Page 27: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/27Stefan Dissmann

Klasse

public class Studierende {

private String name, vorname, studiengang;

private int matNr, semester;

private ??? geburt, beginn;

}

unklar

Page 28: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/28Stefan Dissmann

Klasse

public class Studierende {

private String name, vorname, studiengang;

private int matNr, semester;

private Datum geburt, beginn;

}

public class Datum {

private int tag, monat, jahr;

}

Page 29: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/29Stefan Dissmann

Attribut

private String name, vorname, studiengang;

Attribut• ist „Variable “ auf Ebene einer Klasse• steht in der ganzen Klasse zur Verfügung• wird ähnlich vereinbart wie eine Variable in Methode• hat eine Angabe zu Zugriffsrecht (hier: private)

private• verbirgt Attribut innerhalb eines Objektes,• so dass kein Zugriff von Objekten anderer Klassen aus möglich

ist.• Objekte der Klasse Studierende sind völlig abgeschottet!

Page 30: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/30Stefan Dissmann

Methode

Lösung:

• Hinzufügen von Methoden, die auf Attribute zugreifen.• Methoden müssen von außen zugreifbar sein.

Analogie:Tasten des Taschenrechners oder Videorekorders

Page 31: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/31Stefan Dissmann

Klasse

public class Studierende {

private String name, vorname, studiengang;

private int matNr, semester;

private Datum geburt, beginn;

public void setzeName(String n) {

name = n;

}

public String gibName() {

return name;

}

}

Page 32: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/32Stefan Dissmann

Klasse

public void setzeName(String n) {

name = n;

}

public String gibName() {

return name;

}

• Methoden nutzen Attribut name lesend und schreibend.• Vereinbarung der Methoden ohne static.• Implementierung der Methoden wie bekannt.

Page 33: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/33Stefan Dissmann

Nutzung von Klassen

Fragen:

Wie werden Klassen genutzt?Wie werden Objekte erzeugt?Wie werden Objekte genutzt?Wie werden Methoden angesprochen?

Page 34: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/34Stefan Dissmann

Nutzung von Klassen

public class TestStud {

public static void main(String[] args) {

Studierende stud;

}

}

• Vereinbart nur eine Referenz, die auf Objekte der Klasse Studierende verweisen kann.

• Dadurch ist noch kein Objekt erzeugt.

Page 35: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/35Stefan Dissmann

Nutzung von Klassen

public class TestStud {

public static void main(String[] args) {

Studierende stud;

}

}

• Vereinbart nur eine Referenz, die auf Objekte der Klasse Studierende verweisen kann.

• Dadurch ist noch kein Objekt erzeugt.

Page 36: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/36Stefan Dissmann

Nutzung von Klassen

public class TestStud {

public static void main(String[] args) {

Studierende stud;

stud = new Studierende(); }

}

• Es wird ein neues Objekt der Klasse Studierende erzeugt.• Die Referenz stud verweist auf diese Objekt.•() ist notwendig!

Page 37: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/37Stefan Dissmann

Nutzung von Klassen

public class TestStud {

public static void main(String[] args) {

Studierende stud;

stud = new Studierende(); stud.setzeName("Musterfrau");

}

}

•setzeName des Objekts, auf das stud verweist, wird aufgerufen!

•"Musterfrau" wird als Parameter übergeben.• Folge:

Das Attribut name des Objekts wird auf "Musterfrau" gesetzt.

Page 38: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/38Stefan Dissmann

Nutzung von Klassen

public class TestStud {

public static void main(String[] args) {

Studierende stud;

stud = new Studierende(); stud.setzeName("Musterfrau");

}

}

• Zugriff über .-Notation•x.y heißt (in JAVA) immer:

Nimm das Objekt, auf das x verweist,und von diesem Objekt (die Methode) y.

Page 39: PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren

PKJ 2005/39Stefan Dissmann

Nutzung von Klassen

public class TestStud {

public static void main(String[] args) {

Studierende stud;

stud = new Studierende(); stud.setzeName("Musterfrau"); System.out.println("Name:

"+stud.gibName());

}

}

•gibName des Objekts, auf das stud verweist, wird aufgerufen!

•gibName liefert den Wert des Attributs name!