M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.

Slides:



Advertisements
Ähnliche Präsentationen
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
Objektorientierte Programmierung
der Universität Oldenburg
DES-Simulator in JAVA, objektorientiert
Klassen - Verkettete Liste -
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Rekursive Grafiken Reklursive Grafiken.
Anwendungen des OODM auf die ADB / NDB
Klassen in Java.
Zusammenfassung des Kapitels 8
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Verteilte Software - Java - Prozedurale Programmierung 1
Objektrelationales Mapping mit JPA Advanced Mapping Jonas Bandi Simon Martinelli.
Java: Objektorientierte Programmierung
Listen Richard Göbel.
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
Erweiterte Zuweisungskompatibilität
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Programmieren mit JAVA
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 Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
Informatikunterricht mit Java
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
FH-Hof Singleton Pattern Richard Göbel. FH-Hof Motivation Bestimmte Klassen sollen nur ein Objekt haben Nur ein Fabrikobjekt für eine Fabrikklasse Zentraler.
Einfach verkettete Listen
Universität zu Lübeck Institut für Informationssysteme Die Anwendungsschicht Implementierung der Geschäftsprozesse und Rechte.
Rekursive Funktionen (Fakultät)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Schnittstellen.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Vererbung.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Mit der Turtle Java Programmieren
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Cäsar-Verschlüsselung
Grundkurs Informatik mit Java
Schleifen mit der Turtle
Mit Java die Turtle steuern
Cäsar-Verschlüsselung
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

m a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem Interfaces, Vererbung, abstrakte Methoden, Queues, SimplyLinked Lists, Exceptions,... verwendet

2 m a r c – o l i v e r p a h l Muehle public interface IMuehle { public Id anliefern(Korn korn); public void mahlen(); public MehlSack abholen(); }

3 m a r c – o l i v e r p a h l verschiedene Muehlen Wind Wasser Strom Lager

4 m a r c – o l i v e r p a h l -> UML Muehle

5 m a r c – o l i v e r p a h l UML-Vererbungs-Diagramm HausIMuehle Muehle WindMuehleWasserMuehleStromMuehle

6 m a r c – o l i v e r p a h l Muehle.java HausIMuehle Muehle public abstract class Muehle extends Haus implements IMuehle { protected LagerQueue kornlager; protected LagerQueue mehllager; public Id anliefern(Korn korn){ new Id(); kornlager.push(theId); return theId; } public abstract void mahlen() throws MahlException; public MehlSack abholen(){ return (MehlSack) mehllager.pop(); } }

7 m a r c – o l i v e r p a h l WindMuehle.java Muehle WindMuehle public class WindMuehle extends Muehle { private boolean wind = true; public WindMuehle(String name){ super(name); } public void mahlen() throws KeinWindException{ while(kornlager.top() != null){ if (!wind) throw new KeinWindException(); Id inBearbeitungId = (Id) kornlager.pop(); // mahlen mit Wasser mehllager.push(new MehlSack(inBearbeitungId)); } } }

8 m a r c – o l i v e r p a h l Vorteil des Interface Muehle ? ? ?

9 m a r c – o l i v e r p a h l Vorteil des Interface Muehle

10 m a r c – o l i v e r p a h l Vorteil der Instanzen/ Objekte

11 m a r c – o l i v e r p a h l Der Test public static void main(String[ ] args) { IMuehle[ ] meineMuehlen = new IMuehle[4]; meineMuehlen[0] = new WindMuehle("WindMühle A"); meineMuehlen[1] = new WindMuehle("WindMühle B"); meineMuehlen[2] = new StromMuehle("StromMühle"); meineMuehlen[3] = new WasserMuehle("WasserMühle"); // 10x wird Korn an zufällig gewählte Mühlen geliefert. for(int i=0; i<10; i++){ meineMuehlen[(int) (4*Math.random())].anliefern(new Korn()); } // alle Mühlen mahlen lassen try{ for(int i=0; i<4; i++) meineMuehlen[i].mahlen(); }catch(MahlException e){ /* irgendetwas sinnvolles tun */ }; // Lager von allen Mühlen leeren MehlSack sack; for(int i=0; i<4; i++) while ((sack = meineMuehlen[i].abholen()) != null); }

12 m a r c – o l i v e r p a h l Die Queue public interface IObjectQueue { public void push(Object obj); public Object pop(); public Object top(); } Queue: FirstInFirstOut: push(8); pop(); 8 7

13 m a r c – o l i v e r p a h l SimplyLinked List Node nextNode Node nextNode Node nextNode Node nextNode Node nextNode... protected class Node{ protected Node nextNode; protected Object nodeData; Node(Node next){ nextNode = next; } Node(Node next, Object data){ nextNode = next; nodeData = data; } void setNextNode(Node next){ nextNode = next; } void setData(Object data){ nodeData = data; } Node getNextNode(){ return nextNode; } Object getData(){ return nodeData; } }

14 m a r c – o l i v e r p a h l Die Queue public class LagerQueue implements IObjectQueue { protected Node head; public void push(Object obj){ if (head == null) head = new Node(null, obj); else { Node actNode = head; while(actNode.getNextNode() != null) actNode = actNode.getNextNode(); // Jetzt ist actNode der letzte Knoten actNode.setNextNode(new Node(null, obj)); // Jetzt ist der neue Knoten hinten angehängt } }... }

15 m a r c – o l i v e r p a h l Die Queue public class LagerQueue implements IObjectQueue { protected Node head; public void push(Object obj){... } public Object top(){ if (head == null) return null; else return head.getData(); } public Object pop(){ if (head == null) return null; // kein Knoten da Node res = head; head = res.getNextNode(); // ehemaliger Frontknoten ausgekettet return res.getData(); // Der ehemalig head wird garbagecollectet } } Node nextNode Node nextNode head