Observer-Pattern (Java vs..net vs. Qt) Seminar Software-Entwurf Tim Rademacher
|
|
- Irmela Schneider
- vor 8 Jahren
- Abrufe
Transkript
1 Observer-Pattern (Java vs..net vs. Qt) Seminar Software-Entwurf Tim Rademacher
2 Gliederung Einführung in Design Patterns Das Observer-Pattern Ein Beispiel Das Observer-Pattern in Java Das Interface Observer Die Klasse Observable Events beim Java AWT Delegates und Events in.net Signale und Slots in Qt 2
3 Einführung in Design Patterns Design Pattern sind Beschreibungen von Lösungen für Software-Design Probleme Design Pattern müssen den Kontext, das Problem und die Lösung darstellen. Beschreibungen der Pattern in festgelegter Form Vergleichbarkeit Kategorisierbarkeit 3
4 Einführung in Design Patterns Nutzen von Design Patterns Ein gemeinsames Design Vokabular einfache Möglichkeit zu Kommunikation und Dokumentation Eine Dokumentations- und Lernhilfe schnelles und leichtes Verständnis von Beschreibungen Design Patterns für allgemeine oft vorkommende Probleme Eine Erweiterung zu existierenden Methoden Design Patterns beinhalten Erfahrung von Design Experten Ein Ziel für Refactoring inflexible Software umorganisiert 4
5 Das Observer-Pattern Ein Beispiel Unsere aktuelle Situation: V Vortragender Zuhörer 1 Zuhörer x Zuhörer 2 Zuhörer 3 Ein aktiver Erzähler Beobachteter / ist beobachtbar (engl. Observable) macht keine Unterscheidung zwischen den Zuhörern hört auf, wenn keiner zuhört Anzahl passiver Zuhörer Beobachter (engl. Observer) interessiert an Informationen des Erzählers reagieren auf diese Informationen 5
6 Das Observer-Pattern in Java Das Interface Observer wird von Beobachtern implementiert enthält nur eine Methoden- Deklaration «interface» Observer + update(observable, Object) : void 6
7 Das Observer-Pattern in Java Observable - changed: boolean = false - obs: Vector + Observable() + addobserver(observer) : void + deleteobserver(observer) : void + notifyobservers() : void + notifyobservers(object) : void + deleteobservers() : void # setchanged() : void # clearchanged() : void + haschanged() : boolean + countobservers() : int Die Klasse Observable Superklasse von Beobachteten besitzt Methoden zum hinzufügen, entfernen von Beobachtern speichert seine Beobachter in dem Vector obs Die notifyobservers-methoden rufen die update-methode der Beobachter auf teilt Änderung des Objektzustands nach außen hin mit 7
8 Das Observer-Pattern in Java Übersicht und Anmerkung: Observable - changed: boolean = false - obs: Vector «interface» Observer + update(observable, Object) : void + Observable() + addobserver(observer) : void + deleteobserver(observer) : void + notifyobservers() : void + notifyobservers(object) : void + deleteobservers() : void # setchanged() : void # clearchanged() : void + haschanged() : boolean + countobservers() : int Normalerweise enden die Namen von Interfaces immer auf "able", hier jedoch umgekehrt! 8
9 Das Observer-Pattern in Java Zurück zu unserem Beispiel, Erzähler: Observable public class Erzaehler extends java.util.observable { - changed: boolean = false - obs: Vector + Observable() + addobserver(observer) : void + deleteobserver(observer) : void + notifyobservers() : void + notifyobservers(object) : void + deleteobservers() : void # setchanged() : void # clearchanged() : void + haschanged() : boolean + countobservers() : int public void erzaehle(string information){ if(countobservers()>0){ setchanged(); notifyobservers(information); Erzaehler + erzaehle(string) : void 9
10 Das Observer-Pattern in Java Zu unserem Beispiel, Zuhörer: public class Zuhoerer implements java.util.observer { «interface» Observer + update(observable, Object) : void Zuhoerer + Zuhoerer() + update(observable, Object) : void - merken(object) : void - isneuigkeit(object) : boolean public Zuhoerer() { public void update(java.util.observable o, Object information) { if(isneuigkeit(information)){ merken(information); private void merken(object information) { //... private boolean isneuigkeit(object information) { //... 10
11 Events beim Java AWT Benutzer interagiert mit Komponenten der grafischen Oberfläche Events/Ereignisse werden gesendet Die Applikation reagiert auf die Events Ereignis-Klassen sind kategorisiert alle Events der grafischen Oberfläche sind eine Unterklasse der abstrakten Klasse AWTEvent 11
12 Events beim Java AWT java.util.eventobject java.io.serializable - serialversionuid: long = L ~ source: Object + EventObject(Object) + getsource() : Object + tostring() : String java.awt.awtevent - bdata[]: byte # id: int # consumed: boolean = false ~ focusmanagerisdispatching: boolean = false ~ isposted: boolean + COMPONENT_EVENT_MASK: long = 0x01 + CONTAINER_EVENT_MASK: long = 0x02 + FOCUS_EVENT_MASK: long = 0x04 + KEY_EVENT_MASK: long = 0x08 + MOUSE_EVENT_MASK: long = 0x10 + MOUSE_MOTION_EVENT_MASK: long = 0x20 + WINDOW_EVENT_MASK: long = 0x40 + ACTION_EVENT_MASK: long = 0x80 + ADJUSTMENT_EVENT_MASK: long = 0x100 + ITEM_EVENT_MASK: long = 0x200 + TEXT_EVENT_MASK: long = 0x400 + INPUT_METHOD_EVENT_MASK: long = 0x800 ~ INPUT_METHODS_ENABLED_MASK: long = 0x PAINT_EVENT_MASK: long = 0x INVOCATION_EVENT_MASK: long = 0x HIERARCHY_EVENT_MASK: long = 0x HIERARCHY_BOUNDS_EVENT_MASK: long = 0x MOUSE_WHEEL_EVENT_MASK: long = 0x WINDOW_STATE_EVENT_MASK: long = 0x WINDOW_FOCUS_EVENT_MASK: long = 0x RESERVED_ID_MAX: int = serialversionuid: long java.awt.event.actionevent + SHIFT_MASK: int = Event.SHIFT_MASK + CTRL_MASK: int = Event.CTRL_MASK + META_MASK: int = Event.META_MASK + ALT_MASK: int = Event.ALT_MASK + ACTION_FIRST: int = ACTION_LAST: int = ACTION_PERFORMED: int = ACTION_FIRST ~ actioncommand: String ~ when: long ~ modifiers: int - serialversionuid: long + ActionEvent(Object, int, String) + ActionEvent(Object, int, String, int) + ActionEvent(Object, int, String, long, int) + getactioncommand() : String + getwhen() : long + getmodifiers() : int + paramstring() : String - initids() : void + AWTEvent(Event) + AWTEvent(Object, int) + setsource(object) : void - nativesetsource(componentpeer) : void + getid() : int + tostring() : String + paramstring() : String # consume() : void # isconsumed() : boolean ~ converttoold() : Event ~ copyprivatedatainto(awtevent) : void 12
13 Events beim Java AWT Zusammenfassung von ähnlichen Ereignissen zu Gruppen Anzahl der Event-Klassen wird klein gehalten Unterscheidung von Events innerhalb einer Eventklasse durch IDs Abfrage der ID über Methode AWTEvent.getID() MouseEvent + MOUSE_FIRST: int = MOUSE_LAST: int = MOUSE_CLICKED: int = MOUSE_FIRST + MOUSE_PRESSED: int = 1 + MOUSE_FIRST + MOUSE_RELEASED: int = 2 + MOUSE_FIRST + MOUSE_MOVED: int = 3 + MOUSE_FIRST + MOUSE_ENTERED: int = 4 + MOUSE_FIRST + MOUSE_EXITED: int = 5 + MOUSE_FIRST + MOUSE_DRAGGED: int = 6 + MOUSE_FIRST + MOUSE_WHEEL: int = 7 + MOUSE_FIRST + NOBUTTON: int = 0 + BUTTON1: int = 1 + BUTTON2: int = 2 + BUTTON3: int = 3 ~ x: int ~ y: int ~ clickcount: int ~ button: int ~ popuptrigger: boolean = false - serialversionuid: long - initids() : void + MouseEvent(Component, int, long, int, int, int, int, boolean, int) + MouseEvent(Component, int, long, int, int, int, int, boolean) + getx() : int + gety() : int + getpoint() : Point + translatepoint(int, int) : void + getclickcount() : int + getbutton() : int + ispopuptrigger() : boolean + getmousemodifierstext(int) : String + paramstring() : String - setnew Modifiers() : void - setoldmodifiers() : void - readobject(objectinputstream) : void InputEvent 13
14 Events beim Java AWT Ereignisquellen (z.b. JButton) können Events aussenden EventListener sind an den Events interessiert EventListener meldet sich bei der EventSource an Bei auftretenden Events Informiert die EventSource alle registrierten EventListener Es gibt für jedes Event eine eigene Listener Klasse «interface» java.util.eventlistener «interface» java.awt.event.actionlistener + actionperformed(actionevent) : void 14
15 Das Observer-Pattern in.net.net bietet eigene Programmkonstrukte zum Benutzen des Observer-Pattern: Delegates und Events Delegates übermitteln Funktionszeiger von Ereignis-Konsumenten zu -Produzenten Schnittstelle des Ereignisproduzenten in Form von Ereignissen 15
16 Das Observer-Pattern in.net //Deklaration eines Delegate-Typs public delegate void ChangeEvent(object src, string s); //Deklaration einer Delegate-Variablen public event ChangeEvent onchangeevent; //Zuweisung einer passenden Methode an eine Delegate-Variable onchangeevent = new ChangeEvent(Hoere); public void Hoere(object src, string information) {... //Aufruf von Hoere(einObj, "string"); onchangeevent(einobj, "string"); Delegate-Variable kann mehrere Delegate-Objekte aufnehmen onchangeevent += new ChangeEvent(OnChange0); onchangeevent += new ChangeEvent(OnChange1); onchangeevent -= new ChangeEvent(OnChange1); 16
17 Das Observer-Pattern in.net Delegate-Felder als event deklariert, da Bessere Kapselung, nur die Klasse, die das Event deklariert, kann es auslösen Zugriff von außen nur mit += oder -= Anmerkung, Konvention für Event-Handling Delegates: Kein Rückgabewert (void) 1. Parameter, Sender des Events, Typ object 2. Parameter, Event-Parameter, Subklasse von System.EventArgs (wird im Beispiel nicht beachtet) 17
18 Das Observer-Pattern in.net public class Erzaehler { //Delegate-Typ public delegate void ChangeEvent(object src, string s); //Delegate-Variablen public event ChangeEvent onchangeevent; public void Erzaehle(string information){ if (onchangeevent!= null) onchangeevent(this, information);... public class Zuhoerer { public Zuhoerer {... //Anmeldung beim Erzaehler instanzerzaehler.onchangeevent += new ChangeEvent(Hoere);... Zuhörer 1 Vortragender Zuhörer 2 Zuhörer 3 Zuhörer x public void Hoere(object src, string information) { if(isneuigkeit(information)){ Merken(information);... 18
19 Das Observer-Pattern in Qt Qt ist eine C++ Klassenbibliothek und ein GUI-Toolkit für Unixund X11-Systeme Signale und Slots Schlüsselwort signals: zur Deklaration der Signale, Signale müssen nicht Implementiert werden Schlüsselwort slots: zur Deklaration der Slots aussenden von Signalen mit emit, z.b. emit highlighted(5); Verbinden von Signal mit einem Slot mit Hilfe der Methode Qobject::connect zusätzlicher Preprozessor, 'Meta Object Compiler' (kurz moc) extrahiert Informationen über Signale und Slots, erzeugt Verbindungscode 19
20 Das Observer-Pattern in Qt Beispiel: //Erzähler signals: erzaehleinformation(string s);... public void erzaehle(string information){ emit erzaehleinformation(information); //Zuhörer slots: empfangeinformation(string s);... public void empfangeinformation(string s){ if(isneuigkeit(s)){ merken(s); Qobject::connect(erzaehler, SIGNAL(erzaehleInformation(string)), zuhoerer, SLOT(empfangeInformation(string))); 20
21 Events in Qt vs. Java vs..net Java.NET Qt Implementierung EventListener Delegates und Signale und und Events Events Slots Codelesbarkeit +, da vertraut -, da nicht vertraut +, da simpel Flexibilität (-), wegen +, nur Konventionen+, nur Parameter Hierachie Einhalten Beachten 21
22 Das Observer-Pattern Danke für die Aufmerksamkeit! 22
Das Model View Controller (MVC) Konzept
Das Model View Controller (MVC) Konzept Ziel: Erhöhung der Flexibilität und Reduktion der Komplexität von GUI-Programmen durch Standard- Struktur (MVC-Pattern). Geht zurück auf Smalltalk. View 1 View 2
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrEreignisbehandlung 21
Ereignisbehandlung 21 3 Ereignisbehandlung Dieses Kapitel beschäftigt sich mit der Ereignisbehandlung, d.h. der Reaktion eines Programms auf Eingaben durch benutzende Personen. Nach einigen ersten Beispielen
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrGRAFISCHE BENUTZERSCHNITTSTELLEN
Vorlesung 4.4 GRAFISCHE BENUTZERSCHNITTSTELLEN Dr. Philip Mayer # 1 GUIs Grafische Benutzerschnittstellen (GUIs, Graphical User Interfaces) bieten dem Benutzer Zugriff auf ein Anwendungssystem GUIs sind
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrKap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster
Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster by Ali Bastan Gliederung Grundlagen von Swing 1. Kurze Einleitung 2. Warum Swing, wenn es das AWT gibt? 3. Was ist Swing? 4. Merkmale von Swing 5.
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
MehrApplet Firewall und Freigabe der Objekte
Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable
MehrObjektorientierte Software-Entwicklung
Objektorientierte Software-Entwicklung Priv.-Doz. Dr. Rolf Hennicker 08.01.2003 AWT und Swing AWT (Abstract Window Toolkit) und Swing 2 AWT (Abstract Window Toolkit) und Swing AWT und Swing bieten eine
MehrProf. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
MehrDelegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrQt-Projekte mit Visual Studio 2005
Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung
MehrJButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009.
Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2009 1 / 30 2 / 30 JButton, JCheckBox, JRadioButton In Swing existieren drei wesentliche Klassen für Schaltflächen: JButton für normale
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrDaniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers
Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrProgrammiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny 3. UML Klassendiagramm Nachtrag 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
MehrBenutzeroberflächen. Java Teil 4
Benutzeroberflächen Java Teil 4 Einleitung Eine grafische Benutzeroberfläche (Graphical User Interface) ermöglicht dem Benutzer die Interaktion mit dem Computer über grafische Symbole. Die GUI haben in
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrDesign Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi
Design Pattern - Strukturmuster CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi Agenda Einleitung Strukturmuster Fassade Model View Controller Vergleich 2 Einleitung Strukturmuster
MehrKapselung und Methodenbindung: Javas Designprobleme und ihre Korrektur. Dipl.-Inform. Peter Müller Prof. Arnd Poetzsch-Heffter Fernuniversität Hagen
Kapselung und Methodenbindung: Javas Designprobleme und ihre Korrektur Dipl.-Inform. Peter Müller Prof. Arnd Poetzsch-Heffter Fernuniversität Hagen Gliederung Einführung: Methodenbindung und Kapselung
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
Mehr7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure
7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG
MehrBIF/SWE - Übungsbeispiel
BIF/SWE - Übungsbeispiel Arthur Zaczek Feb 2015 1 Allgemein 1.1 Ziele Ziele dieses Übungsbeispieles ist es: GUI: Implementierung einer grafischen Oberfläche mit JavaFX oder WPF UI-Komponente: Implementierung
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrKleines Handbuch zur Fotogalerie der Pixel AG
1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link
MehrSoftware Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015
Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur
MehrProgrammieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek
Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrGUI Programmierung in Java
vs und niemals mischen! Daher muss man sich für eine Klasse entscheiden 1 (Abstract Window Toolkit) schwergewichtige Alle Elemente werden vom Betriebssytem gemalt sehen aus wie alle anderen Programme auf
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrHamburgService Registrierung für die Online-Dienste Gutachterverfahren (GUV) und Gutachterinformationssystem (GIS)
Behörde für Arbeit, Soziales, Familie und Integration Versorgungsamt Hamburg HamburgService Registrierung für die Online-Dienste Gutachterverfahren (GUV) und Gutachterinformationssystem (GIS) Der HamburgService
MehrNathan Burgener. Design by Contract. Modul SWE
NathanBurgener DesignbyContract ModulSWE NathanBurgener Inhaltsverzeichnis 1 WasistDesignbyContract...3 1.1 Überblick...3 1.2 DesignbyContractmitMethoden...4 1.3 DesignbyContractmitKlassen...5 1.4 Vererbung...6
MehrGliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions
try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des
MehrJava Einführung Packages
Java Einführung Packages Inhalt dieser Einheit Packages (= Klassenbibliotheken) Packages erstellen Packages importieren Packages verwenden Standard Packages 2 Code-Reuse Einbinden von bereits (selbst-/fremd)
MehrBitte melden Sie sich als Administrator des Betriebssystems oder als Benutzer mit ausreichenden Installationsrechten an Ihrem PC an.
CRS - Support... immer gut beraten Installationsanleitung Amadeus Vista Schritt 1 Bitte melden Sie sich als Administrator des Betriebssystems oder als Benutzer mit ausreichenden Installationsrechten an
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrID VisitControl. Dokumentation. 2015 Equitania Software GmbH cmc Gruppe Seite 1
ID VisitControl Dokumentation 2015 Equitania Software GmbH cmc Gruppe Seite 1 Inhaltsverzeichnis 1. Intranet... 3 1.1. Vorregistrierung (Einzel)... 3 1.2. Vorregistrierung (Gruppe)... 7 1.3. Vorregistrierung
MehrJOGGA Der Jogging-Companion
JOGGA Der Jogging-Companion GLIEDERUNG: (1) Idee (2) Funktionen (3) Codebeispiele IDEE: Jeder Jogger kennt das Problem: Man rafft sich auf um eine Runde zu laufen, schwitzt während dessen ohne Ende und
MehrArrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen
MehrInstitut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode
MehrKurzanweisung für Google Analytics
Kurzanweisung für Google Analytics 1. Neues Profil für eine zu trackende Webseite erstellen Nach dem Anmelden klicken Sie rechts oben auf den Button Verwaltung : Daraufhin erscheint die Kontoliste. Klicken
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
MehrEinführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
MehrTechnische Dokumentation SilentStatistikTool
Technische Dokumentation SilentStatistikTool Version 1.0 Marko Schröder 1115063 Inhalt Einleitung... 3 Klasse Program... 3 Klasse ArgumentHandler... 3 Bereitgestellte Variablen... 3 Bereitgestellte Methoden...
Mehr3D Visualisierung von UML Umgebungsmodellen
3D Visualisierung von UML Umgebungsmodellen Vortragender: Helmer Krämer Betreuer: Dr. Holger Giese 3D Visualisierung von UML Umgebungsmodellen Krämer Seite 1 Motivation und Anforderungen Das Umgebungsmodell
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrEinführung in die Programmierung für NF
Einführung in die Programmierung für NF UML Valerie Holmeyer Michael Kirsch Direct Feedback Eure Mitarbeit ist mir wichbg Quiz nach den jeweiligen AbschniGen Jeder kann mitmachen App socra&ve auf Smartphone
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
MehrEinführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
MehrDesign Patterns 2. Model-View-Controller in der Praxis
Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrArrays Fortgeschrittene Verwendung
Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung
MehrRichard Bubel & Martin Hentschel
Einführung in Software Engineering Übung 9: Design Patterns Richard Bubel & Martin Hentschel 31. Januar 2013 130131 TUD M. Hentschel 1 Aufgabe 9.1 (7 Punkte) Ziel: Entwurfsmuster verstehen und anwenden
MehrDaten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer
Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer Zentrum für Datenverarbeitung der Universität Tübingen Inhaltsverzeichnis 1.Synchronisation...aber
MehrBedienungsanleitung PC-Konfigurationssoftware des ID Inclinometers
Bedienungsanleitung PC-Konfigurationssoftware des ID Inclinometers 1. Installation und Programmstart Die Verbindung zum Inclinometer funktioniert nicht unter Windows XP, 2000. 1.1 Installation Zur Installation
MehrExcel Funktionen durch eigene Funktionen erweitern.
Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion
Mehrtentoinfinity Apps 1.0 EINFÜHRUNG
tentoinfinity Apps Una Hilfe Inhalt Copyright 2013-2015 von tentoinfinity Apps. Alle Rechte vorbehalten. Inhalt der online-hilfe wurde zuletzt aktualisiert am August 6, 2015. Zusätzlicher Support Ressourcen
MehrDiplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008
Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen
MehrInformationsblatt zu den Seminaren am Lehrstuhl. für Transportsysteme und -logistik
Informationsblatt zu den Seminaren am Lehrstuhl für Transportsysteme und -logistik Inhaltsverzeichnis ORGANISATORISCHES... 2 GROBER ABLAUF... 3 PRÄSENTATIONEN... 6 TEST... 7 1 Organisatorisches Jeder Student
MehrSichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben
Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den
Mehr2015-06-11 Tagesprogramm
1 2015-06-11 Tagesprogramm Design-by-Contract 2 Vertragspartner Anbieter (Server) bietet Leistungen (Services) an Kunde (Client) nimmt von Anbietern angebotene Leistungen in Anspruch Details der Inanspruchnahme
Mehr4D Server v12 64-bit Version BETA VERSION
4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und
MehrÜbersicht... 2 Dateiupload... 3 Administratorfunktionen... 4
Inhalt Übersicht... 2 Dateiupload... 3 Administratorfunktionen... 4 Benutzer hinzufügen... 4 Benutzerverwaltung... 5 Ordner anlegen... 6 Rechteverwaltung... 7 Verlag für neue Medien Seite 1 Übersicht Mit
MehrSJ OFFICE - Update 3.0
SJ OFFICE - Update 3.0 Das Update auf die vorherige Version 2.0 kostet netto Euro 75,00 für die erste Lizenz. Das Update für weitere Lizenzen kostet jeweils netto Euro 18,75 (25%). inkl. Programmsupport
Mehr5. Abstrakte Klassen
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,
MehrPAUL App. Anleitung für Studierende und Lehrende
PAUL App Anleitung für Studierende und Lehrende Stand: 9. Dezember 2014 1 Liebe Studierende, liebe Lehrende, mit der Einführung der PAUL App können verschiedene Funktionalitäten der PAUL Webseite einfacher
MehrObjektorientiertes JavaScript
Objektorientiertes JavaScript Christoph Fabritz dm121506@fhstp.ac.at http://goo.gl/jzqxnw Inhalt JavaScript Objektorientierung OO in JavaScript Literatur JavaScript Interpretiert / gescriptet Dynamische
MehrObjektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
MehrBedienungsanleitung für den Online-Shop
Hier sind die Produktgruppen zu finden. Zur Produktgruppe gibt es eine Besonderheit: - Seite 1 von 18 - Zuerst wählen Sie einen Drucker-Hersteller aus. Dann wählen Sie das entsprechende Drucker- Modell
MehrDrei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
MehrTesten mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
MehrPraktikum IKT 3. Semester
Praktikum IKT 3. Semester Dr. Andreas Müller, TU Chemnitz, Fakultät für Informatik Inhaltsverzeichnis 1 1 Einführung in QT 1.1 Die QT-Bibliothek Informationen: http://www.trolltech.com Lehner, B: KDE-
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen
Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere
MehrSichere E-Mail Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere E-Mail. der
Sichere E-Mail der Nutzung von Zertifikaten / Schlüsseln zur sicheren Kommunikation per E-Mail mit der Sparkasse Germersheim-Kandel Inhalt: 1. Voraussetzungen... 2 2. Registrierungsprozess... 2 3. Empfang
MehrArrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
Mehr