2 + 1, 50 pro Tag ab dem 3. Tag. 1, 50 plus 1, 50 pro Tag ab dem 4. Tag
|
|
- Kirsten Schwarz
- vor 6 Jahren
- Abrufe
Transkript
1 Fallstudie: Videothek-Verwaltung Aufgabenstellung Abrechnung einer Videothek: 3 Arten von Videos Normalpreis Neuerscheinung Kindervideos 2 + 1, 50 pro Tag ab dem 3. Tag 3 pro Tag 1, 50 plus 1, 50 pro Tag ab dem 4. Tag Bonuspunkte pro Ausleihung Normalpreis 1 Punkt Neuerscheinung 1 Punkt + 1 Zusatzpunkt, ab 2 Tage Kindervideo 1 Punkt Gewünschte Ausgabe: Kunde: Max Glotzmann Star Trek 3,50 Terminator VII 6,00 König der Löwen 3,00 Gesamtpreis 12,50 Bonuspunkte 4 UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.1
2 Klasse Movie (Filme) reine Datenklasse class Movie { public static final int regular = 0, newrelease = 1, children = 2; private String title; private int kind; Movie - title - kind gettitle() setkind(n) getkind() public Movie (Sting s, int n) { title = s; kind = n; public String gettitle () { return title; public void setkind (int n) { kind = n; public int getkind () { return kind; get- und set-methoden machen es leichter, private Daten später zu ändern. erlauben es, read-only-attribute zu modellieren (z.b. title). kosten allerdings Effizienz und machen Programm größer. UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.2
3 Klasse Rental (Ausleihung) Ausleihvorgang eines Films durch einen Kunden. Ebenfalls reine Datenklasse Rental - movie - days class Rental { private Movie movie; private int days; getmovie() getdays() public Rental (Movie m, int d) { movie = m; days = d; public Movie getmovie () { return movie; public int getdays () { return days; UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.3
4 Klasse Customer (Kunde) Pro Kunde wird sein Name und die von ihm ausgeliehenen Filme gespeichert. class Customer { private String name; private List rentals = new LinkedList(); Customer - name - rentals getname() addrental(r) makeinvoice() public Customer (String name) { this.name = name; public String getname () { return name; public void addrental (Rental r) { rentals.add(r); public String makeinvoice () { // liefert einen Rechnungstext über alle ausgeliehenen Filme // hier steckt die gesamte Steuerlogik! UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.4
5 Customer: makeinvoice() public String makeinvoice () { int price = 0, total = 0, bonus = 0; // Preise in Euro-Cent Iterator films = rental.iterator(); StringBuffer sb = new StringBuffer("Kunde: " + name + "\n"); while (films.hasnext()) { Rental r = (Rental) films.next(); int kind = r.getmovie().getkind(), days = r.getdays(); switch (kind) { case Movie.regular: price = 200; if (days > 2) price += (days - 2) * 150; break; case Movie.newRelease: price = days * 300; break; case Movie.children: price = 150; if (days > 3) price += (days - 3) * 150; break; bonus++; if (kind==movie.newrelease && days>1) bonus++; sb.append("\t" + r.getmovie().gettitle() + "\t"); sb.append(price/100 + "," + price %100 + "\n"); total += price; sb.append("\ngesamtbetrag:\t"+ total/100 + "," + total%100); sb.append("\nbonuspunkte:\t" + bonus); return sb.tostring(); UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.5
6 Customer: makeinvoice() zerlegen public String makeinvoice () { int price = 0, total = 0, bonus = 0; Iterator films = rental.iterator(); StringBuffer sb = new StringBuffer("Kunde: " + name); while (films.hasnext()) { Rental r = (Rental) films.next(); int kind = r.getmovie().getkind(), days = r.getdays(); switch (kind) { case Movie.regular: computechargefor(rental price = 200; r) if (days > 2) price += (days - 2) * 150; break; case Movie.newRelease: price = days * 300; break; case Movie.children: price = 150; if (days > 3) price += (days - 3) * 150; break; bonus++; if (kind==movie.newrelease && days>1) bonus++; sb.append("\t" + r.getmovie().gettitle() + "\t"); sb.append(price/100 + "," + price %100 + "\n"); total += price; sb.append("\ngesamtbetrag:\t"+ total/100 + "," + total%100); sb.append("\nbonuspunkte:\t" + bonus); return sb.tostring(); UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.6 computebonusfor (Rental r)
7 Customer: compute Charge/Bonus For (r) public int computechargefor (Rental r) { int price = 0; int kind = r.getmovie().getkind(), days = r.getdays(); switch (kind) { case Movie.regular: price = 200; if (days > 2) price += (days - 2) * 150; break; case Movie.newRelease: price = days * 300; break; case Movie.children: price = 150; if (days > 3) price += (days - 3) * 150; break; return price; public int computebonusfor (Rental r) { return (r.getmovie().getkind() == Movie.newRelease && r.getdays() > 1)? 1 : 2; UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.7
8 Customer: makeinvoice() NEU public String makeinvoice () { int price = 0, total = 0, bonus = 0; // Preise in Euro-Cent Iterator films = rental.iterator(); StringBuffer sb = new StringBuffer("Kunde: " + name); while (films.hasnext()) { Rental r = (Rental) films.next(); price = computechargefor(r); bonus += computebonusfor(r); sb.append("\t" + r.getmovie().gettitle() + "\t"); sb.append(price/100 + "," + price %100 + "\n"); total += price; sb.append("\ngesamtbetrag:\t"+ total/100 + "," + total%100); sb.append("\nbonuspunkte:\t" + bonus); return sb.tostring(); computecharge/bonusfor beziehen sich auf Rental nicht auf Customer ==> Methoden in die Klasse Rental verschieben UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.8
9 Rental: getcharge / getbonus () public int getcharge () { int price = 0; int kind = movie.getkind(); switch (kind) { case Movie.regular: price = 200; if (days > 2) price += (days - 2) * 150; break; case Movie.newRelease: price = days * 300; break; case Movie.children: price = 150; if (days > 3) price += (days - 3) * 150; break; return price; public int getbonus () { return (movie.getkind()==movie.newrelease && days>1)? 1 : 2; Customer: public String makeinvoice () {... price = r.getcharge(); bonus += r.getbonus();... UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.9
10 Movie: getcharge / getbonus (days) public int getcharge (int days) { int price = 0; switch (kind) { case regular: price = 200; if (days > 2) price += (days - 2) * 150; break; case newrelease: price = days * 300; break; case children: price = 150; if (days > 3) price += (days - 3) * 150; break; return price; public int getbonus (int days) { return (kind == newrelease && days > 1)? 1 : 2; Rental: public int getcharge() { return movie.getcharge(days); public int getbonus () { return movie.getbonus(days); UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.10
11 Price - Klassen abstract class Price { public abstract int getcharge (int days); public int getbonus (int days) { return 1; class RegularPrice extends Price { public int getcharge (int days) { if (days > 2) return (days-2)*150; else return 200; class NewPrice extends Price { public int getcharge (int days) { return days * 300; public int getbonus (int days) { if (days > 1) return 2; else return 1; class ChildPrice extends Price { public int getcharge (int days) { if (days > 3) return (days-3)*150; else return 150; UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.11
12 class Movie { private String title; private Price price; Implementierung von Movie public Movie (String title, Price price) { this.title = title; this.price = price; public String gettitle () { return title; public void setprice (Price p) { price = p; public Price getprice () { return price; public int getcharge (int days) { return price.getcharge(days); public int getbonus (int days) { return price.getbonus(days); UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.12
13 class Rental { private Movie movie; private int days; Implementierung von Rental public Rental (Movie movie, int days) { this.movie = movie; this.days = days; public Movie getmovie () { return movie; public int getdays () { return days; public int getcharge () { return movie.getcharge(days); public int getbonus () { return movie.getbonus(days); UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.13
14 Implementierung von Customer class Customer { private String name; private List rentals = new LinkedList(); public Customer (String name) { this.name = name; public void addrental (Rental r) { rentals.add(r); public String makeinvoice () { int price = 0, total = 0, bonus = 0; Iterator films = rentals.iterator(); StringBuffer sb = new StringBuffer("Kunde: " + name + "\n"); while (films.hasnext()) { Rental r = (Rental) films.next(); price = r.getcharge(); bonus += r.getbonus(); sb.append("\t" + r.getmovie().gettitle() + "\t"); sb.append(price/100 + "," + price %100 + "\n"); total += price; sb.append("\ngesamtbetrag:\t"+ total/100 + "," + total%100); sb.append("\nbonuspunkte:\t" + bonus); return sb.tostring(); UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.14
15 Videothek-Applikation (1) class VideoApp { public static final Price regular = new RegularPrice(); public static final Price newrelease = new NewPrice(); public static final Price children = new ChildPrice(); private Map customers = new HashMap(); private Map movies = new HashMap(); void addmovie (Movie movie) { movies.put(movie.getname(), movie); void addcustomer (Customer customer) { customers.put(customer.getname(), customer); public static void main (String[] args) {... UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.15
16 class VideoApp {... Videothek-Applikation (2) public static void main (String[] args) { VideoApp bb = new VideoApp(); // bb Blockbuster Customer mg = new Customer("Max Glotzmann"); bb.addcustomer(mg); Movie m1 = new Movie("Star Trek", regular), m2 = new Movie("Terminator VII", newrelease); m3 = new Movie("König der Löwen", children); bb.addmovie(m1); bb.addmovie(m2); bb.addmovie(m3); mg.addrental(new Rental(m1, 3)); mg.addrental(new Rental(m2, 2)); mg.addrental(new Rental(m3, 4)); System.out.println(mg.makeInvoice()); UE zu SW 2 Fallstudie OO-Entwurf: Videothek-Verwaltung A.16
Advanced Software Engineering WS0910 Kapitel3. Dr. Dominik Haneberg
Advanced Software Engineering WS0910 Kapitel3 Dr. Dominik Haneberg REFACTORING 26.01.2010 Advanced Software Engineering 2 Inhalte dieses Kapitels Was ist Refactoring? Wozu und wann refactorn? Wie geht
Mehr0/100. Refactoring. Andreas Zeller. Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken
0/100 Refactoring Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Refactoring im Überblick 1/100 Refactoring (wörtl. Refaktorisieren ) bedeutet das Aufspalten von Software
MehrKlassen sollten nicht Wissen über die ganze Hierarchie, sondern nur über Nachbarklassen haben. Dies reduziert die Kopplung!
Kapitel 11 Refactoring 11.1 Die Demeter-Regel (Lieberherr 89) Klassen sollten nicht Wissen über die ganze Hierarchie, sondern nur über Nachbarklassen haben. Dies reduziert die Kopplung! Demeter-Prinzip:
MehrKlassen sollten nicht Wissen über die ganze Hierarchie, sondern nur über Nachbarklassen haben. Dies reduziert die Kopplung!
Kapitel 11 Refactoring 11.1 Die Demeter-Regel (Lieberherr 89) Klassen sollten nicht Wissen über die ganze Hierarchie, sondern nur über Nachbarklassen haben. Dies reduziert die Kopplung! Demeter-Prinzip:
MehrModularisierung. Klausur. Evaluation. Andreas Zeller. Objektorientierung C++ Sonstiges 33% 33% 33%
Modularisierung Andreas Zeller 1 Klausur Objektorientierung C++ Sonstiges 33% 33% 33% 2 Evaluation http://frweb.cs.uni-sb.de/03.studium/08.eva/ 3 Modularisierung Andreas Zeller 4 Modularisierung Änderungen
MehrRefactoring. PG Reclipse Seminar: Refactoring Jan-Christopher Bals (1/30)
Refactoring PG Reclipse Seminar: Refactoring Jan-Christopher Bals (1/30) Gliederung des Vortrags Definition Hintergrund und Motivation Refactoring am Beispiel Refactoring-Katalog Unterstützung durch Tools
MehrAdvanced Software Engineering WS0910 Kapitel3. Dr. Dominik Haneberg
Advanced Software Engineering WS0910 Kapitel3 Dr. Dominik Haneberg REFACTORING 01.02.2010 Advanced Software Engineering 2 Inhalte dieses Kapitels Was ist Refactoring? Wozu und wann refactorn? Wie geht
Mehr86 Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 2. Juli 2007
86 Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 2. Juli 2007 Hinweis Die Wahlen zum AStA, dem Senat sowie zu den Fakultätsräten der Universität Tübingen finden am Mittwoch,
MehrKapitel 11 Kapitel 11 Refactoring
Vorlesung Softwaretechnologie 2007/8 Dr. Günter Kniesel R O O T S Kapitel Kapitel Refactoring "Refactoring" Einstiegs-Beispiel Refactoring: Schritt für Schritt Beispiel: Extract Method Indikationen für
MehrVorlesung Softwaretechnologie. Wintersemester este 2009 R O O T S. Refactoring. Stand:
Vorlesung Softwaretechnologie Wintersemester este 2009 R O O T S Kapitel 0 Refactoring Stand: 28.02.2009 "Refactoring" Einstiegs-Beispiel Refactoring: Schritt für Schritt Beispiel: Extract Method Indikationen
MehrVorlesung Softwaretechnologie. Wintersemester este 2008 R O O T S. Refactoring. Stand: (Selbsttestfolie eingefügt)
Vorlesung Softwaretechnologie Wintersemester este 2008 R O O T S Kapitel 0 Refactoring Stand: 5.02.2009 (Selbsttestfolie eingefügt) "Refactoring" Einstiegs-Beispiel Refactoring: Schritt für Schritt Beispiel:
MehrLösungshinweise/-vorschläge zum Übungsblatt 9: Software-Entwicklung 1 (WS 2017/18)
Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 9: Software-Entwicklung 1 (WS 2017/18)
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollstrukturen - 1 - Anweisung Anweisung Zuweisung Methodenaufruf
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
MehrKapitel 10 Refactoring
Vorlesung Softwaretechnologie Wintersemester 204/5 R O O T S Kapitel 0 Refactoring Stand: 30.0.205 Was ist überhaupt Refactoring? Refactoring (noun): a change made to the internal structure of software
MehrÜbungen zur Vorlesung Softwaretechnologie - Wintersemester 2018/19 - Dr. Günter Kniesel. Übungsblatt 10 Lösungen
Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2018/19 - Dr. Günter Kniesel Übungsblatt 10 Lösungen Aufgabe 1. Jahreszeitbedingte Anwendung von Entwurfsmustern (16 Punkte) Ein reichlich geschmückter
MehrKapitel 11 Refactoring
Vorlesung Softwaretechnologie Wintersemester 203/4 R O O T S Kapitel Refactoring Stand: 22..204 "Refactoring" Einstiegs-Beispiel Refactoring: Schritt für Schritt Beispiel: Extract Method Indikationen für
MehrSoftwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel
Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungsblatt 10 - Lösungshilfe Aufgabe 1. CRC-Karten (7 Punkte) Es geht um die Modellierung der folgenden Bibliotheks-Anwendung:
MehrRefactoring. Dominique Steiner 1 und Monica De Donato 2. dedom1@bfh.ch
Refactoring Dominique Steiner 1 und Monica De Donato 2 1 Berner Fachhochschule Technik und Informatik, 2502 Biel, CH, steid3@bfh.ch, 2 Berner Fachhochschule Technik und Informatik, 2502 Biel, CH, dedom1@bfh.ch
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
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollsttukturen - 1 - 3. Anweisungen und Kontrollstrukturen
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
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
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
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;
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)
MehrEinstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung
MehrPolymorphismus 44. Function.hpp. #include <string>
Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class
MehrJava-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt
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
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
Mehr3. Übungsbesprechung Programmkonstruktion
3. Übungsbesprechung Programmkonstruktion Karl Gmeiner karl@complang.tuwien.ac.at November 16, 2011 K Gmeiner (karl@complang.tuwien.ac.at) 3. Übungsbesprechung PK November 16, 2011 1 / 22 Rückblick und
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
MehrJava Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.
Java Übung Übung 3 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 2. Mai 2006 (UniDUE) 2. Mai 2006 1 / 17 Aufgabe 1 Umwandeln von do while in for Schleife. Listing 1: aufgabe3 1.java 1 public
MehrPrüfung Softwareentwicklung I (IB)
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 1 B Wintersemester 2017/18 Prüfung Softwareentwicklung I (IB) Datum : 01022018, 14:30 Uhr Bearbeitungszeit
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Lehrstuhl für Programmierparadigmen Fortgeschr. Objektorientierung SS 2009 http://pp.info.uni-karlsruhe.de/ Dozent: Prof. Dr.-Ing. G. Snelting snelting@ipd.info.uni-karlsruhe.de
MehrSoftwareentwicklung II (IB) Blatt 4. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Softwareentwicklung II (IB) Blatt 4 Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 19.05.2018 23:27 Abgabe der Aufgabe auf diesem Blatt: bis 13.06.18, 08:00 Uhr durch Pushen
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
MehrTechnische Universität München WiSe 2018/19 Fakultät für Informatik Übungsblatt 6 Dr. Ch. Herzog 26. November 2018
Technische Universität München WiSe 2018/19 Fakultät für Informatik Übungsblatt 6 Dr. Ch. Herzog 26. November 2018 Übungen zu Grundlagen der Programmierung Aufgabe 19 (Lösungsvorschlag) Rekursive Datenstruktur
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt!! 24.03.2014 ORGANISATORISCHES 09:00-10:30! Täglich Übungen zur Vertiefung! Laptop hier nicht erforderlich! Linux, OS X! Freitag: http://hhu-fscs.de/linux-install-party/
MehrSpracherweiterungen in Java 5
Spracherweiterungen in Java 5 Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe 17. April 2008 Spracherweiterungen in Java 5 Generics (s. Vorlesung) Annotations Enumerations Methoden
MehrTECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK
ECHNISCHE UNIVERSIÄ MÜNCHEN FAKULÄ FÜR INFORMAIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2007/2008 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 9 F. Forster,. Gawlitza,
MehrÜbungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
MehrProgrammierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder
Prof. aa Dr. J. Giesl M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Aufgabe 1 (Programmanalyse): (9 + 1 = 10 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu
MehrJava - Programmierung - Prozedurale Programmierung 1
Java - Programmierung - Prozedurale Programmierung 1 // elementare Datentypen public class el_dt public static void main(string args []) byte b = 127; short s = 32767; int i = 2147483647; long l = 9223372036854775807L,
MehrJava für Anfänger Teil 4: Anweisungen. Programmierkurs Manfred Jackel
Java für Anfänger Teil 4: Anweisungen Programmierkurs 11.-15.10.2010 Manfred Jackel Anweisungen Werzuweisung (hatten wir schon) Verzweigung Fallunterscheidung Schleifen Methodenaufruf Wiederholung: Klassendeklaration
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Überblick Parametrisierte Datentypen mit Java Generics Java Collections Framework Parametrisierte
MehrMusterübung 09: Vererbung und Dynamische Bindung
Musterübung 09: Vererbung und Dynamische Bindung Abgabetermin: TT.MM.JJJJ Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Hofer) G4 (Angerer) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben
MehrEinführung in die Systemprogrammierung
Einführung in die Systemprogrammierung Virtuelle Methodentabellen Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 9. Juli 2015 Struktur der Objektorientierung Ein wenig Java: public
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/
MehrII.3.1 Rekursive Algorithmen - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -
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,
MehrProgrammierung für Mathematik HS10 Übung 8
Department of Informatics software evolution & architecture lab Programmierung für Mathematik HS10 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code
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
MehrÜbungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2018 Prof. Dr. Wolfram Burgard Andreas Kuhner Daniel Büscher Übungsblatt 13 Abgabe / Besprechung
MehrLösung der Übungsaufgabenserie 12 Grundlagen der Informatik und Numerik
Lösung der Übungsaufgabenserie 12 Grundlagen der Informatik und Numerik 1. Tangens.java, Cotangens.java, TanCotVergleich.java zu (a) DifferenzierbareFunktion Tangens + wert(double): double + wertersteableitung(double):
MehrPolymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
MehrProgrammiermethodik 3. Klausur Lösung
Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung
MehrJava Einführung Vererbung und Polymorphie. Kapitel 13
Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort
Mehrclass BahnTest2 { public static void main(string[] args) { Zug myice = new Zug("ICE Duisburg", 1200, 0, 50); BahnCardFahrer kunde2 = new BahnCardFahre
class BahnTest2 { public static void main(string[] args) { Zug myice = new Zug("ICE Duisburg", 1200, 0, 50); BahnCardFahrer kunde2 = new BahnCardFahrer(args[0], myice, (new Integer(args[1])).intValue());
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.
MehrALP II Dynamische Datenmengen
ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung
MehrGrafische Benutzeroberflächen mit Swing (2)
Grafische Benutzeroberflächen mit Swing (2) Jan Krüger jkrueger@techfak.uni-bielefeld.de Vorweg Mehr Praktische Übung als Vorlesung Prinzip des MVC anhand des Beispiel eines Taschenrechners. Ganz Wichtig
MehrKapitel 9 Schnittstellen
Kapitel 9 Schnittstellen Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Agenda Was ist eine Schnittstelle?
MehrAnweisungen zur Ablaufsteuerung
Anweisungen zur Ablaufsteuerung if-else switch while do-while for Ausdrücke Ein Ausdruck ist eine Folge von Variablen, Operatoren und Methodenaufrufen, der zu einem einzelnen Wert ausgewertet wird. Operanden
MehrÜbung 09: Vererbung und Dynamische Bindung
Übung 09: Vererbung und Dynamische Bindung Abgabetermin: TT.MM.JJJJ Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) G4 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
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/
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]
MehrArten von Klassen-Beziehungen
Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant
MehrStädtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode
Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode folgt im Anschluss. Beispielcode Es gibt eine Klasse Benutzerverwaltung, welche eine Liste mit Benutzern
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG GRUNDLAGEN Tobias Witt 24.03.2014 ORGANISATORISCHES tobias.witt@hhu.de 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber später in den Übungen!
MehrAllgemeines - Prinzipien
OOP - Prinzipien Allgemeines - Prinzipien OO modelliert die reale Welt als System interagierender Objekte Objekt = gedankliche oder reale Einheit in der Umwelt und/oder in Software Klar definierte Schnittstellen
MehrKapitel 11 Refactoring
Vorlesung Softwaretechnologie Wintersemester 20 R O O T S Kapitel Refactoring Stand: 25..202 "Refactoring" Einstiegs-Beispiel Refactoring: Schritt für Schritt Beispiel: Extract Method Indikationen für
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Verkettung der Überläufer) Prof. Dr. Susanne Albers Möglichkeiten der Kollisionsbehandlung Kollisionsbehandlung: Die Behandlung
MehrDomänenspezifische Sprachen
Domänenspezifische Sprachen Agenda: 'Programmiersprachen' 'Domänenspezifische' 'Sprachen' 'Vorteile' 'Technische' 'Erwartungen', 'Xtext' 'Demo'; 'Programmiersprachen' https://tagul.com https://tagul.com
MehrGliederung. Algorithmen und Datenstrukturen II. ADT Graph. ADT Graph. Graphen in JAVA. Klasse Graph Suche Breitensuche Tiefensuche. D.
Gliederung Algorithmen und Datenstrukturen II Graphen in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 20. April
MehrBeispielprüfung CuP WS 2015/2016
Beispielprüfung CuP WS 2015/2016 Univ.-Prof. Dr. Peter Auer 23. Dezember 2015 Informationen zur Prüfung Die Prüfung wird als Multiple-Choice-Test mit 10 Fragen am Computer abgehalten. (Bei manchen Fragen
MehrInstitut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. Januar 2018 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 17. Februar
MehrIT Basics 2 Handout u
IT Basics2Handout9.9.2008u.16.9.2008 FürdasErstellenvonobjektorientiertenProgrammenistesnebendemVerständnisder Objektorientierungauchnötig,einigegrundlegendeKonzeptederProgrammierungzuverstehen. DiesegrundlegendenKonzeptesindThemaderzweitenLehrveranstaltungundteilweiseauchder
Mehr2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)
2. Methoden n Generelles zum Aufruf von Methoden n Parameterübergabemechanismen (call by value, call by reference) n Speicherorganisation bei Methodenaufruf und Parameterübergabe (Laufzeitkeller) n vararg
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
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 1 - Selektoren public class Rechteck
MehrÜbung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301
Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301 Aufgabe 8: Implementierung eines Ereignis-Automaten a) Modellieren Sie einen Ereignis-Automaten für den in der Abbildung dargestellten und in Calculator.java
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
MehrAufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {
Hochschule Harz Programmierung1 Aufgabe 10: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Hashing und Generische Klassen Versuchsziele Kenntnisse
MehrKapitel Was ist ein Header? Was ist ein Body? Header: public Account(String newowner, int newpin)
Kapitel 2.6 1. Was ist ein Header? Was ist ein Body? Header: public Account(String newowner, int newpin) Body: Alles im Block darunter: [...] 2. Geben Sie die Methodensignaturen der TicketMachine (Code
MehrInstitut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Februar 2017 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 13. März
Mehrn 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen
n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 -
MehrAbstrakte Basisklassen
Abstrakte Basisklassen Softwareentwicklung II (IB) Prof. Dr. Oliver Braun Letzte Änderung: 24.06.2018 15:20 Abstrakte Basisklassen 1/18 Idee (1/2) Gegensätze: Interfaces ausschließlich Methodenköpfe, keine
MehrJAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)
JAVA BASICS 2. Primitive Datentypen 1. Warum Java? weit verbreitet einfach und (relativ) sicher keine Pointer (?) keine gotos kein Präprozessor keine globalen Variablen garbage collection objekt-orientiert
MehrEinführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin
Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm
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
Mehr