Einführung in die objektorientierte Programmierung Seminar 3.

Slides:



Advertisements
Ähnliche Präsentationen
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
Advertisements

Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
Real - Time Java Seminar Asynchrone Ereignisse und Asynchroner Kontrolltransfer in Real - Time Java Sönke Eilers.
HG13_ Herzgen, Jung & Lorkowski
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Sequenzdiagramm.
Threads Richard Göbel.
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Java: Grundlagen der Objektorientierung
Objektorientierte Programmierung
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Das Roboterprojekt Einführung Der erste Entwurf Das Thread-Konzept Hindernisse Website.
Wizards & Builders GmbH Einführung in die objektorientierte Programmierung Norbert Abb.
10. Vorlesung: Dynamische Konzepte
Steuerung externer Komponenten über ein USB-Interface.
JavaScript.
Objektorientierte Programmierung
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Objektorientiertes Konstruieren
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Vortrag: Frames & Javascript.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Klassen und Objekte.
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Objektorientierte Programmierung (OOP)
Objektorientierte Programmierung (OOP)
1 VE 11 Kruskal-Realisierung Listen. 2 Auf dem Weg zur Kruskal-Realisierung Vorüberlegungen: Der Graph könnte dargestellt werden als Menge von Knoten,
HERZLICH WILLKOMMEN ZUR INFORMATIONSVERANSTALTUNG „NEUES RAUMKONZEPT“
Investment (passiv) Durch ein Investment mit OneCoin zu profitieren. Wie funktioniert das?
Einführung in PowerPoint Zum Seminar „Video und Multimedia im Unterricht DaF“ (Theorie und Praxis der Lehr- und Lernmittel) bei Prof. Dr. E. Tschirner.
Hessisches Sozialministerium Einführung eines betrieblichen prozessorientierten Arbeitsschutzmanagementsystems AMS-Workshop „Dokumentation“ Datum.
Dr. Wolfram Amme, Das Thread-Konzept in objektorientierten Programmiersprachen, Informatik II, FSU Jena, SS Thread-Konzept in objektorientierten.
Einführung. Ziel der Veranstaltung  Vermittlung von Grundkenntnissen in C++  Solide Basis für anschließende Weiterentwicklung  Fähigkeit, kleine Programme.
1 Simulation einer Ladesäule für Elektrofahrzeuge nach dem Open Charge Point Protocol Felix Batke 3. Lehrjahr.
Tutorium Software-Engineering SS14 Florian Manghofer.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Bestes Girokonto jetzt eröffnen Die EU forderte schon vor vielen Jahren, dass allen EU-Bürgern der Weg freigemacht werden sollte für die Eröffnung eines.
Einführung in die objektorientierte Programmierung mit Squeak - BotsInc.
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
1 Eine Einführung in die objektorientierte Programmierung.
WISSENSREPRÄSENTATION IN ACTIVEMATH Theoretische Grundlagen – Teil 1.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Web Services Dr. Wolfgang Wörndl
1 freedroidz – spielend Programmieren lernen. 2 Was ist freedroidz?
Lehrervortrag Jeanette Giardina Definition Im Lehrervortrag stellt der Lehrer der gesamten Klsse einen fachlichen Zusammenhang mündlich dar.
Netzwerke - Protokolle
Pflegestärkungsgesetz II
Projekt Activtiy Tracker
Resilience Die Fähigkeit um zur Ausgangsform, -position zurückzukehren, nachdem es gebogen, verformt oder komprimiert wurde. Die Fähigkeit sich von einer.
Business Process Excuction Lanaguage
Ars combinatoria § 23 Abs. 1 StGB § 12 Abs. 1 StGB § 22 StGB
Logo Corporate Center Innovation
Java & Greenfoot Grundlagen.
Create Table, Rechte und Rollen
Es sieht gut aus, aber keiner kann es lesen
Unser Recruiting der Zukunft – mit Avature
Stoppuhr-Karten Stoppuhr-Karten
Persönlichkeitstest des Dalai Lama.
Studienkoordination Psychologie
Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein.
1. Die rekursive Datenstruktur Liste 1
30 Sekunden ZEITLIMIT: ZEITMESSUNG STARTEN DIE ZEIT IST VORBEI! 30 25
Statische und Nichtstatische Methoden Properties / Eigenschaften
Das Mayonaisenglas + der Kaffee
Die Uhrzeit.
#weareswissbasketball
Einführung in die CAD-Programmierung mit Tinkercad
<Fügen Sie Ihren Namen ein>
 Präsentation transkript:

Einführung in die objektorientierte Programmierung Seminar 3

Uhr-Beispiel: Analyse Brainstorming, welche Klassen wahrscheinlich gebraucht werden (Substantive..) Anzeige, die die Zeit darstellt Zeit, für die Umrechnung in Stunden, Minuten, Sekunden Zeitgeber für regelmäßigen Takt Uhr behält den Überblick über vergehende Zeit und stellt sie dar Verwendung von CRC-Karten

