View
104
Download
1
Category
Preview:
Citation preview
Stefan Winter · Uni PassauMatthias Spohrer · TU München
P. Brichzin u. H.D. Jäger – LMU München
9. Präsenzveranstaltung 07.04.2003 – TU Stammgelände Innenstadt
Nachqualifizierungskurs für Informatiklehrkräfte
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 2
Inhaltsübersicht
Infos Klassen und Objekte, Methoden Generalisierung, Spezialisierung und Vererbung Abstrakte Klassen Nachbereitung mit Übung: Sortieralgorithmen Klausurbesprechung
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 3
Infos - Präsenztage
Donnerstag, 13.03.03
14-18 Uhr HS 0670
Funktionale Modellierung
Dienstag, 08.04.03 14-18 Uhr HS 1601
Funkt. Mod. & OOM
Mittwoch, 07.05.03 14-18 Uhr HS 1601
OOM
Montag, 02.06.03* 15(?)-17 Uhr*
HS 0220
Auf Wunsch, zur Klausur
Donnerstag, 26.06.03
10-12 Uhr HS 0220
Klausur
*ob und ab wann dieser Präsenztag stattfinden soll, werden wir jetzt gemeinsam ausmachen. •Außerdem eine Abschlussveranstaltung im Juli.
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 4
Beispielberechnung Staatsexamen
Klausur: Theoretische Info 5
Klausur: DB, Betriebssysteme etc. 4
mdl. Prüfung: Theoretische Info 3
mdl. Prüfung: Spezialgebiet 2
mdl. Prüfung: Fachdidaktik 2
Schnitt 1. Staatsexamen:Schnitt 1. Staatsexamen: 3,713,71
Bitte nicht verzweifeln oder aufhören! Durchhalten!!!!
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 5
Sonstiges / Infos / Aussprache
Fragen zur Klausur?
Fragen zum aktuellen Stoff?
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 6
Kleine Aufwärmübung
Staatsexamen Herbst 1991, Aufgabe 4 Staatsexamen Herbst 1991, Aufgabe 4
Durch die Funktionsvereinbarung
function f(x,y,z:nat)nat:
if x=y then z else f(x,y+1,(y+1)*z) endif
ist eine Funktion f gegeben.
1. a) Bestimmen Sie den Wert von f(4,0,2)!
2. b) Beweisen Sie: f(x,y,z) terminiert für alle x,y,z oo mit xy!
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 7
Kleine Aufwärmübung
Staatsexamen Herbst 1991, Aufgabe 4 Staatsexamen Herbst 1991, Aufgabe 4
a) (4,0,2) (4,1,2) (4,2,4) (4,3,12) (4,4,48) 48
b) Lässt sich verbal auch sehr anschaulich begründen. y wird in
jedem Funktionsaufruf um 1 erhöht während x gleich bleibt. Ist
also zu Beginn x
f f f f f
3
y, so ist nach Schritten x = y und
der Algorithmus terminiert.
Sei : ( , , ) |
: , ( , , ) ist Abstiegsfunktion für f
offensichtlich: ( , , ) 0
( , , ) 0 terminiert
( , 1, ( 1) )
x y
M x y z x y
h M x y z x y
h x y z
h x y z x y f
h x y y z
( 1) 1 ( , , )x y x y x y h x y z
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 8
Rückblick Berechengenauigkeit
Blatt 6a:
Programmierung einer Potenzfunktion potenz: float x nat float
Testen des Programms: 0.2^3 = 0.008
Es wurde NICHT falsch programmiert!! Warum erhält man dennoch diese Ausgabe?(Als Antwort bitte neue Eingabewerte, bei denen die Berechnung nach unseren Vorstellungen funktioniert!)
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 9
Rückblick BerechengenauigkeitBlatt 6a: Programmierung einer Potenzfunktion potenz: float x nat float
Testen des Programms: 0.25^3 = 0.015625
Computer rechnet im Dualsystem 0.2 wird in einen Dualbruch umgewandelt: ein periodischer Dualbruch, der irgendwo abgeschnitten wird Ungenauigkeit
0.25 = ¼ ist ein endlicher Dualbruch keine Ungenauigkeit
Abhilfe bei den Ungenauigkeiten: Runden nach einer gewissen Stellenzahl (so macht es der Taschenrechner)
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 10
OOM und OOP
Stuhl von Frau Müller
Stuhl von Herrn Huber
Frau Müller
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 11
Klassen
Klasse ist „Bauplan“ zur Erzeugung von gleichartigen Objekten
Gleichartige Objekte verfügen über
• dieselben Methoden (= gleiches Verhalten) und
• und über dieselben Attribute, die aber unterschiedliche Werte haben (können) (= unterschiedlicher Zustand)
Stuhl
Methode1
Methode2
...
Attribut1
Attribut2
...
Klassenname
Darstellung mit UML „Bestandteile“ einer Klasse:
• Attribute (=Eigenschaften)
• Methoden: Operationen, z.B. der Umgang mit den eigenen Attributen
• Zusicherung (=Constraints): bestimmte Bedingungen, die immer erfüllt sein müssen
• Konstruktor(en) zur Erzeugung von Objekten ( spezielle Methode)
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 12
Objekte
Objekt ist eine zur Ausführungszeit vorhandene Instanz (Exemplar), das sich entsprechend dem Bauplan ihrer Klasse verhält
Klasse Objekt{instance of}
Stuhl StuhlMueller{instance of}
Objekte werden mit ihrem „Konstruktor“ erzeugt, dieser bedient sich dem Bauplan der zugehörigen Klasse - dazu später jedoch mehr.
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 13
Kreis+radius {radius>0}+mittelpunkt: Point = (10, 10)+anzeigen()+entfernen()+setPosition(pos:Point)+setRadius(neuerRadius)
Klassen mit Details
Zusicherung
Initialwert
Attribut-Typ
Parameter(Name: Typ = Initialwert)
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 14
Klassen mit Details
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 15
Methoden
Zweck einer Methode:
• aus imperativer Programmiersicht:
• aus objektorientierter Programmiersicht:
Unterprogramm, Funktion, Prozedur
Operation eines Objekts (oder einer Klasse)
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 16
Aufruf und Definition von Objektmethoden
Definition:
Aufruf: im Normalfall durch Objekte
beispielmethode (3, “abc“)
in der Klasse, dessen Instanz beispielobjekt ist
beispielmethode (int para1, String para2) { ... }
void
int
...
Rückgabetyp
Angabe notwendig, falls Methode eines fremden Objekts
beispielobjekt.
Parameter-übergabe
a =
b = c +
methode( )
{ ... return ...}
public
private
...
Sichtbarkeit
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 17
Aufruf und Definition von Klassenmethoden
Definition:
Aufruf: durch Klasse
beispielmethode (3, “abc“)
in der Klasse
beispielmethode (int para1, String para2) { ... }
Angabe notwendig, falls Methode einer fremden Klasse
Beispielklasse.
static
Aufruf einer Klassenmethode ohne vorherige Objekterzeugung möglich! Verwendung bei Klassen, die nur Methoden beinhalten, aber „keine Daten“ Beispiel: Klasse, die lediglich Rechenoperationen für Brüche zur Verfügung stellt.
Sichtbarkeitsmodifikatoren und Behandlung der Rückgabewerte wie bei Objektmethoden
Typisches Beispiel einer Klassenmethode: main
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 18
Bearbeiten Sie die Aufgabe 1!
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 19
Objektorientierte Softwareentwicklung
Geschichte der Softwareentwicklung ist eine kontinuierliche Steigerung der Geschichte der Softwareentwicklung ist eine kontinuierliche Steigerung der Abstraktionen – von Bitmuster über Makrobefehle, Prozeduren, abstrakte Abstraktionen – von Bitmuster über Makrobefehle, Prozeduren, abstrakte Datentypen zu ObjektenDatentypen zu ObjektenObjektorientierung als neue DenkweiseObjektorientierung als neue Denkweise
Softwareentwicklung: Softwareentwicklung:
KommunikationExperten im Software-entwicklungsteam
Experten im Anwendungsbereich
Softwareentwicklung ist NICHT in erster Linie eine technische Aufgabe, sie ist heute ein komplexer sozialer Prozess
P. Brichzin
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 20
Objektorientierte Softwareentwicklung
Modellierungstechniken mit einer einheitlichen Notation und SemantikModellierungstechniken mit einer einheitlichen Notation und Semantik Unified Modelling Language zur ObjektOrientiertenProgrammierung Unified Modelling Language zur ObjektOrientiertenProgrammierung
P. Brichzin
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 21
Objektorientierte Softwareentwicklung
Unterschiede zum alten Vorgehen
1. ganzheitliche Arbeitsgegenstände statt Trennung von Daten und Operationen wird nun durch das Klassenkonzept mit Einheiten aus Daten und Operationen gearbeitet die Modellierung wird den Strukturen, Zusammenhängen und Abhängigkeiten der realen Welt besser gerecht
2. bessere AbstraktionsmöglichkeitDie Modellierung liegt mehr im Problembereich, weniger im Lösungsbereich (z.B. Struktogramme sind schon sehr weit unten im Lösungsbereich)
P. Brichzin
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 22
Objektorientierte Softwareentwicklung
Beispiel: bessere Abstraktionsmöglichkeiten durch OOM
Teil/Ganzes-Beziehung (Hat-eine-Beziehung)
Ein Objekt besteht aus Teilen z.B. ein Fahrrad aus Rahmen, Hinter- Vorderrad, Gangschaltung, Bremsen,...
Man sagt: „Schau, dort fährt ein Fahrrad!“ anstatt „Schau, dort fahren Rahmen, Hinter- Vorderrad, Gangschaltung, Bremsen,...“
in imperativen Programmiersprachen gibt es dafür Strukturen: Rekords
Oberbegriff-Beziehung (Ist-eine-Beziehung)
Die Oberbegriff-Beziehung fasst mehrere Arten oder Varianten von Objekten unter einem Begriff zusammen z.B. ein Mountainbike ist ein Fahrrad. Ein Fahrrad ist ein nichtmotorisiertes Fahrzeug, ...
Man sagt: „Schau, dort fahren drei Fahrräder!“ anstatt „Schau, dort fahren ein Mountainbike, ein Trekkingrad und ein Tandem!“
Dieses Abstraktionsmittel wird in den nicht objektorientierten Sprachen NICHT unterstützt
P. Brichzin
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 23
Objektorientierte Softwareentwicklung
Unterschiede zum alten Vorgehen
3. methodische Durchgängigkeit in allen Phasen wird mit denselben Konzepten, der selben Modellierungstechnik gearbeitet (Klassen, Objekte, Beziehungen, ...)
P. Brichzin
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 24
Objektorientierte Softwareentwicklung
Beispiel methodische Durchgängigkeit
EntwicklerIn: „Was ist Euch wichtig?“AnwenderIn: „Der Kunde.“EntwicklerIn: „Was ist denn ein Kunde, welche Merkmale sind für Euch relevant?“ AnwenderIn: „Der Kunde hat einen Namen, eine Anschrift und eine Bonität, die wir
überprüfen.“
Class Kunde{
String name;Anschrift anschrift;Bonitaet int;
public int bonitaetPruefen(){...}
}
Kunde+name+anschrift+bonitaet+bonitaetPruefen()()
P. Brichzin
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 25
Objektorientierte Softwareentwicklung
Unterschiede zum alten Vorgehen
4. evolutionäre EntwicklungEin komplexes System entsteht nicht auf einmal. Alle komplexen Systeme in der Natur haben sich schrittweise entwickelt. Jeder Zwischenschritt musste sich erst einmal Stabilisieren und seine Funktions- und Lebensfähigkeit beweisen (z.B. Evolution Mensch) objektorientierte Softwareentwicklung kann das Prinzip der Evolution auf die Softwareentwicklung übertragen
P. Brichzin
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 26
Bearbeiten Sie die Aufgabe 2!
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 27
Generalisierung/Spezialisierung
Personal
Beamte Angestellte Arbeiter
Lehrkräfte
GENERALISIERUNG
SPEZIALISIERUNG
Eine Sub- bzw. Unterklasse hat alle Attribute und Methoden der Super- bzw. Oberklasse (Prinzip der Vererbung).
Sie besitzt aber in der Regel auch spezifische Attribute und Methoden.
Methoden, die in einer Oberklasse implementiert sind, können in einer Unterklasse überschrieben werden.
Eine Unterklasse kann auch von mehreren Oberklassen erben. Man spricht von MehrfachvererbungDiese Art der Vererbung ist problematisch, z.B. wenn mehrere der Oberklassen eine Methode mit dem gleichen Namen haben. Sie wird deshalb von vielen objektorientierten Programmiersprachen – darunter Java – nicht unterstützt.
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 28
Generalisierung/Spezialisierung
Vorteile dieses Modellierungskonstrukts• Reduzierung des Programmcodes, da „allgemeinere“ Methoden nur in der
Oberklasse definiert werden müssen.• Attribute mit dem Datentyp einer Oberklasse können auch mit Objekten von
Unterklassen belegt werden
Das Generalisierungsmodell ist uns bereits aus der DB-Modellierung bekannt, konnte dort aber bei der Implementierung der Datenbank nicht umgesetzt werden.
Modellierung in UMLOberklasse
Unterklasse1 Unterklasse2
Implementierung in JavaÄnderung lediglich in der Klassendeklaration der Unterklasse(n)
class <Unterklasse> extends <Oberklasse> { ... }
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 29
Abstrakte Klassen I
Generalisierungshierarchie: Subklassen haben gemeinsame MethodenOft ein Problem: Man weiß nicht, wie die Implementierung dieser Methoden in einer möglichen Unterklasse ausschaut.Lösung: Definition der Oberklasse als abstrakte Klasse
Eine abstrakte Klasse enthält mindestens eine nicht implementierte Methode. (= abstrakte Methode). Diese muss in allen Unterklassen spezifisch implementiert werden.
Beispiel: Oberklasse FigurEs gibt viele denkbare Unterklassen (Kreis, Rechteck, ...), von denen vielleicht
einige erst zu einem späteren Zeitpunkt implementiert werden.Alle Unterklassen sollen z.B. eine Methode berechne_umfang besitzenberechne_umfang wird als abstrakte Methode definiert
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 30
Kreis+radius {radius>0}+setRadius(neuerRadius)
Rechteck+a {a>0}+b {b>0}+setA(neuA)+setB(neuB)
GeomFigur+x: Integer+y: Integer = (10, 10)+sichtbar: Boolean+anzeigen()+entfernen()+setPosition(neuX:Integer,neuY:Integer)
Abstrakte Methoden werden in der Oberklasse deklariert,
Die Methoden anzeigen() und entfernen sind abhängig von der Form der geometrischen Figur
aber erst als konkrete Methoden in der Unterklasse spezifiziert
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 31
abstrakte Klassen
Es macht keinen Sinn von der Klasse GeomFigur komkrete Exemplare (Objekte) zu erzeugen sie wird als abstrakte Klasse festgelegt: Von der Klasse (n)
abstract class GeomFigur { ... }
Kreis+radius {radius>0}+setRadius(neuerRadius)
Rechteck+a {a>0}+b {b>0}+setA(neuA)+setB(neuB)
GeomFigur+x: Integer+y: Integer = (10, 10)+sichtbar: Boolean+anzeigen()+entfernen()+setPosition(neuX:Integer,neuY:Integer)
Klassenname kursiv
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 32
OOM und OOP
bisher verwendet
public static void main (String [] args) { ... }
Sichtbarkeitsmodifikator:
private – kann nur von Objekten der eigenen Klasse aufgerufen werden
Datenkapselung / Information Hiding
Methoden werden in der Regel von Instanzen „benutzt“. static macht eine Methode zur Klassenmethode sie ist ohne Instanz aufrufbar
Kein Rückgabewert
Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München
Seite 33
Fragen
?
Recommended