Nachqualifizierungskurs für Informatiklehrkräfte

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
1 Funktionstemplates Einbinden von Templates: –Eine *.o Datei, die durch Übersetzen einer Datei nur mit Templates erzeugt wurde, enthält keinen Programmcode.
Objektorientierte Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Konzepte objektorientierter Systeme
Einführung in die Programmierung Zusammenfassung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Objektorientierte Programmierung Definition von Klassen
Objektorientierte Programmierung mit Java unter BlueJ
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
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 Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
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.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Objektorientierte Programmierung am Beispiel von Java
Objektorientierte Programmierung
Matthias Spohrer · TU München 8. Präsenzveranstaltung – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.
Nachqualifizierungskurs für Informatiklehrkräfte
DVG Klassen und Objekte
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Entwurfs- und Implementationsdiagramme
Objektorientiertes Programmieren
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 Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
EPROG Tutorium #6 Philipp Effenberger
Objektorientierung.
Objektorientierte Modellierung mit UML
Klassen und Klassenstruktur
Programmiervorkurs WS 2014/15 Instanzmethoden
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
Java-Kurs - 9. Übung Besprechung der Hausaufgabe
Sichtbarkeit einschränken
Abstrakte Klassen und das Interface-Konzept
Objektorientierte Programmierung (OOP)
Objektorientierte (OO) Programmierung
C++ FÜR cOMPUTERSPIELENTWICKLER
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Implementieren von Klassen
 Präsentation transkript:

Nachqualifizierungskurs für Informatiklehrkräfte

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

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

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

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

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!

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

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

Rückblick Berechengenauigkeit Blatt 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)

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

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)

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.

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

Klassen mit Details

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

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

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

Bearbeiten Sie die Aufgabe 1!

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

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

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

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

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

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

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

Bearbeiten Sie die Aufgabe 2!

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.

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.

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

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

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

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

Fragen ?