Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.

Slides:



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

Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Kapselung , toString , equals , Java API
Objektorientierte Programmierung
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
FH-Hof Eine kleine Theorie der Zeit Richard Göbel.
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Modulare Programmierung
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
Einführung in die Programmierung Anweisungen und Datentypen
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Time Notes.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
GERMAN 1013 Kapitel 2 3.
GERMAN 1013 C1 Guten Morgen.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Portabilität Seminar aus Softwareentwicklung: Programmierstil Christine Schiestl WS 02 / 03.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Programmierpraktikum Java SS 2005
Algorithmen und Datenstrukturen SS 2005
EPROG Tutorium #4 Philipp Effenberger
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014 Referenzdatentypen
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Time and Dates. Telling time To ask: What time it is? Wie spät ist es? Wie viel Uhr ist es?
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Algorithmen und Datenstrukturen 1 SS 2002
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Java-Kurs Übung Besprechung der Hausaufgabe
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
 Präsentation transkript:

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold Institut für Wirtschaftsinformatik Software Engineering JKU Linz Termin 7 (Datum, Internationalisierung, Format)

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 2 In der Java Klassenbibliothek existieren mehrere Klassen, sich zur Repräsentation eines Datums, bzw. von Zeitpunkten eignen. Grundsätzlich ist jeder Zeitpunkt in Millisekunden seit dem repräsentiert (vgl. System.currentTimeMillis(), Datentyp long) Zeit und Datumsarithmetik ist rel. komplex. z.B. Schaltjahre, Schaltsekunden(61), Zeitzonen, verschiedene Kalender (Julianisch bis 4.Okt.1582) über die Zeit und in verschiedenen Ländern (hebräischer Kal. 13 Monate), DST Thu Nov 22 01:43:17 GMT+01: = (long) Datum Allgemeines

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 3 Datum Klassen Date Kapselt im wesentlichen einen long-Wert, der einen Zeitpunkt repräsentiert. Früher wurde sie auch zur Konvertierung in Tage. Monate,... verwendet Calendar Abstrakte Oberklasse für Kalender, die zwischen dem long-Wert und Werten für Tag/Monat/Jahr, Stunden/Minuten/Sekunden konvertiert. zB. 28 Feb + 1 Tag = ? GregorianCalendar Einzige konkrete Unterklasse von Calender in der Klassenbibliothek. Realisiert einen Kalender, wie er in den meisten westlichen Ländern verwendet wird alle Klassen befinden sich in java.util

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 4 Die Klasse Date Allgemeines Ein Objekt der Klasse Date repräsentiert ein Datum (bzw. einen Zeitpunkt) als long-Wert (Genauigkeit: 1 Millisekunde) Vor jdk 1.1 wurde es zur Konvertierung zwischen dem long- Wert und den jew. Jahr/Monat/Tag/Stunden/... verwendet Die Konvertierungsmethoden sind mittlerweile als "deprecated" gekennzeichnet (abgeschafft) Der long-Wert ist unabhängig von der jew. Zeitzone zu interpretieren (0 = :00:000 Uhr GMT+00:00 = Thu Jan 01 01:00:00 GMT+01: ) Date implementiert das Interface Comparable

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 5 Die Klasse Date Methoden //construction Date() // current date/time Date(long date) // given date/time in ms since Date(int year, month,...) // deprecated -> use Calendar Date(String date)// deprecated -> use DateFormat // methods after(Date when) before(Date when) compareTo(Object o) // if o is a date -> compares, otherwise // ClassCastException toString()// dow mon dd hh:mm:ss zzz yyyy // default timezone

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 6 Die abstrakte Klasse Calendar Allgemeines Die Calendar-Klasse ist die gemeinsame Oberklasse aller Kalender (dzt. nur GregorianCalendar) Sie kapselt ein Date-Objekt, enthält zahlreiche Feldern, wie Jahr/Monat/Tag/Stunden/... und definiert Funktionen zur Konvertierung Konvertierung erfolgt in Abhängigkeit einer Zeitzone (der des Systems, falls nichts anderes bestimmt) zB. 28. Feb Tag = ??

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 7 Die abstrakte Klasse Calendar Methoden //static methods getInstance() // static!, creates an object of a subclass //,depending on default timezone, locale getInstance(TimeZone z)... // methods set(int field, int value)// sets a field (e.g. MONTH) get(int field):int// gets the value of a field add(int field, int amount)// adds to a field; larger fields // may change eg DAY roll(int field, int amount) // adds, larger fields don´t change getActualMaximum(int field)// max, given the current date getActualMinimum(int field) // min getTime():Date// gets a Date (milliseconds!) setTime(Date d)// sets the internal Date

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 8 Die abstrakte Klasse Calendar Konstanten (bzw. Felder zur Konvertierung) //static constants, field names ERAERA// 0-1, BC (before Christ), AD (anno domini) YEAR// MONTH // Month – DAY_OF_MONTH// HOUR// HOUR_OF_DAY// MINUTE// SECOND// MILLISECOND// AM_PM// 0..1 WEEK_OF_YEAR// WEEK_OF_MONTH // 0..6 DAY_OF_YEAR// DAY_OF_WEEK // see documentation

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 9 Die Klasse GregorianCalendar Allgemeines Einzige Unterklasse von Calendar in der Bibliothek Realisiert den z.B. in Ö üblichen gregorianischen Kalender' Implementiert sogar den Kalenderwechsel am 4. Okt (Julianischer Kalender -> Gregorianischer) Objekte dieser Klasse erhält man mit Calendar.getInstance() in den meisten westlichen Ländern Details sind rel. kompliziert. Siehe Referenz-Dokumentation des JDK. Feiertage werden nicht verwaltet !

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 10 Kalender Beispiel //22. Nov Calendar cal = Calendar.getInstance(); //now, defaults used System.out.println(cal.get(Calendar.DAY_OF_YEAR)); // 326 System.out.println(cal.get(Calendar.DAY_OF_WEEK)); // 5 System.out.println(cal.get(Calendar.DAY_OF_MONTH));// 22 System.out.println(cal.getActualMaximum(Calendar.DAY_OF_MONTH)); // 30 cal.add(Calendar.MONTH, 1); System.out.println(cal.get(Calendar.DAY_OF_YEAR)); // 356 System.out.println(cal.get(Calendar.DAY_OF_WEEK)); // 7 System.out.println(cal.get(Calendar.DAY_OF_MONTH));// 22 System.out.println(cal.getActualMaximum(Calendar.DAY_OF_MONTH)); // 31 //difficult without a calendar object!

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 11 Internationalisierung Einleitung Internationalisierung ist der Prozeß, ein Programm so zu gestalten, daß es international lauffähig ist, also in mehreren Ländern korrekt läuft Bereits bisher sind wir einige Male auf Probleme gestoßen, die mit Internationalisierung zusammenhängen: Readers, Character Encodings (z.B. Umlaute,...) Unicode Calendar, TimeZone Besonders wichtig ist, daß international lauffähige Programme z.B. Meldungen in Landessprache ausgeben (!!) und das Datums/Währungsformat berücksichtigen

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 12 Internationalisierung Allgemeines Dasselbe Programms soll also, je nachdem in welchem Land es gestartet wird, die länderspezifischen Gegebenheiten berücksichtigen. Dazu gibt es eine Reihe von Klassen in der Klassenbibliothek, die dies unterstützen. Grundsätzlich muß das Programm zunächst wissen, in welchem Land es gerade läuft. Dies wird aus dem Betriebssystem ausgelesen. Nicht jedes Programm wird so geschrieben, daß es international lauffähig ist.

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 13 Internationalisierung Relevante Klassen java.util.Locale Repräsentiert ein Gebietsschema (Land) (zB. de_AT, en_US, fr_FR,...) Locale.getDefault() java.util.TimeZone java.text – Package Formatierung von Zahlen-, Datums-, Zeitwerten,... Länderspezifischer Vergleich von Zeichenketten (zB. ch in Spanien),... NumberFormat DateFormat MessageFormat Collator (Zeichenkettenvergleich) java.util.ResourceBundle Ausgabe von länderspezifischem Text (zb Deutsch, English) und weitere (Readers/Writers, Calendar,...)

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 14 Internationalisierung Beispiel Locale String formattedDate; DateFormat df = DateFormat.getDateTimeInstance(); Date d = new Date(); Locale loc = Locale.getDefault(); formattedDate = df.format(d); System.out.println("Locale: " + loc + " FormattedDate: " + formattedDate); // set Japan as JVM-wide Default Locale.setDefault(Locale.JAPAN); loc = Locale.getDefault(); df = DateFormat.getDateTimeInstance(); formattedDate = df.format(d); System.out.println("Locale: " + loc + " FormattedDate: " + formattedDate); // output: // Locale: de_AT FormattedDate: :07:11 // Locale: ja_JP FormattedDate: 2001/11/22 23:07:11 // TimeZone was not changed !

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 15 Internationalisierung Beispiel Timezone String formattedDate; DateFormat f = DateFormat.getDateTimeInstance(); Date d = new Date(); TimeZone zone = TimeZone.getDefault(); formattedDate = f.format(d); System.err.println("Zone: " + zone.getID() + " FormattedDate: " + formattedDate); TimeZone.setDefault(TimeZone.getTimeZone(TimeZone.getAvailableIDs()[0])); zone = TimeZone.getDefault(); f = DateFormat.getDateTimeInstance(); formattedDate = f.format(d); System.err.println("Zone: " + zone.getID() + " FormattedDate: " + formattedDate); // output: // Zone: Europe/Berlin FormattedDate: :14:12 // Zone: Pacific/Niue FormattedDate: :14:12

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 16 Die Klasse Locale Übersicht Objekte dieser Klasse repräsentieren eine geographische, politische oder kulturelle Region Locale-Objekte können keine besonderen Operationen ausführen. Sie identifizieren lediglich eine Region. Klassen, die länderspezifische Formatierungen oder Ausgaben erzeugen, nutzen diese Identifizierung. Java verwendet eine Default-Locale, die vom Gebietsschema des Betriebssystems abgeleitet wird. Diese wird auch von anderen Klassen zur Formatierung herangezogen. Man kann jedoch wie in vorigem Beispiel ersichtlich ein anderes Locale-Objekt als Default setzen Die Klasse Locale definiert eine Reihe von Konstanten zB Locale.SPAIN

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 17 Die Klasse TimeZone Übersicht Objekte dieser Klasse repräsentieren eine Zeitzone. Diese enthält nicht nur den Offset, sondern spezifiziert auch Anfang und Ende der DST (Sommerzeit) Die Klasse DateFormat, der Kalender,... nutzen diese Identifizierung. Java verwendet eine Default-TimeZone, die vom Gebietsschema des Betriebssystems abgeleitet wird. Man kann jedoch wie in vorigem Beispiel ersichtlich ein anderes TimeZone-Objekt als Default setzen

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 18 java.text Übersicht Dieses package enthält zahlreiche Klassen zur Formattierung von Zahlen und Datumswerten zum Vergleich von Zeichenketten (länderspezifisch zB ch – Spanien) und weitere Die Formattierung erfolgt länderspezifisch. Welche Regionen von einer Klasse unterstützt werden kann durch Aufruf von getAvailableLocales():Locale[] erfragt werden

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 19 java.text Hierarchie von relevanten Klassen Format NumberFormatDateFormat DecimalFormatSimpleDateFormat Collator

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 20 DateFormat Methoden // Creation of subclass Objects via DateFormat getDateInstance():DateFormat// default locale, default style getTimeInstance():DateFormat getDateTimeInstance():DateFormat getXXXInstance(int style, Locale l) // Constants for Style // SHORT, MEDIUM, LONG... format(Date):String// Formatting parse(String):Date// Parsing (style !!)... getAvailableLocales(): Locale[] // if You need more control over parsing and formatting use // the SimpleDateFormat class

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 21 NumberFormat Methoden // Creation of subclass Objects via NumberFormat getInstance():NumberFormat// default locale, default style getCurrencyInstance():NumberFormat getDateTimeInstance():NumberFormat getNumberInstance():NumberFormat getPercentageInstance():NumberFormat getXXXInstance(Locale l) // for a given locale... format(long):String// Formatting format(double):String// Formatting parse(String):Number// Parsing (style !!) setParseIntegerOnly(boolean) // only Integers getAvailableLocales():Locale[] // if You need more control over parsing and formatting use // the subclass DecimalFormat (pattern)

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 22 Collator Methoden // Creation of subclass Objects via NumberFormat getInstance():Collator // default locale, default style getInstance(Locale l):Collator // for a given locale... compare(String source, String target):int compare(Object o1, Object o2):int // Collator implements Comparator ! // -> you can and should use it for sorting

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 23 Zusammenfassung Klassen zur Internationalisierung java.util.Locale Repräsentiert ein Gebietsschema (Land) (zB. de_AT, en_US, fr_FR,...) Locale.getDefault() java.util.TimeZone java.text – Package Formatierung von Zahlen-, Datums-, Zeitwerten,... Länderspezifischer Vergleich von Zeichenketten (zB. ch in Spanien),... NumberFormat DateFormat MessageFormat Collator (Zeichenkettenvergleich) java.util.ResourceBundle Ausgabe von länderspezifischem Text (zb Deutsch, English)

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 24 Zusammenfassung Hinweise zur Übung