Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt...

24
Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte

Transcript of Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt...

Page 1: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Matthias Spohrer · TU München

10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt

Nachqualifizierungskurs für Informatiklehrkräfte

Page 2: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 2

Tagesordnung

1. Infos und Neuigkeiten

2. Objektorientierte Modellierung

3. Haskell-Übungen

Page 3: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 3

Infos – Termin im KM

Abbrecherquote• München TU ca. 1-3• München LMU ca. 5-7• Passau 2• Erlangen 2• Würzburg 4• Summe: bei 120 Anfängern ca. 14-19, d.h. mehr als 10%

Lehren...•Algorithmik-Teil wird überarbeitet (insbes. Mathematischer Hintergrund)•Algorithmik-Teil wird ausgedehnt (Faktor 1,5), die anderen Teile entsprechend gekürzt•Fester Tag auch im ersten Jahr (Dienstag), Schreiben vom KM an die Schulen•Auswahlgespräche für Nichtmathematiker

UrsachenEvaluation...

Page 4: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 4

Infos – Kurs 03/05

Anmeldungen (Stand 26.05.)• München 31• Passau 4• Erlangen 7• Würzburg 12• Anmeldeschluss 30.05.... Fraglich, welche Kurse überhaupt zustande kommen...

Lehren...•Algorithmik-Teil wird überarbeitet (insbes. Mathematischer Hintergrund)•Algorithmik-Teil wird ausgedehnt (Faktor 1,5), die anderen Teile entsprechend gekürzt•Fester Tag auch im ersten Jahr (Dienstag), Schreiben vom KM an die Schulen•Auswahlgespräche für Nichtmathematiker

Ursachen???

Page 5: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 5

Infos – Klausur

Termin: Donnerstag, 26.06.03 HS 0220 Arbeitszeit: 10 – 12 UhrHilfsmittel: Duden5 Aufgaben à 20 BE80 BE entsprechen 100% oderoder Auswahlmöglichkeit 4 aus 5Minimalziel: mehr als 32 BE

Stoff•Zustandsmodell, EA•OOP mit JAVA•Rekursion, Entrekursivierung, Terminierungsbeweis•Funktionale Programmierung mit HASKELL•OOM

•Aufgaben möglichst nah an bisherigen SE-Aufgaben, aber auch an neueren (erst kommenden?!) SE-Aufgaben (Modellierung...)

Page 6: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 6

Infos – nächstes Jahr

Stoff:

Page 7: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 7

Tagesordnung

1. Infos und Neuigkeiten

2. Objektorientierte Modellierung

3. Haskell-Übungen

Page 8: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 8

Modellierung – warum und wie?

(z.B.) „Objektorientiertes Programm“

= Menge von Klassen

Menge von Objekten (Instanzen der Klassen), die untereinander

kommunizieren

ModellierungModell ist aber immer Abstraktion/Vereinfachung der Wirklichkeit• Es gibt i.d.R. keine Ausprägung eines Modells, das die Realität

vollständig abbildet• Es gibt aber sicher mehrere hinreichend gute Ausprägungen, die

aber meist auf bestimmte Aspekte des gegebenen Problems abgestimmt sind.

(Komplexes)Problem

Compilierung und Programmstart

Page 9: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 9

Objektorientierte Modellierung – wie und warum?

Zweck der Modellierung Grundkonzepte1. „Finden“ der Klassen

2. Strukturierung der Klassen • Generalisierung ( Hierarchie)• Spezialisierung ( Hierarchie)• Abstrakte Klasse ( Festlegung eines

Grundrepertoires an Operationen, Hierarchie, )

• Interface ( gleiches Verhalten)

3. Herstellen von Beziehungen zwischen den Klassen

• Assoziationen• Delegation• Aggregation• Komposition

Für die Grundkonzepte bieten objektorientierte Sprachen in den meisten Fällen „Standard“- Implementierungen an

Page 10: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 10

Praktisches Vorgehen bei OOM1. Finden der Klassen durch Betrachten des gegebenen Szenarios

