Aufgabe. Ansatz: Abstrakte Klasse Kämpfer, die Gemeinsamkeiten enthält und individuelle Aktionen abstrakt vorgibt. Prof. Dr.
|
|
- Hella Beckenbauer
- vor 6 Jahren
- Abrufe
Transkript
1 Aufgabe In einem Rollenspiel sollen verschiedene Kämpfer zu Teams gruppiert werden können. Als Grundlage sollen zunächst verschiedene Versionen vom Kämpfern erstellbar sein Spezifikation: Kämpfer haben Gesundheitspunkte (Kämpfer lebt solange Punktzahl positiv), Stärke und Geschick; abhängig vom Typ schlagen sie zu und müssen Schläge einstecken Ansatz: Abstrakte Klasse Kämpfer, die Gemeinsamkeiten enthält und individuelle Aktionen abstrakt vorgibt 298
2 Abstrakter Kämpfer public abstract class Kaempfer { protected int gesundheit; protected int staerke; protected int geschick; public abstract int zuhauen(); public abstract void einstecken(int int schlag); Spezifikation: Kämpfer haben Gesundheitspunkte (Kämpfer lebt solange Punktzahl positiv), Stärke und Geschick; } public boolean lebt(){ return this.gesundheit > 0; } // get- und setmethoden weggelassen abhängig vom Typ schlagen sie zu und müssen Schläge einstecken 299
3 Beispielimplementierung package kaempfer; import main.basis; public class Xena extends public int zuhauen() { return (Basis.zufall Basis.zufall(super.geschick super.geschick - 2) + 5) * super.staerke / 2; } public void einstecken(int int schlag) { super.gesundheit -= schlag; } 300
4 Kaempfer als UML-Klassendiagramm 301
5 Beispielnutzung 1/3 (hölzern) public static void main(string[] s) { System.out.println("Welcher K\u00e4mpfer u00e4mpfer: "); int auswahl1 = Basis.leseInteger(); Kaempfer k1 = null; switch(auswahl1){ case 1: k1 = new Conan(); break; case 2: k1 = new Xena(); break; case 3: k1 = new Blob(); break; } k1.setgesundheit(100); k1.setgeschick(5); k1.setstaerke(10); // analog für Kaempfer k2 302
6 Beispielnutzung 2/3 } while (k1.lebt() && k2.lebt()) { int k1schlag = k1.zuhauen(); System.out.println(k1 + " haut mit " + k1schlag); k2.einstecken(k1schlag); if (k2.lebt()) { int k2schlag = k2.zuhauen(); System.out.println(k2 + " haut mit " + k2schlag); k1.einstecken(k2schlag); } } if (k1.lebt()) { System.out.println(k1 + " hat gewonnen"); } else { System.out.println(k2 + " hat gewonnen"); } 303
7 Beispielnutzung 3/3 Welcher Kämpfer: 1 Welcher Kämpfer: 2 Conan haut mit 10 Xena haut mit 36 Conan haut mit 0 Xena haut mit 24 Conan haut mit 30 Xena haut mit 28 Conan haut mit 20 Xena haut mit 36 Xena hat gewonnen 304
8 Analyse Programm läuft kritisch: Jeder der Kämpfer nutzen will, muss switchcase-konstrukt realisieren kritisch: Erzeugung findet weit weg von den eigentlichen Kämpfer-Klassen statt Ansatz: Erzeugung der Kämpfer in eigener Klasse Diese Klasse wird Factory genannt Diese Klasse bietet Methode, um neue Objekte als Aufrufergebnis zu erhalten 305
9 Factory Pattern in UML 306
10 Realisierung der Factory public class KaempferFactory { } public Kaempfer kaempfererstellen(int auswahl) { switch(auswahl auswahl){ case 1: return new Conan(); case 2: return new Xena(); case 3: return new Blob(); } return null; } 307
11 Nutzung der Factory (Ausschnitt) KaempferFactory kf = new KaempferFactory(); System.out.println("Welcher K\u00e4mpfer: "); Kaempfer k1 = kf.kaempfererstellen(basis.leseinteger Basis.leseInteger()); System.out.println("Welcher K\u00e4mpfer: "); Kaempfer k2 = kf.kaempfererstellen(basis.leseinteger Basis.leseInteger()); Anmerkung: kaempfererstellen() kann auch Klassenmethode sein 308
12 Hintergrund von Pattern beim Programmieren fällt auf, dass man einige Ideen immer wieder nutzen kann bei Software-Architekturen fällt auf, dass es auch sinnvolle wiederkehrende Strukturen gibt Strukturen werden Pattern genannt und werden nach den bearbeiteten Aufgabenstellungen benannt Bedeutung von Pattern ab der Sammlung in [GHJ95] bekannt Ziele: schnellere Entwicklung, einfache Lesbarkeit, gemeinsame Sprache der Entwickler, Wart- und Erweiterbarkeit [GHJ95] E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Pattern, Addison-Wesley, 1995 (Gang of Four-Buch) 309
13 Erweiterung Premiumkämpfer gleicher Ansatz erneut genutzt Problem: Nutzer muss zunächst Factory auswählen Lösung: Factory Pattern erneut nutzen 310
14 Factory für Factories 311
15 Nutzung der Factories (Ausschnitt ohne Dialog) public class KaempferArtFactory { public static AbstractKaempferFactory kaempferfactoryerstellen(string typ){ switch(typ){ case "basic basic": return new KaempferFactory(); case "premium": return new PremiumKaempferFactory(); } return null; } } AbstractKaempferFactory kf = KaempferArtFactory.kaempferFactoryErstellen kaempferfactoryerstellen(" ("basic basic"); Kaempfer k1 = kf.kaempfererstellen(1); kf = KaempferArtFactory.kaempferFactoryErstellen("premium"); Kaempfer k2 = kf.kaempfererstellen(2); 312
16 Weitergehende Analyse - Ausblick zentraler Teil des Factory Method Pattern, Erzeugung von Objekten wird durch realisierende Klassen entschieden Factory, die andere Factories zur Erzeugung nutzt, ist Grundlage des Abstract Factory Pattern inhaltlich: Waffen und Rüstungen ergänzen 313
17 Nutzung von Komponenten Komponente: konfigurierbare, übersetzte Software, die klare Funktionalität anbietet Beispiel: Komponente bietet Kämpfer-Objekte an benötigt Klasse, die die Erzeugung ermöglicht 314
18 Validierungs-Framework (Bean Validation 1.1, JSR 349) public abstract class Kaempfer value=0, message = "Gesundheit nicht negativ") protected int value=3, message="minimale Staerke value= 15, message="maximale Staerke beachten") protected int value=5, message="minimales Geschick value= 20, message="maximales Geschick beachten") protected int geschick; // wie vorher 315
19 Beispielnutzung der Validierung public static void main(string[] s) { AbstractKaempferFactory kf = KaempferArtFactory.kaempferFactoryErstellen kaempferfactoryerstellen(" ("basic basic"); Kaempfer k = kf.kaempfererstellen(2); k.setgesundheit(-1); k.setgeschick(22); ValidatorFactory factory = Validation.buildDefaultValidatorFactory builddefaultvalidatorfactory(); Validator validator = factory.getvalidator(); for (ConstraintViolation ConstraintViolation<Kaempfer Kaempfer> c : validator.validate(k)) { System.out.println(" :: " + c.getmessage()); } } :: maximales Geschick beachten :: minimale Staerke beachten :: Gesundheit nicht negativ 316
20 Persistenz-Framework (JPA 2.1, JSR public abstract class GeneratedValue(strategy = GenerationType.AUTO) protected int = 0, message = "Gesundheit nicht negativ") protected int = 3, message = "minimale Staerke = 15, message = "maximale Staerke beachten") protected int = 5, message = "minimales Geschick = 20, message = "maximales Geschick beachten") // wie vorher, konkrete Klassen auch annotiert 317
21 Beispielnutzung der Persistenz public static void main(string[] s) { AbstractKaempferFactory kf = KaempferArtFactory.kaempferFactoryErstellen kaempferfactoryerstellen(" ("basic basic"); Kaempfer k = kf.kaempfererstellen(2); k.setgesundheit(100 (100); k.setstaerke(7 (7); k.setgeschick(9 (9); EntityManagerFactory emf = Persistence.createEntityManagerFactory createentitymanagerfactory(" ("KaempferPU KaempferPU"); EntityManager em = emf.createentitymanager(); em.gettransaction(). ().begin begin(); em.persist(k); em.gettransaction(). ().commit commit(); em.close(); SELECT * FROM Kaempfer emf.close(); } 318
22 7. Konkretisierungen im Feindesign 7.1 Zustandsdiagramme 7.2 Object Constraint Language 200
23 Verfeinerte Modellierung Durch die verschiedenen Sichten der Systemarchitektur wird der Weg vom Anforderungsmodell zur Implementierung beschrieben Es bleiben offene Themen: Wie bekomme ich ein gutes Klassendesign (nächstes Kapitel)? Wie kann man das komplexe Verhalten von Objekten noch beschreiben (Klassendiagramme sind statisch, Sequenzdiagramme exemplarisch)? Antwort: Zustandsdiagramme Wie kann man bei der Klassenmodellierung Randbedingungen formulieren, was in Klassendiagrammen (Bedingungen in geschweiften Klammern) nur bedingt möglich ist? Antwort: Object Constraint Language 201
24 Zustandsdiagramme 7.1 generell wird der Zustand eines Objekts durch die Werte seiner Exemplar- und Klassenvariablen beschrieben Häufig wird der Begriff Zustand auch für eine spezielle Exemplarvariable genutzt, die z. B. über eine Enumeration realisierbar ist z. B. : Ampel: rot, rotgelb, gelb, grün z. B. : Projekt: vorbereitet, grob geplant, Mitarbeiter zugeordnet, verschoben, in Bearbeitung, in Endabnahme, in Gewährleistung, beendet Die Übergänge zwischen den Zuständen werden durch Ereignisse, zumeist Methodenaufrufe, veranlasst Die Übergänge lassen sich durch ein Zustandsdiagramm (ursprünglich Statechart nach D. Harel) spezifizieren Zustandsautomaten spielen auch in der theoretischen und technischen Informatik eine zentrale Rolle 202
25 Struktur von Zustandsdiagrammen Zustandsdiagramm gehört zu einem Objekt einer Klasse alle Angaben für Zustände und Transitionen sind Optional Transition wird ausgeführt, wenn Ereignis eintritt und Bedingung erfüllt ist ohne Ereignis und Bedingung wird Transition dann ausgeführt, wenn Entry, Do, und Exit durchlaufen Einfacher Automat muss deterministisch sein 203
26 Beispiel: Zustandsdiagramm eines Projekts man erkennt: nach Planung keine Planungsänderung 204
27 Hierarchische Zustände 205
28 Parallele Unterzustände unabhängige Teilzustände können in parallelen Zuständen bearbeitet werden ohne Parallelität müsste Kreuzprodukt der Zustände der parallelen Automaten betrachtet werden 206
29 Beispiel: Uhr 207
30 Zustandsmodellierung und Realzeitsysteme in klassischen OO- Programmen gibt es meist wenige zentrale Klassen, für die sich eine Zustandsmodellierung anbietet In Systemen mit Zeit kann Zustandsmodellierung Zeitbedingungen beinhalten auch warte(5 sek) 208
31 Event [Condition] / Action Transitionsbeschriftung Ereignis[Bedingung]/Aktion Was ist Ereignis? Hängt von Applikation ab Methodenaufruf Ereignis im Programm (Variable wechselt Wert) technische Systeme: Signale typisches Beispiel: Steuersysteme erhalten Signale (->Ereignisse) von Sensoren wenn etwas passiert (z. B. ein-/ausgeschaltet) lesen Werte anderer Sensoren, Teilsysteme (-> Bedingung), die Entscheidungen beeinflussen senden Signale (-> Aktion) an andere Systeme 209
32 Microsteps und Macrosteps (1/2) Actions eines Teilautomaten können Events eines anderen Teilautomaten sein Microstep: einzelne Schritte betrachten Start -> K(A1,B1) p-> K(A2,B1) x-> K(A2,B2) q-> K(A3,B2) y-> K(A3,B3) z-> K(A3,B1) r-> K(A1,B1) 210
33 Microsteps und Macrosteps (2/2) Macrostep: nur Zustände nach vollständiger Bearbeitung betrachten (Ausnahme: Livelock) Start -> K(A1/B1) p-> K(A3/B3) z-> K(A1/B1) typischerweise nur an Macrosteps interessiert 211
34 Beispiel: Start-Stopp-Automatik (1/3) zentrale Aufgabe: Start-Stopp-Automatik stellt den Motor immer dann selbstständig aus, wenn dieser nicht mehr benötigt wird (z. B. Halt an Ampel) Randbedingung: keine Abschaltung bis maximal 3 Grad und ab minimal 30 Grad Ablauf: Zündschlüssel einstecken, Motorstartknopf drücken, dann startet Automatik Motorein- und Abschaltung wird anhand der Kupplung erkannt Automatik kann auch wieder gestoppt werden [Frage: was fehlt alles zur Realität] 212
35 Beispiel: Start-Stopp-Automatik (2/3) Klärung, von welche Sensoren werden Signale empfangen: Zündschloss: start und ende Kupplung: leerlauf und druecken Automatiksteuerung: an und aus Klärung, welchen Sensoren können abgefragt werden: Temperaturwert temp in lokaler Variablen Klärung an welche Sensoren Signale geschickt werden Motorsteuerung: motor_an und motor_aus 213
36 Beispiel: Start-Stopp-Automatik (3/3) 214
37 Umsetzung von Zustandsdiagrammen Abhängig davon, wie formal die Zustände und Transitionen spezifiziert sind, kann aus Zustandsdiagrammen Programmcode erzeugt werden Typisch: Iteratives Vorgehen: informelle Beschreibungen werden schrittweise durch formalere ersetzt Ereignisse können für folgendes stehen Methodenaufrufe externe Ereignisse des GUI (-> Methodenaufruf) Teilsituation, die bei der Abarbeitung einer Methode auftreten kann Automat wird zunächst zu komplexer Methode, die z. B. anhand der Zustände in Teilmethoden refaktoriert werden kann 215
38 GUI als Zustandsautomat 216
39 Android als Zustandsdiagramm Stephan Kleuker 217
7. Konkretisierungen im Feindesign. 7.1 Zustandsdiagramme 7.2 Object Constraint Language
7. Konkretisierungen im Feindesign 7.1 Zustandsdiagramme 7.2 Object Constraint Language 173 Verfeinerte Modellierung Durch die verschiedenen Sichten der Systemarchitektur wird der Weg vom Anforderungsmodell
Mehr7. Konkretisierungen im Feindesign 7.1 Zustandsdiagramme 7.2 Object Constraint Language
7. Konkretisierungen im Feindesign 7.1 Zustandsdiagramme 7.2 Object Constraint Language 189 Verfeinerte Modellierung Durch die verschiedenen Sichten der Systemarchitektur wird der Weg vom Anforderungsmodell
MehrProbleme bei der Nutzung der Bean Validation in JPA
Probleme bei der Nutzung der Bean Validation in JPA Die aktuelle Netbeans-Installation 6.9.1 bietet als JPA-Realisierung EclipseLink in der Version 2.0.2, die in der Zusammenarbeit mit der Referenzimplementierung
Mehr7. Konkretisierungen im Feindesign
7. Konkretisierungen im Feindesign 7.1 Zustandsdiagramme 7.2 Object Constraint Language 338 Verfeinerte Modellierung Durch die verschiedenen Sichten der Systemarchitektur wird der Weg vom Anforderungsmodell
Mehr7. Konkretisierungen im Feindesign
7. Konkretisierungen im Feindesign 7.1 Zustandsdiagramme 7.2 Object Constraint Language 353 Verfeinerte Modellierung Durch die verschiedenen Sichten der Systemarchitektur wird der Weg vom Anforderungsmodell
MehrEinführung: Zustandsdiagramme Stand:
Einführung: Zustandsdiagramme Stand: 01.06.2006 Josef Hübl (Triple-S GmbH) 1. Grundlagen Zustandsdiagramme Zustände, Ereignisse, Bedingungen, Aktionen 2. Verkürzte Darstellungen Pseudozustände 3. Hierarchische
MehrZustände umsetzen Enumerations (Aufzählungen) Zustandsobjekte
Zustände umsetzen Enumerations (Aufzählungen) Zustandsobjekte Dr. Beatrice Amrhein Kursinhalt Aufzählungen erzeugen Aufzählungen verwenden Zustandsobjekte erzeugen Zustandsobjekte verwenden Nach dem Handbuch
MehrUML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich
UML / Fujaba Generierung von Java-Quellcode aus UML-Diagrammen Marcel Friedrich Agenda Einleitung Struktur Verhalten Klassendiagramme Storydiagramme Statecharts Action methods 2 Thema Codegenerierung mit
MehrVorkurs Informatik WiSe 15/16
Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann
MehrDies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt.
Thema: Grundlagen Programmierung Dozent: Prof. Dr. Stephan Kleuker Seitennummer: Seite 1 von 12 Studiengang: Informatik Technische Informatik Studiensemester: 1 Datum: 26.11.2018 Bearbeitungszeit: 120
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrVerteidigung Großer Beleg
Verteidigung Großer Beleg Die GoF-Entwurfsmuster in Java Corinna Herrmann ch17@inf.tu-dresden.de Gliederung 1. Aufgabenstellung 2. Entwurfsmuster 3. Verwandte Arbeiten 4. Beispiele: 4.1. Adapter 4.2. Flyweight
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
MehrUML - Zustandsdiagramm
Name Klasse Datum 1 Allgemeines Die Zustandsdiagramme in UML basieren im Wesentlichen auf den Statecharts von David Harel. Der Grundgedanke ist, das Verhalten eines endlichen Zustandsautomaten grafisch
MehrSoftware Design Patterns Zusammensetzung. Daniel Gerber
Software Design Patterns Zusammensetzung Daniel Gerber 1 Gliederung Einführung Iterator Composite Flyweight Zusammenfassung 2 So wird s werden Problem und Kontext an einem Beispiel vorstellen Lösung des
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 09:00-10:30 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Linux, OS X Freitag: http://hhu-fscs.de/linux-install-party/
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/
MehrInstitut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält
Mehr124 Kompetenzorientierte Aufgaben im Informatikunterricht
124 Kompetenzorientierte Aufgaben im Informatikunterricht 4.2 Aufgaben 4.2.1 Aufgabe 1: Kühlschrank 4.2.1.1 Aufgabenstellung Ein einfacher Kühlschrank besitzt einen Ein-Aus-Schalter, der jederzeit betätigt
MehrKapitel 5: Interfaces
Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,
MehrJava Persistence API. Phillip Ghadir Oliver Tigges
Phillip Ghadir phillip.ghadir@innoq.com Oliver Tigges oliver.tigges@gmx.de Was wissen Sie in 45 Minuten? Wie man mit JPA entwickelt. Dass wir viele Eigenschaften von JPA ausgelassen haben. Dass Sie nicht
MehrGedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.
Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit
Mehr! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -
! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
MehrAbgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 10 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,
MehrWorkshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk
Workshop Java Webentwicklung Einführung in Hibernate Ulrich Stärk Ablauf Montag bis Donnerstag 09:00 Uhr s.t. Beginn, bis ca. 17:00 Uhr 1 Stunde Mittagspause Donnerstag Experiment Aufzeichnung der Programmiertätigkeit
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 3 Lösungsvorschlag Objektorientierte Programmierung 08. 05. 2006 Lösung 8 (Java und UML-Klassendiagramm
Mehr1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen
1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new
MehrElementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)
MehrParameterübergabemechanismen für den Methodenaufruf
Methode, griech. der Weg zu etwas, planmäßiges Verfahren -Brockhaus Parameterübergabemechanismen für den Methodenaufruf Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw
MehrObjektorientierte Analyse (OOA) Dynamisches Modell. Objektorientierte Analyse (OOA) Sequenzdiagramm
Inhalte Sequenzdiagramm Kollaborationsdiagramm Dynamisches Modell Seite 1 Sequenzdiagramm Ein Sequenzdiagramm beschreibt die zeitliche Abfolge von Interaktionen zwischen einer Menge von Objekten innerhalb
MehrProgrammieren in Java
Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1
MehrKlassen, Vererbung, Benutzereingabe
Klassen, Vererbung, Benutzereingabe Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Inhalte der letzten Vorlesungen: Objektorientierte
MehrFunktionale und Objekt-Orientierte Programmierkonzepte
Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1
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
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.
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White
MehrSommersemester Analyse II: Verhalten (Zustandsautomaten)
Sommersemester 23 Analyse II: Verhalten (Zustandsautomaten) 8 Aufgabe 2 Analyse II: Verhalten (Zustandsautomaten) Umfang: 2 Wochen Punkte: P. Nachdem in der ersten Aufgabe die Systemstruktur mit Hilfe
MehrTeil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen
Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für
MehrUnified Modelling Language
Unified Modelling Language SEP 72 Software-Entwicklung Software-Entwicklung ist Prozess von Anforderung über Modellierungen zu fertigen Programmen Anforderungen oft informell gegeben fertige Programme
MehrÜbungsaufgabe Transaktion als Middleware
Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung
Mehr! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -
! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete II.4.2 Abstrakte Klassen und Interfaces - 1 - Ähnliche Programmteile public class Bruchelement { Bruch wert;
MehrProgrammieren I + II Regeln der Code-Formatierung
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2012/2013, SS 2013 Programmieren I + II Regeln der Code-Formatierung Die hier vorgestellten
MehrEinstieg in die Informatik mit Java
Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere
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
MehrKlassenvariablen und statische Methoden
Softwareentwicklung II (IB) Klassenvariablen und statische Methoden Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 05.04.2018 17:36 Inhaltsverzeichnis Klassenvariablen 1 Definition......................................
MehrSoftwaretechnik. Kapitel 11 : Zustandsdiagramme. Statecharts / State Machines Historisches. State Machines in UML Verwendung in OO
Statecharts / Historisches Softwaretechnik Kapitel 11 : Zustandsdiagramme Kurt Stenzel, Hella Seebach Statecharts entstanden als Verallgemeinerung von Automaten Beschreibung von Zustandsübergangsystemen
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
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 04: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung
MehrProgrammiertechnik Objektorientierung
Programmiertechnik Objektorientierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was ist Objekt-Orientierung? Objekt-Orientierung (OO) ist nicht völlig scharf definiert, d.h. es gibt unterschiedliche
MehrPROGRAMMIERUNG IN JAVA
PROGRAMMIERUNG IN JAVA ZUWEISUNGEN (1) Deklaration nennt man die Ankündigung eines Platzhalters (Variablen) und Initialisierung die erste Wertvergabe bzw. die konkrete Erstellung des Platzhalters. In einem
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
MehrFachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn. Testen. Tutorial im Rahmen des Software(technik)praktikums SS 2012
Testen Tutorial im Rahmen des Software(technik)praktikums SS 2012 Grundlagen (1) Software ist ein fundamentales Element in der Softwarequalitätssicherung Software wird am häufigsten eingesetzt Viele Organisationen
MehrJava Concurrency Utilities
Java Concurrency Utilities Java unterstützt seit Java 1.0 Multithreading Java unterstützt das Monitorkonzept mittels der Schlüsselworte synchronized und volatile sowie den java.lang.object Methoden wait(),
MehrAufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen
Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Objektorientierung Was ist Objektorientierung Es einige Grundprinzipien, die (fast) allen Definitionen des Begriffs Objektorientierung
MehrUML (Unified Modelling Language) von Christian Bartl
UML (Unified Modelling Language) von Inhaltsverzeichnis Inhaltsverzeichnis... 2 1 UML Unified Modelling Language... 3 2 Diagrammtypen... 3 2.1 Aktivitätsdiagramm... 3 2.1.1 Notation... 4 2.1.2 Beispieldiagramm...
MehrAufgabe S1: Einmal quer durch s Skript
Aufgabe S1: Einmal quer durch s Skript / 10 Punkten Entscheiden Sie, ob die folgenden Aussagen zutreffen oder nicht. Machen Sie in der entsprechenden Spalte ein Kreuz. Für jede richtige Antwort erhalten
MehrBeispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung
Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]
MehrPrüfung Softwareentwicklung II (IB)
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 2 B, IB 2 C Sommersemester 2013 Prüfung Softwareentwicklung II (IB) Datum : 11.07.2013, 08:30 Uhr
MehrII.4.2 Abstrakte Klassen und Interfaces - 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.2 Abstrakte Klassen und Interfaces - 1
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
MehrNeben 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
Mehr3. Anweisungen und Kontrollstrukturen
3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen
MehrObjektorientierte Programmierung OO mit Ada 2005
Objektorientierte Programmierung mit Ada 2005 Markus Knauß 8. Januar 2010 1/33 Motivation Erstellen Sie ein Programm, mit dem Sie Literaturverweise verwalten können. Die Literaturverweise sollen in einer
MehrSichtbarkeiten, Klassenmember und -methoden
Sichtbarkeiten, Klassenmember und -methoden Prof. Dr.-Ing. Thomas Schwotzer 11. November 2017 1 Einführung Wir haben uns mit Klassen und Objekten beschäftigt. Wir wissen nun, dass Objekte anhand von Klassen
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
MehrProgrammiertechnik Klassen
Programmiertechnik Klassen Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Aufgabe: Programm zur Adressverwaltung (20 Adressen) Adresse besteht aus: Name Adresse (Straße und Wohnort)
MehrArbeitsblätter für die Lehrveranstaltung OOP JAVA 1
Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP I. Aufbau eines Java-Programmes JAVA 1 Escape-Sequenzen zur
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
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.
MehrOOA-Dynamische Konzepte
Proseminar UML im SS 2005 OOA-Dynamische Konzepte Teil 2 von Benjamin Daeumlich 1 Übersicht Szenario Definition Interaktionsdiagramme Sequenzdiagramm Kommunikationsdiagramm Sequenz- vs. Kommunikationsdiagramm
MehrEinstieg in die Informatik mit Java
1 / 28 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 28 1 Überblick: Variablenarten 2 Lokale Variablen 3 Lokale Variablen
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:
MehrPraktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel
Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung
MehrMedia Engineering. Objektorientierte Modellierung. Verhaltensmodellierung. R. Weller University of Bremen, Germany cgvr.cs.uni-bremen.
Media Engineering Objektorientierte Modellierung Verhaltensmodellierung R. Weller University of Bremen, Germany cgvr.cs.uni-bremen.de Objektorientierte Analyse und Design im Detail Identifiziere Akteure
MehrKlassenvariablen und statische Methoden
Klassenvariablen und statische Methoden Softwareentwicklung II (IB) Prof. Dr. Oliver Braun Letzte Änderung: 05.04.2018 17:36 Klassenvariablen und statische Methoden 1/25 Klassenvariablen Klassenvariablen
MehrKlausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09
Klausur zur Lehrveranstaltung Technische Informatik für Ingenieure WS 2008/09 23. Februar 2009 Aufgabe 1 2 3 4 5 5 5 Summe mögliche Punkte 10 15 25 20 20 15 15 120 erreichte Punkte Note: Hinweise: Diese
MehrProbeklausur 2. Name: Vorname: Matrikelnr.: Datum:
Probeklausur 2 Dozent: Prof. Dr. Edmund Ihler Leistungsnachweis: Informatik 4 EDV-Nr.: 13037 Prüfungsdauer: 90 Minuten erlaubte Hilfsmittel: keine Beilagen: keine Name: Vorname: Matrikelnr.: Prüfungsraum:
MehrZweck: sequentieller Zugriff auf Elemente eines Aggregats. mehrere Abarbeitungen des Aggregatinhalts
Iterator (Cursor) Zweck: sequentieller Zugriff auf Elemente eines Aggregats Anwendungsgebiete: Zugriff auf Aggregatinhalt innere Darstellung bleibt gekapselt mehrere Abarbeitungen des Aggregatinhalts einheitliche
MehrVorlesung Programmieren
Vorlesung Programmieren Unified Modeling Language (UML) Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Unified Modeling Language (UML)
MehrThread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen
Thread-Synchronisation in in Java Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Die Klasse Thread Die Die Klasse Thread gehört zur zur Standardbibliothek von von
MehrCreational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.
Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational
MehrZweck: sequentieller Zugriff auf Elemente eines Aggregats
Iterator (Cursor) Zweck: sequentieller Zugriff auf Elemente eines Aggregats Anwendungsgebiete: Zugriff auf Aggregatinhalt innere Darstellung bleibt gekapselt mehrere Abarbeitungen des Aggregatinhalts einheitliche
Mehr16. Dezember 2004 Dr. M. Schneider, P. Ziewer
Technische Universität München WS 2004/2005 Fakultät für Informatik Lösungsvorschläge zu Blatt 8 A. Berlea, M. Petter, 16. Dezember 2004 Dr. M. Schneider, P. Ziewer Übungen zu Einführung in die Informatik
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
MehrSystemanalyse. - Folien zur Vorlesung für AI3 im Sommersemester Teil 8 -
Systemanalyse - Folien zur Vorlesung für AI3 im Sommersemester 2010 - -Teil 8 - Hans-Jürgen Steffens (by courtesy of Prof. Dr. Thomas Allweyer) Fachbereich Informatik und Mikrosystemtechnik Fachhochschule
Mehr00-Wiederholung WIEDERHOLUNG. Programmierkonzepte und Java. Peter Vischer Schule Nürnberg. KW Donnerstag, 22.
WIEDERHOLUNG Programmierkonzepte und Java 1 OBJEKT ORIENTIERTE PROGRAMMIERUNG Was heißt Programmierung? Nicht doch eher Modellierung? Modellierung ist Voraussetzung für guten Code! 2 MODELLIERUNG Realität
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
Mehr2. Bean Validation. Java Bean
2. Bean Validation Java Bean Annotationen zur Validierung von Java Beans Auswertung von Bean Annotationen Gruppierung von Bean Annotationen Erstellung eigener Bean Annotationen 80 Java Bean Ist die Spezifikation
MehrVariablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 10.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 10.12.07 1 / 15
MehrTechniken der Projektentwicklungen
Dynamische Modellierung 8. Termin Rückblick auf statische Modellierung Dynamische Modellierung Basiskonzepte Beispiel Erweiterungen Eigenschaften Syntax Rückblick auf statische Modellierung Dynamische
Mehr6. Globalübung (zu Übungsblatt 8)
6. Globalübung (zu Übungsblatt 8) Inhalt: Klassenhierarchien Verdecken von Attributen Überschreiben von Methoden Codeanalyse Analyse von JAVA-Programmen Semestralklausur Klausurtermin: Mittwoch 11.01.2006
Mehr