Algorithmen und Datenstrukturen CS1017
|
|
- Eike Weiner
- vor 6 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
MehrAusnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren
Ausnahmebehandlung Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren Ausnahmen abfangen Ausnahmen definieren Sinnvolle Verwendung von Ausnahmen Informatik II: Objektorientierte SW-Entwicklung, Algorithmik,
MehrMedientechnik 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.
MehrEntwicklung 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
MehrObjektorientierte 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
MehrEAD 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,
MehrProgrammieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik
Programmieren II Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Event-Modelle in Java Graphische Anwendungen werden über Events
MehrProgrammieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik
Programmieren II Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Event-Modelle in Java Graphische Anwendungen werden über Events
Mehr9.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
MehrProgrammieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik
Programmieren II Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Events in Java Graphische Anwendungen werden über Events gesteuert.
MehrEinfü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
MehrProgrammieren 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
Mehrclass 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
MehrInteraktionen 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
MehrJavakurs 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
MehrImplementieren 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
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
MehrGraphische 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
MehrEinfü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
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
MehrErzeugungsmuster. 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
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
MehrJavakurs 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)
MehrInfo B VL 14: Java Collections/Reflections
Info B VL 14: Java Collections/Reflections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 14: Java Collections/Reflections
MehrKlausur: 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.
MehrEINFÜ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/
MehrSommersemester 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
MehrEinführung in die Informatik - Teil 6a -
Eckart Modrow Felder mit dem JBuilder S. 1 Einführung in die Informatik - Teil 6a - Felder mit dem JBuilder Inhalt: 1. Bezug zum Unterricht: Anwendungen 2. Eine eigene Klasse Feldverwalter 3. Den Feldverwalter
MehrJavakurs 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
MehrDatum, 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:...
MehrJavaFX 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
MehrDeklaration 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
MehrEinfü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
MehrEinstieg 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
MehrProgrammieren 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
MehrDas 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
MehrJavakurs 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
MehrModel-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
MehrGrafische 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"
MehrPraktikum 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.
MehrGrafische 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
MehrObjektorientierte 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
MehrPolymorphie/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
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 9 Lösungsvorschlag Objektorientierte Programmierung 26. 06. 2006 Aufgabe 19 (Sieb des Erathostenes)
MehrObjektorientierung. 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
MehrJava 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.
MehrObjektorientierteund FunktionaleProgrammierung
Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten
MehrEinfü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.
MehrVerteilte 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,
Mehr// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();
Typecast class Pilz void suchen() void sammeln() class EßbarerPilz extends Pilz Suppe kochen() Suppe einesuppe = new Suppe(); return einesuppe; class GiftPilz extends Pilz void entsorgen() class Suppe
MehrMVC 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
MehrJava - 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
MehrJavaFX. 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
MehrGrafische 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
MehrDokumentation 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.
MehrMultimedia 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
MehrDr. 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
MehrII.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
MehrEntwurfsmuster (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
Mehr1 Programmierfehler und ihre Behebung
1 Programmierfehler und ihre Behebung (kleiner lebenspraktischer Ratgeber) Grundsätze: Jeder Mensch macht Fehler... insbesondere beim Programmieren. Läuft ein Programm, sitzt der Fehler tiefer. Programmierfehler
MehrRepetitorium 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
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
MehrEinführung in die Programmierung für NF MI. Übung 11
Einführung in die Programmierung für NF MI Übung 11 Inhalt Design Patterns (Entwurfsmuster) MVC und Observer Pattern Einführung in die Programmierung für NF MI - Übung 11 2 Design Patterns A Design Pattern
MehrAbschnitt 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
MehrKlausur 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,
MehrProgrammieren 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
Mehr/** 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,
MehrProgrammieren 1 09 Vererbung und Polymorphie
Programmieren 1 09 Vererbung und Polymorphie Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 I. VERERBUNG 2 2 Vererbung Von Interfaces übernehmen
MehrGrafische 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
MehrAbschnitt 7: Weitere Konzepte der oo Programmierung in Java
Abschnitt 7: Weitere Konzepte der oo Programmierung in Java 7. Weitere Konzepte der oo Programmierung in Java 7.1 Peer Kröger (LMU München) Einführung in die Programmierung WS 14/15 596 / 627 Überblick
MehrTh. 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
MehrInformatik II Übung 06. Benjamin Hepp 5 April 2017
Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.
MehrInteraktive 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
MehrAufgabe 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
MehrProbeklausur: 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,
Mehr1 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
MehrAnleitung. 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
MehrEinfü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
MehrDezentrale 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
MehrHandbuch 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
Mehr! 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
MehrGrundlagen 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
MehrModel-View-Controller. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1
Model-View-Controller Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Model View Controller (MVC) Architekturmuster für die Gestaltung von interaktiven Oberflächen 3 Komponenten Model: Datenmodell
MehrJavakurs 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
MehrPraxisbuch 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
MehrInhalt. Design patterns Kernbereiche Creational patterns Factory method Abstract Factory Builder Structural patterns Adapter Facade Decorator
Inhalt Gute OOP-Programmierung ist schwer Objekte Objekte, wird aber so vermittelt (siehe jede Einführung in OOP) Ansprüche an gutes Design diametral welche Ansprüche haben wir überhaupt? Fehler im Design
MehrVON 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
MehrEinfü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
MehrProgrammieren 2 Java Überblick
Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 3 Schnittstellen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10
MehrEinfü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
MehrInfo 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
MehrProgrammieren I. Überblick Objektorientierung Heusch 12 Ratz 7. Institut für Angewandte Informatik
Programmieren I Überblick Objektorientierung Heusch 12 Ratz 7 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Objektorientierte Softwarenentwicklung Was ist das grundlegende Konzept
MehrProgrammiermethodik 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
MehrCS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)
CS005 Objektorientierte Programmierung Bachelor of Science (Informatik) Th Letschert Felder Seite Th Letschert OOP Felder / Arrays Seite 2 Th Letschert Feld / Array Feld (auch Array) Daten unter einem
Mehr12 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,
MehrDesign 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
MehrDesign 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
MehrDesign 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?
Mehr