Szenario1: Tick des Zeitgebers erhöht die Uhrzeit 1. Zeitgeber muss Uhr sagen, dass Sekunde um ist (Verantwortlichkeit des Zeitgebers mit Uhr als Partner) 2. Uhr muss Tick akzeptieren (Verantwortlichkeit der Uhr, kein Partner nötig, da vom Zeitgeber initiiert) 3. Uhr muss Zeit sagen, dass Sekunde um ist (Verantwortlichkeit der Uhr, Partner Zeit) 4. Zeit muss Sekunden erhöhen (Verantwortlichkeit Zeit, kein Partner nötig)

CRC-Karten nach Szenario 1

Szenario 2: Zeitanzeige 1. Uhr muss aktuelle Zeit abfragen (Verantwortlichkeit Uhr, Partner Time) 2. Uhr muss Zeit entsprechend dem Anzeigeformat formatieren (Verantwortlichkeit Uhr, kein Partner) 3. Uhr muss Zeit darstellen (Verantwortlichkeit Uhr, kein Partner)

CRC-Karten nach Szenario 2

Uhr-Beispiel: Entwurf Lösung, Instanzvariablen und Methoden finden Uhr kann Anzeigeformat setzen und die Zeit angeben, reagiert auf Zeitgeber und gibt Ticks an Zeit weiter die Uhr muss beim Starten den Zeitgeber ebenfalls starten Zeit muss Stunden, Sekunden, Minuten errechnen UML-Diagramm erstellen

UML-Diagramm Uhr-Beispiel

Uhr-Beispiel: Programmierung Definition der Klasse Uhr Object subclass: #Uhr instanceVariableNames: 'zeit zeitgeber darstellungsFormat‘ classVariableNames: '‘ poolDictionaries: '‘ category: 'Uhr'

Uhr-Beispiel: Programmierung Definition der Klasse Zeitgeber Object subclass: #Zeitgeber instanceVariableNames: ‘uhr prozess‘ classVariableNames: '‘ poolDictionaries: '‘ category: 'Uhr‘ Klasse Zeit muss nicht definiert werden, da es sie schon gibt (mit allem Nötigen)

Uhr-Beispiel: Programmierung Zeitgeber braucht Zugriffsmethoden für Instanzvariable takt uhr ^ uhr uhr: eineUhr "setzt Verweis auf Uhr“ uhr := eineUhr

Wie tickt der Zeitgeber? viele Prozesse gleichzeitig möglich in Smalltalk Prozess erzeugen, der nach jeder Sekunde der Uhr die Nachricht naechsteSekunde sendet diesen Prozess bei Bedarf stoppen

Wie tickt der Zeitgeber? newProcess an einen Block schicken, erzeugt neuen Prozess im Haltezustand resume startet Prozess Endlosschleife: [true] whileTrue:[]. Klasse Delay kann Instanzen für unterschiedliche Zeitdauern erzeugen, wait pausiert Instanz für angegebene Zeit Prozesse haben Prioritäten, im Beispiel Hintergrundpriorität gewählt

Wie tickt der Zeitgeber? startTicken "definiert einen Prozess, der unendlich oft naechsteSekunde pro Sekunde sendet“ prozess := [[true] whileTrue: [(Delay forSeconds: 1) wait. uhr naechsteSekunde.]] newProcess. "dafür sorgen, dass er keine anderen Prozesse unterbricht“ prozess priority: (Processor userBackgroundPriority). "Prozess starten„ prozess resume

Zeitgeber anhalten stopTicken prozess terminate Instanzen von Process sind unabhängige Kontrollflüsse korrespondieren nicht mit Betriebssystem-Prozessen oder Threads nur in VM implementiert angehalten (suspend), fortgesetzt (resume), beendet (terminate)

Klasse Uhr stunden ^zeit stunden zeit ^zeit zeitgeber ^zeitgeber

Klasse Uhr Uhr anhalten und Starten bedeutet, den Zeitgeber zu setzen oder abzubrechen Instanzvariable zeitgeber ist nil, wenn kein Prozess zugewiesen wurde zeitgeber muss mit terminate gestoppt werden (Prozess)

Klasse Uhr start zeitgeber isNil ifFalse: [zeitgeber stopTicken]. zeitgeber := SekundenGeber new. zeitgeber uhr: self. zeitgeber startTicken.

Klasse Uhr stop zeitgeber isNil ifFalse: [zeitgeber stopTicken]. zeitgeber := nil

Klasse Uhr setzeZeit: einString zeit := Time readFrom: (ReadStream on: einString) naechsteSekunde zeit := zeit addTime: (Time fromSeconds: 1)

Klasse Uhr darstellungsFormat: einTyp "einTyp sollte '24' oder '12' sein“ darstellungsFormat := einTyp