• Welche Objekte (=Gegenstände, Konzepte) kommen vor?• Gibt es gleichartige Objekte, deren Bauplan (Eigenschaften und

Operationen) in einem „Bauplan“ ( Klasse) festgelegt werden kann?2. Strukturierung der Klassen

• Gibt es Hierarchiebeziehungen ( Generalisierung, Spezialisierung)• Müssen in Hierarchiebeziehungen zu gegebener Zeit noch Klassen

eingebaut werden, deren genaue Realisierung man noch nicht kennt, von denen man aber bestimmte Operationen verlangt ( Abstrakte Klassen)

• Müssen verschiedene Klassen, die nicht in einer Hierarchie stehen, dasselbe Verhalten aufweisen ( Interface)?

3. Finden der Beziehungen zwischen den Klassen durch Betrachten des vorgegebenen Szenarios und der bereits herausgefilterten Objekte

• Welche Beziehungen/Kommunikationsstränge gibt es zwischen den Objekten? Kann man diese auf die entsprechenden Klassen „übertragen“, d.h. welche Klasse ist auf Methoden anderer Klassen angewiesen?

• Gibt es Teile-Ganze-Beziehungen ( Aggregation, Komposition)?• ...

Page 11: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 11

Übung 1

Eine Bank benötigt Software zur Abwicklung von Autokrediten. Dabei liegt folgendes Szenario zugrunde:Besitzer eines oder mehrerer Autos können Personen, Firmen oder Banken sein. Alle „Besitzer“ haben Namen und Adresse. Bei Personen wird zusätzlich das Geburtsdatum, bei Banken die Bankleitzahl benötigt. Personen können bei maximal drei Arbeitgebern (Firmen, Banken) beschäftigt sein. Wichtige Merkmale der Autos sind Modell und Baujahr. Ein Auto kann nur einen Besitzer haben. Zur Finanzierung eines Autos kann eine Besitzer einen Kredit (Festlegung eines Kontonummer und des Zinssatzes, Abspeicherung des aktuellen Kontostandes) bei einer Bank aufnehmen. Kann eine Besitzer seinen Kreditforderungen nicht nachkommen, so hat die Bank, das Recht das Auto zu pfänden

Entwerfen Sie ein UML-Modell!

Page 12: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 12

Übung 1

Eine Bank benötigt Software zur Abwicklung von Autokrediten. Dabei liegt folgendes Szenario zugrunde:Besitzer eines oder mehrerer Autos können Personen, Firmen oder Banken sein. Alle „Besitzer“ haben Namen und Adresse. Bei Personen wird zusätzlich das Geburtsdatum, bei Banken die Bankleitzahl benötigt. Personen können bei maximal drei Arbeitgebern (Firmen, Banken) beschäftigt sein. Wichtige Merkmale der Autos sind Modell und Baujahr. Ein Auto kann nur einen Besitzer haben. Zur Finanzierung eines Autos kann eine Besitzer einen Kredit (Festlegung eines Kontonummer und des Zinssatzes, Abspeicherung des aktuellen Kontostandes) bei einer Bank aufnehmen. Kann eine Besitzer seinen Kreditforderungen nicht nachkommen, so hat die Bank, das Recht das Auto zu pfänden

Person

Firma Bank

Auto

Kredit

Besitzer

Arbeitgeber

Page 13: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 13

Übung 1 Eine Bank benötigt Software zur Abwicklung von Autokrediten. Dabei liegt folgendes Szenario zugrunde:Besitzer eines oder mehrerer Autos können Personen, Firmen oder Banken sein. Alle „Besitzer“ haben Namen und Adresse. Bei Personen wird zusätzlich das Geburtsdatum, bei Banken die Bankleitzahl benötigt. Personen können bei maximal drei Arbeitgebern (Firmen, Banken) beschäftigt sein. Wichtige Merkmale der Autos sind Modell und Baujahr. Ein Auto kann nur einen Besitzer haben. Zur Finanzierung eines Autos kann eine Besitzer einen Kredit (Festlegung eines Kontonummer und des Zinssatzes, Abspeicherung des aktuellen Kontostandes) bei einer Bank aufnehmen. Kann ein Besitzer seinen Kreditforderungen nicht nachkommen, so hat die Bank, das Recht das Auto zu pfänden

