Algorithmen und Datenstrukturen CS1017
|
|
|
- Eike Weiner
- vor 7 Jahren
- Abrufe
Transkript
1 Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenabstraktionen und GUIs MVC-Muster MVC mit Beobachtbaren Datenstrukturen
2 GUIs und Datenabstraktionen Graphische Oberflächen und Objektorientierung GUIs sind die Königsdisziplin der Objektorientierten Programmierung. (Erst) Mit der Einführung der graphischen Benutzeroberflächen wurde das Konzept der Objektorientierung als sinnvoll erachtet, ernst genommen und populär. Grund: In der Objektorientierung geht es nicht um Tiere, Katzen und Hunde, sondern darum, wie komplexer Code strukturiert werden kann. GUIs sind wirklich komplex und ohne eine gute Organisation des Codes nicht zu beherrschen. Seite 2
3 GUIs und Datenabstraktionen GUIs und Objektorientierung: Das Problem In Anwendungen mit GUI stoßen zwei Strukturierungen zusammen die Struktur der GUI an der Graphik-Designer arbeiten ( ich hasse schlecht angezogene Nerds ) die Struktur der (nicht graphischen) Anwendungslogik. an der hard-core Entwickler arbeiten ( ich verachte die Pixel-Schubser in ihren DesignerJeans ) Beispiel Tic-Tac-Toe GUI-Sicht Ein Board ist ein JavaFx-Widget in dem man herum-klicken kann und das sich dann verändert Anwendungs-Sicht Ein Board ist eine Datenabstraktion mit klar definierter Schnittstelle und privater (geheimer) Implementierung Seite 3
4 GUIs und Datenabstraktionen Tic-Tac-Toe-Board GUI-Sicht import javafx.scene.layout.stackpane; public class TicTacToe_App extends Application{ GUI Sicht: Ein Board ist ein 2dimensionales Array von FX-Widgets in dem man klicken kann. private class Field extends StackPane { setonmouseclicked( event -> { ); private Field[][] board = new Field[3][3]; private Pane root = new public void start(stage primarystage) throws Exception { primarystage.setscene(); primarystage.show(); public static void main(string[] args) { launch(args); Seite 4
5 GUIs und Datenabstraktionen Tic-Tac-Toe-Board Applikations-Sicht public class Board { private int[] board = new int[3*3]; Ein Board ist etwas auf dem sich Spielfiguren befinden, die sich beeinflussen (schlagen), das durch eine Zug verändert werden kann, etc.. private int turn = +1; private Stack<Integer> moves = new Stack<>(); public List<Integer> listmoves() { return IntStream.range(0, board.length).filter( i -> board[i] == 0).boxed().collect(Collectors.toList()); public void makemove(int pos) { if (! (board[pos]==0) ) throw new IllegalArgumentException(); board[pos] = turn; moves.push(pos); turn = -turn; Seite 5
6 GUIs und Datenabstraktionen Entwickler- und GUI-Sicht zusammen bringen Hobby-Programmierer-Variante Code zusammen mischen Einfach auf den ersten Blick Langfristig / bei komplexen Anwendungen Entwickler-Alptraum Insgesamt: Naheliegend aber schlecht für komplexe Anwendungen an denen mehr als ein Entwickler länger als einen Monat arbeiten. Profi-Variante Code getrennt halten Schwierig auf den ersten Blick Langfristig / bei komplexen Anwendungen sinnvolle Maßnahme gegen Entwickler-Alpträume Insgesamt: Nicht naheliegend aber für komplexe Anwendungen an denen mehrere Entwickler arbeiten und / oder an denen länger als einen Monat gearbeitet wird. Seite 6
7 GUIs und Datenabstraktionen Entwickler- und GUI-Sicht: So getrennt wie möglich, so eng zusammen wie nötig Entkopplung: Grundprinzip der SW-Entwicklung: Komponenten: so weit zusammen wie unbedingt nötig, und so weit getrennt wie möglich Entkopplung von GUI und Anwendungslogik GUI-Code sollte stets so weit wie möglich vom Rest (den Daten, der Geschäftslogik ) getrennt werden. das macht die Anwendung übersichtlicher und damit leichter wartbar denn GUI und Geschäftslogik können unabhängig voneinander unterschiedliche Entwickler erstellt und unabhängig von einander ausgetauscht werden MVC-Muster Für Anwendungen mit GUI gibt es diverse Gestaltungsmöglichkeiten oft als Muster (Pattern) (Gestaltungsrichtlinie) bezeichnet Das bekannteste Muster ist MVC Model View Controler Seite 7
8 MVC View MVC Model View Control Drei Komponenten Model: Daten und Zustand der Anwendung View: Model Darstellung / GUI-Code Control: Benutzerführung, Interpretation der Benutzeraktionen Control Model, View und Control können beispielsweise als jeweils eine Klasse / ein Objekt realisiert werden. Beispiel Tic-Tac-Toe Model: View: Das Board aus Entwickler-Sicht, Das Board als Instanz einer Unterklasse von Javafx-StackPane Control: Interaktion der Sichten Kontrollieren Z.B.: Ein Knopf wurde gedrückt, ist der klickende Spieler überhaupt dran,. Seite 8
9 MVC MVC Mini-Anwendung Tic-Tac-Toe Mini-Anwendung Tic-Tac-Toe: Benutzer gibt per Klick Spielzüge ein, Anwendung zeigt Brett. Model Board mit Setzungen (Zügen) Frei / Belegt mit Was? View Sichtbares 3x3 Board, zeigt Belegung an Rechts-Klick: Schwarz setzt, Link-Klick: Weiss setzt Control Kontrolle von Aktionen und Situationen Klick erlaubt? Seite 9
10 MVC Mini-Anwendung Addierer Model public class TicTacToe_Model { private Board<TicTacToeToken> board = Board.mkBoard(TicTacToeToken.X, 3); private ObservableMap<Position, Optional<Move<TicTacToeToken>>> observableboard = FXCollections.observableMap(board); das Spielfeld: eine beobachtbare Abbildung von Positionen auf Spielsteine. public void addboardobserver(mapchangelistener<position, Optional<Move<TicTacToeToken>>> boardobserver) { observableboard.addlistener(boardobserver); Einen Beobachter des Spielfeldes hinzufügen. public Position mkposition(int x, int y) { return board.mkposition(x, y); public void move(position position, Player player) { TicTacToeToken token = (player == Player.WHITE)? TicTacToeToken.X : TicTacToeToken.O; observableboard.put(position, Optional.of(new Move<TicTacToeToken>(player, token))); Einen Spielzug machen. Dabei den Spielstein aus dem Spieler ableiten. Das Model: Wissen: Es beinhaltet die Daten die die aktuelle Situation repräsentieren. Es weiss, dass der Spieler Weiss immer mit X zieht und Schwarz mit O. Können: Es kann Spielzüge in der aktuellen Situation ausführen. Seite 10
11 MVC Mini-Anwendung Addierer Control Control ist die Komponente zwischen View und Model. Sie ist verantwortlich dafür dass die richtige Reaktion auf Benutzereingaben erfolgt, dass in der richtigen Art auf Änderungen des Models reagiert wird. Es gibt keine festen Vorgaben für die Interaktion der Control-Komponente mit Model und View Änderungen am Model können beispielsweise direkt von der View verarbeitet werden, oder erst an Control gemeldet werden. Die Kontrolle der Benutzereingabe kann in der View oder erst in Control erfolgen Seite 11
12 MVC Mini-Anwendung Addierer Control prüft ob der Spieler an der Reihe ist. public class Board_Control { private TicTacToe_Model model; private Board_View view; private int turn = 1; public Board_Control(TicTacToe_Model model) { this.model = model; Verknüpfung mit den Partnern View und Model herstellen public void setview(board_view view) { this.view = view; this.model.addboardobserver(view); public void movewhite(int x, int y) { if (turn!= 1) { view.setmsg("it is not White's turn!"); else { Position position = model.mkposition(x, y); model.move(position, Player.WHITE); view.setmsg("it is Black's turn"); turn = -turn; Wert-Änderung verarbeiten: Model informieren, oder Fehlermeldung im View. public void moveblack(int x, int y) { entsprechend Seite 12
13 MVC Mini-Anwendung Addierer View nimmt Benutzereingaben entgegen und zeigt Infos (von Model und/oder Control) an. public class Board_View extends Pane implements MapChangeListener<Position, Optional<Board.Move<TicTacToeToken>>> { private class Field extends StackPane { Typ der klickbaren Felder private Field[][] fields = new Field[3][3]; Die Spielfelder private Label msglabel = new Label("It is White's turn"); Ein Label für Nachrichten an den Benutzer private Board_Control control; public void setcontrol(board_control control) { this.control = control; Verbindung zur Control-Komponente public Board_View() { setprefsize(600, 700); for (int i = 0; i<3; i++) { for (int j = 0; j<3; j++) { Konstruktor: GUI erzeugen. fields[i][j] = new Field(i, j); fields[i][j].settranslatex(j*200); fields[i][j].settranslatey(i*200); getchildren().add(fields[i][j]); msglabel.settranslatey(620); msglabel.settranslatex(50); msglabel.setfont(font.font ("Verdana", FontPosture.ITALIC, 18)); getchildren().add(msglabel); Seite 13
14 MVC Mini-Anwendung Addierer View public void onchanged( javafx.collections.mapchangelistener.change<?? Position position = change.getkey(); Optional<Board.Move<TicTacToeToken>> move = int x = position.getx(); int y = position.gety(); String mark = (! move.ispresent() )? " " : fields[x][y].text.settext(mark); extends Position, extends Optional<Board.Move<TicTacToeToken>>> change) { change.getvalueadded(); (move.get().getplayer() == Player.WHITE)? "X" : "O"; Auf Änderungen im Model reagieren. public void setmsg(string msg) { msglabel.settext(msg); Model ist eine Map: Position ~> Spielstein. Änderungen sind Änderungen in dieser Abbildung. Nachrichten an den Benutzer anzeigen. Seite 14
15 MVC Mini-Anwendung Addierer View fortgesetzt public class Board_View extends Pane implements MapChangeListener<Position, Optional<Board.Move<TicTacToeToken>>> { private class Field extends StackPane { private Text text = new Text(); private int xcoord; private int ycoord; public Field (int x, int y) { this.xcoord = x; Die links (Weiss zieht) und rechts (Schwarz zieht) this.ycoord = y; klickbaren Felder. Rectangle border = new Rectangle(200, 200); border.setfill(null); border.setstroke(color.black); text.setfont(font.font(72)); setalignment(pos.center); getchildren().addall(border, text); setonmouseclicked( event -> { if (event.getbutton() == MouseButton.PRIMARY) { control.movewhite(xcoord, ycoord); else if (event.getbutton() == MouseButton.SECONDARY) { control.moveblack(xcoord, ycoord); ); Seite 15
16 MVC Mini-Anwendung Addierer Model View Control: Alles zusammen gebaut package tac_tac_toe_mvc; import import import import import import javafx.application.application; javafx.scene.scene; javafx.stage.stage; tac_tac_toe_mvc.control.board_control; tac_tac_toe_mvc.model.tictactoe_model; tac_tac_toe_mvc.view.board_view; public class Tic_Tac_Toe_App extends Application public void start(stage primarystage) throws Exception { primarystage.settitle("tic Tac Toe"); Board_View view = new Board_View(); TicTacToe_Model model = new TicTacToe_Model(); Board_Control control = new Board_Control(model); control.setview(view); model.addboardobserver(view); view.setcontrol(control); Komponenten erzeugen und verknüpfen. Scene scene = new Scene(view); primarystage.setscene(scene); primarystage.show(); public static void main(string[] args) { launch(args); Seite 16
17 MVC Übersicht Model: Inhaltliches Modell der Anwendung, das was der Benutzer erwartet, was passiert, wenn er mit der Anwendung umgeht. View: Reagiert auf Benutzereingaben und leitet sie an Control weiter, reagiert (direkt oder indirekt über Control) auf Änderungen im Model, Control: Steuert die Interaktion mit dem Benutzer. prüft Eingaben, gibt Informationen an Model weiter, leitet Information von Model an View weiter. Model Control MVC-Entwurf Welche Komponente ist für was verantwortlich (Können und Wissen ~> Verantwortung) Wer erzeugt wen, wer kennt wen? Welche Interaktionen soll es geben? Welche Ereignisse werden von wem an wen gemeldet? GUI-Anwendungen sind ereignisgesteuert Observer- / Beobachter-Konzept (-Muster) ist von zentraler Bedeutung: Ereignisse können definiert werden, später und an anderer Stelle kann auf einfache Art gesagt werden, wer wie darauf reagieren soll Seite 17 View
18 FXML FXML und Annotationen FXML: Beschreibung der GUI durch XML-Datei Annotationen: Verknüpfung der Komponenten via Reflection Die Verknüpfungen ( Beobachtungsverhältnisse ) der Komponenten werden nicht im Programmcode fest codiert, sondern zur Laufzeit durch JavaFX-Code erzeugt, der gesteuert wird durch die XML-Datei und Annotationen im Controller hergestellt. Insgesamt: Vereinfachte GUI-Erzeugung basierend auf dem MVC-Muster. Siehe Literatur! Seite 18
Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
Medientechnik Sommersemester 2016
Medientechnik Sommersemester 2016 Übung 01 (Einführung in Java FX) Medientechnik SS 2016 - Übung 01-1 Terminübersicht Nr Zeitraum Thema 1 18.04. - 21.04. Organisatorisches, Bildbearbeitung 2 09.05. - 12.05.
Entwicklung mit JavaFX
Entwicklung mit JavaFX Für die Entwicklung von Client-Web-Anwendungen wurde JavaFX von Oracle als strategische Technologie innerhalb der Java Plattform für den Desktop vorgestellt. JavaFX 2 erfährt eine
Objektorientierte und Funktionale Programmierung SS 2014
Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten
EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ
EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,
9.10.2014 JavaFX8 - JumpStart - JUGCH. file:///d:/workspace/kurs-java8/doc/javafx-jumpstart.html#1 1/128
file:///d:/workspace/kurs-java8/doc/javafx-jumpstart.html#1 1/128 Sven Ruppert speaking java since 1996 Principal IT Consultant Standort - München @SvenRuppert 3/128 file:///d:/workspace/kurs-java8/doc/javafx-jumpstart.html#1
Einführung in JavaFX
Einführung in JavaFX SEP Felix Zenz 16.10.2017 Wissenschaftliche Betreuer: Prof. Dr. Peer Kröger, Janina Sontheim, Daniel Kaltenthaler, Johannes Lohrer Verantwortlicher Professor: Prof. Dr. Peer Kröger
Programmieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
class Mitarbeiter {...} class AussendienstMitarbeiter extends Mitarbeiter {...} class InnendienstMitarbeiter extends Mitarbeiter {...
Kapitel 12 Design Patterns 12.1 Das Role-Pattern Faustregel: Klassenhierarchien nicht zu tief, denn 1. Nachbildungen natürlicher tiefer Hierarchien sind meist nicht verhaltenskonformant; 2. Änderung des
Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten
Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere
Javakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 05: FXML & Scene Builder Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda FXML und Scene Builder Scene Builder installieren und Demo Controller
Implementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
Design 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
Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans
Graphische Benutzungsoberflächen mit Java Einführung in NetBeans Graphische Benutzungsoberflächen! Interaktion mit dem Programm! Datenein- und ausgabe! Rückmeldungen über Verarbeitung der Daten! Visualisierung
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java Teil 11: Grafische Benutzerschnittstellen Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München
Objektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
Erzeugungsmuster. Kapselung der Objekt-Erzeugung
Erzeugungsmuster Kapselung der Objekt-Erzeugung Definition Erzeugungsmuster dienen für die Lose Koppelung, bei der erst zur Laufzeit der Typ des zu erzeugenden Objekts festgelegt wird. Abstract Factory
Benutzeroberflä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
Javakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 06: Observer und FXML Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Teil 1: Design-Pattern in JavaFX Modell-View-Controller (Wiederholung)
Klausur: Java (Liste P)
Klausur: Java (Liste P) SS05 Erlaubte Hilfsmittel: Gebundene! Unterlagen (Skript mit Anmerkungen, eigene Mitschrift) und maximal ein Buch. Bitte keine losen Blätter. Lösung ist auf den Klausurbögen anzufertigen.
EINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber in den Übungen! Linux, OS X http://hhu-fscs.de/linux-install-party/
Sommersemester Implementierung III: GUI und Verhalten (Teil 2)
Sommersemester 2003 Implementierung III: GUI und Verhalten (Teil 2) 26 Aufgabe 5 Implementierung III: GUI und Verhalten (Teil 2) Umfang: 1 Woche Punkte: 50 P. Als Nächstes soll die Implementierung des
Javakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 04: Vertiefung in JavaFX Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Teil 1: Design-Pattern in JavaFX Modell-View-Controller (MVC) Observer-Pattern
Datum, Uhrzeit: 18. 07. 2014, 10.30 Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:...
Prüfung "Programmieren 2", INbac2, SS 2014 Seite 1 von 7 Datum, Uhrzeit: 18. 07. 2014, 10.30 Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:... Dauer: 60 Min. Hilfsmittel: keine Punkte:...
JavaFX Layout and Controls
JavaFX Layout and Controls JavaFX 8-Systemvoraussetzungen Grundsätzlich verwendbar mit Java7 ab Version 4.x (?) Standard in Java8 mit Java8 arbeiten System-VM auf Java8 umstellen (sonst gibt es Probleme
Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse
Innere Klassen in Java Java 1.0: nur top-level Klassen Seit Java Version 1.1: Innere Klassen Deklaration einer Klasse innerhalb einer anderen Klasse Illustration Eigenschaften Vorteile Anwendungsmöglichkeiten
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
Programmieren 2 Java Überblick
Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10
Das Model/View/Controller Paradigma
Model/View/Controller Das Model/View/Controller Paradigma Christian Knauer Trennung von Daten, Ansicht und Funktion ermöglicht z.b. mehrere Ansichten desselben Datensatzes wird meist als Model-Delegate
Javakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 04: Einführung in JavaFX Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in JavaFX Motivation und Eigenschaften Hello World in
Model-View-Controller
Software Design Pattern Model-View-Controller Michael Lühr Gliederung Einführung und Problemstellung Ansatz durch MVC Detaillierte Darstellung der Komponenten Model View Controller Vor- und Nachteile Zusammenfassung
Grafische Benutzeroberflächen
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"
Praktikum 1: Einführung, BMI Rechner
Praktikum 1: Einführung, BMI Rechner Aufgabe 1: Erstellen und Ausführen einer Java Konsolen-Anwendung Für dieses Semester können Sie wieder NetBeans verwenden. Sie sollten Java auch schon installiert haben.
Grafische Benutzeroberflächen
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 Aufgabe Ein Benutzer soll zwei Zahlen in ein Programm
Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal
Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein
Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein Überblick Konzepte der Objektorientierten Programmierung Klassen und Objekte o Implementierung von Klassen o Verwendung von Objekten 2 Konzepte
Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff
Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1
Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.
Verteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,
MVC Ein wichtiges Konzept der Software-Architektur
MVC Ein wichtiges Konzept der Software-Architektur Dr. Arthur Zimek Ludwig-Maximilians-Universität München, Institut für Informatik, LFE Datenbanksysteme Softwareentwicklungspraktikum Wintersemester 2011/12
Java - Programmierung - Objektorientierte Programmierung 1
Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1
JavaFX. Prof. Arnold Beck Einführung Java FX 1
Framework/Classlibrary für GUI Entwicklungsgeschichte ist sehr inhomogen und noch nicht abgeschlossen. Ermöglicht Gestensteuerung (Drehen, zoomen,...) Arbeiten, wenn möglich, direkt mit der Grafikkarte
Grafische Benutzeroberflächen mit JavaFX Einführung
Grafische Benutzeroberflächen mit JavaFX Einführung Grafische Benutzeroberflächen Objektorientierte Bibliotheken Windows Presentation Foundation (C#, andere.net-sprachen) Qt (C++) Cocoa (Objective C) GTK
Dokumentation des Projektes Tic Tac Toe
Praktikum aus Programmierung Dr. Michael Hahsler Dokumentation des Projektes Tic Tac Toe 0050230 1 Java Projekt: Tic Tac Toe 1. Inhaltsverzeichnis 1. Inhaltsverzeichnis... 2 2. Problemdefinition... 2 3.
Multimedia im Netz Wintersemester 2012/13
Multimedia im Netz Wintersemester 2012/13 Übung 10 Ludwig-Maximilians-Universität München Multimedia im Netz WS 2012/13 - Übung 10-1 Lösung zu Übungsblatt 08 Ludwig-Maximilians-Universität München Multimedia
Dr. Monika Meiler. Inhalt
Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer
II.4.5 Generische Datentypen - 1 -
1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche
Entwurfsmuster (Design Patterns)
Entwurfsmuster (Design Patterns) SEP 303 Entwurfsmuster (Design Patterns) In der alltäglichen Programmierarbeit tauchen viele Probleme auf, die man schon einmal gelöst hat und die man in der Zukunft wieder
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Gliederung 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
Abschnitt 20: Ein Grundprinzip der Software-Architektur
Abschnitt 20: Ein Grundprinzip der Software-Architektur 20. Ein Grundprinzip der Software-Architektur 20 Ein Grundprinzip der Software-Architektur Einf. Progr. (WS 08/09) 770 Modelle und Anwendungen Unsere
Klausur Software-Entwicklung März 01
Aufgabe 1: minimaler Punktabstand ( 2+5 Punkte ) Matrikelnr : In einem Array punkte sind Koordinaten von Punkten gespeichert. Ergänzen Sie in der Klasse Punkt eine Klassen-Methode (=static Funktion) punktabstand,
Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik
Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen
/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();
Bereich: Grafische Benutzeroberflächen (UI), Events (2) Editor Package: de.dhbwka.java.exercise.ui.editor Klasse: Editor Aufgabenstellung: Schreiben Sie einen kleinen Texteditor mit Swing! Keine Panik,
Programmieren 1 09 Vererbung und Polymorphie
Programmieren 1 09 Vererbung und Polymorphie Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke [email protected] 1 I. VERERBUNG 2 2 Vererbung Von Interfaces übernehmen
Grafische Benutzeroberflächen mit JavaFX Canvas, Transformationen, Scene Builder
Grafische Benutzeroberflächen mit JavaFX Canvas, Transformationen, Scene Builder Anzeige komplexer Grafiken Beispiel: Planstadt-Karte typische Größe: 128x128 = 16384 Felder Vergleich: map.json enthält
Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen
Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th Letschert FH Gießen-Friedberg Th. Letschert OOP 2 Sichtbarkeitsbeziehungen und Geheimnisprinzip Sichtbarkeitsbeziehungen realisieren
Informatik II Übung 06. Benjamin Hepp 5 April 2017
Informatik II Übung 06 Benjamin Hepp [email protected] 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.
Interaktive Programme mit Scanner
2.X Input 191 Interaktive Programme mit Scanner 193 Input und System.in Interaktives Programm: Liest Input von der Konsole ( console ). Während das Programm ausgeführt wird fragt das Programm den Benutzer
Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte)
Klausur zum Kurs 1618 im Sommersemester 2002 am 10.8.2002 1 Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte) Was ist der Unterschied zwischen a) einem Objekt und einer Klasse? b) der Instanz einer Klasse
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)
Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite
Einführung in die Programmierung für NF. Übung
Einführung in die Programmierung für NF Übung 08 11.12.2013 Inhalt Korrektur Blatt 7 Programmierung Banksimulation (Blatt 6) Design Patterns (Entwurfsmuster) MVC und Observer Pattern Einführung in die
Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread
Dezentrale Kontrolle: Aktive Objekte Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread Passive Objekte Bieten Dienste auf Abruf an: - eine Zahl von der Konsole
Handbuch für die Erweiterbarkeit
Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6
! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.
! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur
Grundlagen der Programmierung Prof. H. Mössenböck. 15. Pakete
Grundlagen der Programmierung Prof. H. Mössenböck 15. Pakete Idee Paket = Sammlung zusammengehöriger Klassen (Bibliothek) Zweck mehr Ordnung in Programme bringen bessere Kontrolle der Zugriffsrechte (wer
Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
Praxisbuch Objektorientierung
Bernhard Lahres, Gregor Rayman Praxisbuch Objektorientierung Von den Grundlagen zur Umsetzung Galileo Press 1.1 Was ist Objektorientierung? 11 1.2 Hallo liebe Zielgruppe 12 1.3 Was bietet dieses Buch (und
VON MVC ZU MODEL-VIEW-VIEWMODEL
VON MVC ZU MODEL-VIEW-VIEWMODEL Wissenschaftliche Vertiefung von Lukas Jaeckle Studiengang Softwaretechnik und Medieninformatik Folie 1 von 18 Agenda 1. Architekturmuster 2. Architekturmuster für interaktive
Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich
252-0027 Einführung in die Programmierung I 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Uebersicht 2.0 Einfache Java Programme Struktur Namen Output 2 Graphische Darstellung
Einführung in die Informatik II
Einführung in die Informatik II SS 2012 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Einführung in die Informatik II 1 Prüfungstermine EI II im Sommersemester 2012 Klausurtermine
Info B VL 11: Innere Klassen/Collections
Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections
Programmiermethodik 1. Klausur
Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung
12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
Design Patterns I. Observer, Listener & MVC
Design Patterns I Observer, Listener & MVC Design Patterns I - Gliederung - Was sind Design Patterns? - Definition von Design Patterns - Entstehung - Nutzen & Verwendung - MVC - Model, View, Controller
Design Patterns MVC. Marcus Köhler Markus Merath Axel Reusch. Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 1
Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 1 Agenda! Allgemeines! Aufgabenverteilung! Alltagsbeispiel! Beurteilung! Konkretes
Design Patterns. 3. Juni 2015
Design Patterns 3. Juni 2015 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Taentzer Softwarequalität 2015 138 Was sind Design Patterns?
