Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Nachqualifizierungskurs für Informatiklehrkräfte

Ähnliche Präsentationen


Präsentation zum Thema: "Nachqualifizierungskurs für Informatiklehrkräfte"—  Präsentation transkript:

1 Nachqualifizierungskurs für Informatiklehrkräfte

2 Inhaltsübersicht Infos Klassen und Objekte, Methoden
Generalisierung, Spezialisierung und Vererbung Abstrakte Klassen Nachbereitung mit Übung: Sortieralgorithmen Klausurbesprechung

3 Infos - Präsenztage Donnerstag, 13.03.03 14-18 Uhr HS 0670
Funktionale Modellierung Dienstag, HS 1601 Funkt. Mod. & OOM Mittwoch, OOM Montag, * 15(?)-17 Uhr* HS 0220 Auf Wunsch, zur Klausur Donnerstag, 10-12 Uhr Klausur *ob und ab wann dieser Präsenztag stattfinden soll, werden wir jetzt gemeinsam ausmachen. Außerdem eine Abschlussveranstaltung im Juli.

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: 3,71  Bitte nicht verzweifeln oder aufhören! Durchhalten!!!!

5 Sonstiges / Infos / Aussprache
Fragen zur Klausur? Fragen zum aktuellen Stoff?

6 Kleine Aufwärmübung 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. a)      Bestimmen Sie den Wert von f(4,0,2)! b)      Beweisen Sie: f(x,y,z) terminiert für alle x,y,z o mit xy!

7 Kleine Aufwärmübung Staatsexamen Herbst 1991, Aufgabe 4

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

9 Rückblick Berechengenauigkeit
Blatt 6a: Programmierung einer Potenzfunktion potenz: float x nat  float Testen des Programms: 0.25^3 = 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)

10 OOM und OOP Stuhl von Frau Müller Stuhl von Herrn Huber Frau Müller

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)

12 Objekte Objekt ist eine zur Ausführungszeit vorhandene Instanz (Exemplar), das sich entsprechend dem Bauplan ihrer Klasse verhält Objekte werden mit ihrem „Konstruktor“ erzeugt, dieser bedient sich dem Bauplan der zugehörigen Klasse - dazu später jedoch mehr.

13 Klassen mit Details Zusicherung Initialwert Attribut-Typ
Parameter (Name: Typ = Initialwert)

14 Klassen mit Details

15 Methoden Zweck einer Methode: aus imperativer Programmiersicht:
aus objektorientierter Programmiersicht: Unterprogramm, Funktion, Prozedur Operation eines Objekts (oder einer Klasse)

16 Aufruf und Definition von Objektmethoden
im Normalfall durch Objekte beispielmethode (3, “abc“) Angabe notwendig, falls Methode eines fremden Objekts beispielobjekt. a = b = c + methode( ) { ... return ...} Parameter- übergabe Definition: in der Klasse, dessen Instanz beispielobjekt ist beispielmethode (int para1, String para2) { ... } public private ... Sichtbarkeit void int ... Rückgabetyp

17 Aufruf und Definition von Klassenmethoden
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. Definition: Aufruf: durch Klasse beispielmethode (3, “abc“) Angabe notwendig, falls Methode einer fremden Klasse Beispielklasse. in der Klasse beispielmethode (int para1, String para2) { ... } static Sichtbarkeitsmodifikatoren und Behandlung der Rückgabewerte wie bei Objektmethoden Typisches Beispiel einer Klassenmethode: main

18 Bearbeiten Sie die Aufgabe 1!

19 Objektorientierte Softwareentwicklung
Geschichte der Softwareentwicklung ist eine kontinuierliche Steigerung der Abstraktionen – von Bitmuster über Makrobefehle, Prozeduren, abstrakte Datentypen zu Objekten Objektorientierung als neue Denkweise Softwareentwicklung: Kommunikation Experten im Software-entwicklungsteam Experten im Anwendungsbereich Softwareentwicklung ist NICHT in erster Linie eine technische Aufgabe, sie ist heute ein komplexer sozialer Prozess P. Brichzin

20 Objektorientierte Softwareentwicklung
Modellierungstechniken mit einer einheitlichen Notation und Semantik  Unified Modelling Language zur ObjektOrientiertenProgrammierung P. Brichzin

21 Objektorientierte Softwareentwicklung
Unterschiede zum alten Vorgehen 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 bessere Abstraktionsmöglichkeit Die Modellierung liegt mehr im Problembereich, weniger im Lösungsbereich (z.B. Struktogramme sind schon sehr weit unten im Lösungsbereich) P. Brichzin

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

23 Objektorientierte Softwareentwicklung
Unterschiede zum alten Vorgehen methodische Durchgängigkeit in allen Phasen wird mit denselben Konzepten, der selben Modellierungstechnik gearbeitet (Klassen, Objekte, Beziehungen, ...) P. Brichzin

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() { } } P. Brichzin

25 Objektorientierte Softwareentwicklung
Unterschiede zum alten Vorgehen evolutionäre Entwicklung Ein 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

26 Bearbeiten Sie die Aufgabe 2!

27 Generalisierung/Spezialisierung
Personal Beamte Angestellte Arbeiter Lehrkräfte GENERALISIERUNG SPEZIALISIERUNG Eine Unterklasse kann auch von mehreren Oberklassen erben. Man spricht von Mehrfachvererbung Diese 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. 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.

28 Generalisierung/Spezialisierung
Modellierung in UML Oberklasse Unterklasse1 Unterklasse2 Implementierung in Java Änderung lediglich in der Klassendeklaration der Unterklasse(n) class <Unterklasse> extends <Oberklasse> { ... } 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.

29 Abstrakte Klassen I Generalisierungshierarchie: Subklassen haben gemeinsame Methoden Oft 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 Figur Es 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 besitzen berechne_umfang wird als abstrakte Methode definiert

30 Die Methoden anzeigen() und entfernen sind abhängig von der Form der geometrischen Figur
 Abstrakte Methoden werden in der Oberklasse deklariert, aber erst als konkrete Methoden in der Unterklasse spezifiziert

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 { ... } Klassenname kursiv

32 OOM und OOP bisher verwendet
public static void main (String [] args) { ... } Kein Rückgabewert 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

33 Fragen ?


Herunterladen ppt "Nachqualifizierungskurs für Informatiklehrkräfte"

Ähnliche Präsentationen


Google-Anzeigen