Abteilung für Telekooperation Übung Softwareentwicklung 2 für Wirtschaftsinformatik Dr. Wieland Schwinger

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Objektorientierte Programmierung
der Universität Oldenburg
Klassen - Verkettete Liste -
Einführung in die Informatik: Programmierung und Software-Entwicklung
Zusammenfassung des Kapitels 8
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Binäre Bäume Richard Göbel.
Java: Dynamische Datentypen
Listen Richard Göbel.
Java: Grundlagen der Objektorientierung
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 3 Claudio Moraga, Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Objektorientierte Programmierung JDK-Klassenbibliothek
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Modulare Programmierung
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
08-GraphikImplementierung Implementierung der Graphik in EMMA301Paint.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
Einführung in die Programmierung Datensammlung
Einführung in die Programmierung Anweisungen und Datentypen
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
Verzweigung.
FH-Hof Sortieren mit Binären Bäumen Richard Göbel.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Rekursive Funktionen (Fakultät)
Java Performance Tuning Performance Tuning is similar to playing a strategy game but happily you usually get paid for it.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik WS 200^8 Dr. Wieland Schwinger
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Klassendefinitionen in Java
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Raimond Reichert Einführung in die Verwendung von Processing innerhalb von Eclipse.
Grundlagen der Programmierung
Einführung in die Programmierung
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Algorithmen und Datenstrukturen Übungsmodul 6
Equals, Hashcode und CompareTo Micha Kessler
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Variablenkonzept Klassisch, in Java Basistyp
Algorithmen und Datenstrukturen SS 2005
Common Language Runtime Seminar Softwareentwicklung Wintersemester 2003 Gertraud Orthofer
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Aufgaben zu Rückgabewerten
Grundkurs Informatik mit Java
 Präsentation transkript:

Abteilung für Telekooperation Übung Softwareentwicklung 2 für Wirtschaftsinformatik Dr. Wieland Schwinger

Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Motivation - Konstanten // Konstanten Bsp1 public static final int SEASON_WINTER = 0; public static final int SEASON_SPRING = 1; public static final int SEASON_SUMMER = 2; public static final int SEASON_FALL = 3; // Konstanten Bsp2 public static final int COLOR_RED = 0; public static final int COLOR_BLUE = 1; public static final int COLOR_YELLOW = 2; public static final int COLOR_GREEN = 3; … int giveNextColor(int color) { if (color==COLOR_RED) return COLOR_BLUE; if (color==COLOR_BLUE) return COLOR_YELLOW; if (color==COLOR_YELLOW) return COLOR_GREEN; if (color==COLOR_GREEN) return COLOR_RED; }

Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Motivation - Probleme Nicht Typsicher: Konstanten sind "nur" Integer, dh. die Methode getNextColor(int color) akzeptiert jeden Integerwert auch jene, die nicht dazu gedacht sind eine Farbe zu repräsentieren. Kein Namensraum: Der Programmierer muss durch entsprechende Prefixes sicherstellen, dass sich die Konstenanten-Namen nicht überschneiden. Z.B. SEASON_ oder COLOR_ Wissen über Konstanten liegt auch bei der Verwendung: Werden die Konstanten z.B. in Form einer Reihenfolge verwendet, dann führt ein hinzufügen einer neuen Konstante dazu, dass z.B. Methoden, welche die Konstanten-Reihenfolge verwenden, diese ebenfalls neu berücksichtigen müssen. Z.B.: wenn die Farbe COLOR_BLACK = -1 vor COLOR_RED eingefügt werden soll, dann muss die Methode getNextColor dies richtig berücksichtigen. Zahlen haben per se keine Information: Die Zahl 1 sagt nichts über die Farbe aus, die sie repräsentiert. Es ist nicht gegenben, dass COLOR_ ein Typ ist.

Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ ENUMS // Enum Bsp1 public enum Season {WINTER, SPRING, SUMMER, FALL}; // Enum Bsp2 public enum Color2 {RED, BLUE, YELLOW, GREEN static void printAll() { for (Color2 c : Color2.values()) IO.writeln("Name: "+ c.name()); } static Color2 getNextColor(Color2 color) { boolean takeNext = false; for (Color2 c : Color2.values() ) { if (takeNext) { System.out.println("Next: " + c.name()); return c; } if (c == color) takeNext = true; } return null; }

Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ ENUMS // Enum Bsp2 (alternative) public enum Color2 { RED, BLUE, YELLOW, GREEN; static void printAll() { for (Color2 c : Color2.values()) IO.writeLn("Name: "+ c.name()); } static Color2 getNextColor2(Color2 color) { if (Color2.values().length <= color.ordinal()) return null; return Color2.values()[color2.ordinal()%color2.values().length]; } public static void main(String[] args) { printAll(); Color2 c = getNextColor2(BLUE); if (c!=null) System.out.println("NEXT: " + c.name()); }

Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ ENUMS public enum Planet { MERCURY (3.303e+23, e6), VENUS (4.869e+24, e6), EARTH (5.976e+24, e6), MARS (6.421e+23, e6), JUPITER (1.9e+27, e7), SATURN (5.688e+26, e7), URANUS (8.686e+25, e7), NEPTUNE (1.024e+26, e7), PLUTO (1.27e+22, 1.137e6); private final double mass; // in kilograms private final double radius; // in meters Planet(double mass, double radius) { this.mass = mass; this.radius = radius; } public double mass() { return mass; } public double radius() { return radius; } // universal gravitational constant (m3 kg-1 s-2) public static final double G = E-11; public double surfaceGravity() { return G * mass / (radius * radius); } public double surfaceWeight(double otherMass) { return otherMass * surfaceGravity(); } }

Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ MenuOptions public enum MenuOption { NO_OPTION, QUIT, INSERT, FIRST, NEXT, SEARCH, CHAR_STARTING; private static final char[] MENU_OPTIONS = {' ', 'q', 'i', 'f', 'n', 's', 'c'}; public MenuOption nextOption() { return MenuOption.values()[(this.ordinal()+1)%MenuOption.value s().length]; } public static MenuOption getOption(char op) { if (!validOption(op)) return NO_OPTION; return MenuOption.values()[getIndexOfOption(op)]; } private static int getIndexOfOption(char op) { int i=0; for (i = 1; i < MenuOption.values().length; i++) { if (op == MENU_OPTIONS[i]) return i; I++; } return -1; } public char getCharOption() { return MENU_OPTIONS[this.ordinal()]; } public MenuOption quitOption() { return QUIT; } public static boolean validOption(char op) { for (int i = 1; i < MENU_OPTIONS.length; i++) { if (op == MENU_OPTIONS[i]) return true; } return false; } public static String getOptions() { if (MENU_OPTIONS.length < 0) return ""; StringBuffer options = new StringBuffer("["); String seperator = ""; for (int i = 1; i < MENU_OPTIONS.length; i++) { options.append(seperator + MENU_OPTIONS[i]); seperator = "|"; } options.append("]"); return options.toString(); } public static boolean proceed(char op) { return (getOption(op) != QUIT); }