Nachqualifizierungskurs für Informatiklehrkräfte

Slides:



Advertisements
Ähnliche Präsentationen
Business Engineering Philipp Osl, Alexander Schmidt
Advertisements

Kurzwiederholung Informatik I, Teil I: Grundkonzepte
Objektorientierung Auffassung der Software als eine Sammlung
Hash-Tabellen und -Funktionen Hash-Tabellen in Java
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Zusammenfassung der Vorwoche
Die Definitionsphase -Objektorientierte Analyse - Das statische Modell
Finale Semantik und beobachtbares Verhalten
Grundlagen der Informatik
Kapitel 4 Datenstrukturen
Objektorientierte Programmierung Definition von Klassen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
UML im Überblick – Dipl. Ing. Ulrich Borchert / FH Merseburg 1/22
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Software-Technik: (fortgeschrittene) Klassendiagramme
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Matthias Spohrer · TU München 8. Präsenzveranstaltung – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.
Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.
Nachqualifizierungskurs für Informatiklehrkräfte
DVG Klassen und Objekte
Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Einführung in die Programmierung Anweisungen und Datentypen
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Grundkonzepte Java - Klassendefinition
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Delphi II - OOP IFB Fortbildung
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Kollektionen in Java Aufzählungstypen, Generische Typen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Proseminar an der TU München Martin Levihn
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
Generalisierung/Spezialisierung Subtypisierung/Vererbung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Konzepte der objektorientierten Programmierung
Informatik 1 Letzte Übung.
Kompetenz -, Lern - und Prüfungsbereiche Anforderungsbereiche
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
Zustandsübergangsdiagramme (1)
EPROG Tutorium #4 Philipp Effenberger
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
SOFTWARE TECHNOLOGY 2009/2010 Faculty of Electrical Engineering and Technical Informatics Budapest University of Technology and Economics OO problems 1.
Objektorientierte Modellierung mit UML
Klassen und Klassenstruktur
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Sichtbarkeit einschränken
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Objektorientierte (OO) Programmierung
Tutorium Software-Engineering SS14 Florian Manghofer.
Aufgaben zu Rückgabewerten
 Präsentation transkript:

Nachqualifizierungskurs für Informatiklehrkräfte

Tagesordnung Infos und Neuigkeiten Objektorientierte Modellierung Haskell-Übungen

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% Ursachen Evaluation... 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

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... Ursachen ??? 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

Infos – Klausur Termin: Donnerstag, 26.06.03 HS 0220 Arbeitszeit: 10 – 12 Uhr Hilfsmittel: Duden 5 Aufgaben à 20 BE 80 BE entsprechen 100% oder Auswahlmöglichkeit 4 aus 5 Minimalziel: 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...)

Infos – nächstes Jahr Stoff:

Tagesordnung Infos und Neuigkeiten Objektorientierte Modellierung Haskell-Übungen

Modellierung – warum und wie? (Komplexes) Problem Modellierung Modell 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. (z.B.) „Objektorientiertes Programm“ = Menge von Klassen Compilierung und Programmstart Menge von Objekten (Instanzen der Klassen), die untereinander kommunizieren

Objektorientierte Modellierung – wie und warum? Zweck der Modellierung Grundkonzepte 1. „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

Praktisches Vorgehen bei OOM 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? 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)? 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)? ...

Ü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!

Ü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 Besitzer Kredit Person Arbeitgeber Auto Firma Bank

Übung 1 Besitzer Auto Person Arbeitgeber Kredit Firma Bank 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 Besitzer besitzt  1..* Auto Person arbeitet_bei  Arbeitgeber Kredit  stellt_ein 1..* 0..3 Bank BLZ Firma Bank

Übung 1

www.oose.de/uml Literatur zur OOM Bernd Oesterreich Objektorientierte Softwareentwicklung Oldenbourg ISBN 3-486-25573-8 www.oose.de/uml

Tagesordnung Infos und Neuigkeiten Objektorientierte Modellierung Haskell-Übungen

Ü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))

Fallunterscheidung function ltest (String wort, Int zahl): Int 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))

Ü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

Übung: Liste passend :: Int -> [Int] -> [Int] passend zahl [] = [] passend zahl (x:xe) |zahl == x = x:passend zahl xe |otherwise = passend zahl xe

map 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]. ist1 :: Int -> Bool ist1 zahl | zahl == 1 = True | otherwise = False passend4 :: [Int] -> [Bool] passend4 = map ist1 passend4 [1,2,0,1,2] [True, False, False, True, False]

map 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] 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]

filter 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] filter „filtert“ die Elemente aus einer Liste, die einer bestimmten Bedingung genügen. Diese Bedingung ist eine Funktion a -> Bool

Fragen ?