Person

Firma Bank

Auto

Kredit

Besitzer

Arbeitgeber

besitzt 1..*

arbeitet_bei

stellt_ein

0..31..*

BankBLZ

Page 14: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 14

Übung 1

Page 15: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 15

Literatur zur OOM

Bernd Oesterreich

Objektorientierte Softwareentwicklung

Oldenbourg

ISBN 3-486-25573-8

www.oose.de/uml

Page 16: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 16

Tagesordnung

1. Infos und Neuigkeiten

2. Objektorientierte Modellierung

3. Haskell-Übungen

Page 17: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 17

Übung 2

Gesucht ist eine Funktion ltest, die bei Eingabe eines String und einer Integer-Zahl die Differenz zwischen der Länge der Zeichenkette und der eingegebenen Zahl berechnet, also beispielsweise

ltest(„hallo“,3) = 2

ltest(„hallo“, 9) = - 4

ltest(„informatik, 10) = 0

function ltest (String wort, Int zahl): Int

return if wort = ““ then –zahl else 1+ltest(wort.rest, zahl) fi

ltest :: (String, Int) -> Int

ltest (““,zahl) = -zahl

ltest(wort, zahl) = 1 + (ltest( (tail wort), zahl))

Page 18: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 18

Fallunterscheidung

Gesucht ist eine Funktion ltest, die bei Eingabe eines String und einer Integer-Zahl die Differenz zwischen der Länge der Zeichenkette und der eingegebenen Zahl berechnet, also beispielsweise

ltest(„hallo“,3) = 2

ltest(„hallo“, 9) = - 4

ltest(„informatik, 10) = 0

function ltest (String wort, Int zahl): Int

return if wort = ““ then –zahl else 1+ltest(wort.rest, zahl) fi

ltest :: (String, Int) -> Int

ltest (wort, zahl)

| wort==““ = -zahl

| otherwise = 1 + (ltest( (tail wort), zahl))

Page 19: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 19

Übung: Liste

Listen in Haskell [ a ]

String als spezielle Liste [char]

Mit : wird ein Element vor einer Liste angefügt (x:xe)

tail (x:xe) wäre dann die Liste xe

produkt :: [Int] -> Int

produkt [] = 1

produkt (x:xe) = x * produkt xe

Page 20: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 20

Übung: Liste

passend :: Int -> [Int] -> [Int]

passend zahl [] = []

passend zahl (x:xe)

|zahl == x = x:passend zahl xe

|otherwise = passend zahl xe

Page 21: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 21

map

ist1 :: Int -> Bool

ist1 zahl

| zahl == 1 = True

| otherwise = False

map wendet auf alle Elemente einer Liste des Typs a dieselbe Funktion a -> b an und überführt somit die Liste vom Typ [a] in eine Liste vom Typ [b].

passend4 :: [Int] -> [Bool]

passend4 = map ist1

passend4 [1,2,0,1,2]

[True, False, False, True, False]

Page 22: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 22

map

ist1 :: Int -> Bool

ist1 zahl

| zahl == 1 = True

| otherwise = False

passend1 :: [Int] -> [Bool]

passend1 = map ist1

passend1 [1,2,0,1,2]

[True, False, False, True, False]

istx :: Int -> Int -> Bool

istx x zahl

| zahl == x = True

| otherwise = False

passendx :: Int -> [Int] -> [Bool]

passendx x = map (istx x)

passendx 1 [1,2,0,1,2]

[True, False, False, True, False]

Page 23: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 23

filter

filter „filtert“ die Elemente aus einer Liste, die einer bestimmten Bedingung genügen. Diese Bedingung ist eine Funktion a -> Bool

istx :: Int -> Int -> Bool

istx x zahl

| zahl == x = True

| otherwise = False

passendf :: Int -> [Int] -> [Int]

passendf x = filter (istx x)

passendf 1 [1,2,0,1,2]

[1,1]

Page 24: Matthias Spohrer · TU München 10. Präsenzveranstaltung 02.06.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für InformatiklehrkräfteMatthias Spohrer · TU München

Seite 24

Fragen

?