Hi
ich habe eine kleine Aufgabe bekommen
und komme damit nicht klar , weil ich nicht so gut in Java bin
Transport Manager
Gesamtziel
Ziel dieses Aufgabenblocks ist es, eine Datenhaltung eines (australischen) Fuhrunternehmens zu implementieren. Das Unternehmen möchte die Fahrten (Aufträge) der verfügbaren Fahrzeuge (Kühltrucks, Tiertransporter usw.) mithilfe einer zentralen Datenhaltung verwalten können.
Die Wiederverwendung bereits implementierter Klassen ist dabei vorgesehen. Sollten in späteren Teilaufgaben Klassen aus vorherigen Aufgabenteilen benötigt werden, werden diese jedoch NICHT zur Verfügung gestellt. Das heißt spätestens dann sollten Ihre eigenen Klassen lauffähig sein.
Zeitpunkte
Zwischenziel: Verwendung von Java-Bibliotheksklassen, Entwurfsmuster Adapter
Zum Einstieg, beginnen wir mit einer Klasse für die Darstellung von Zeitpunkten. Jede spätere Fahrt/Auslieferung findet zu einem bestimmten Zeitpunkt, der sich aus einem Datum und einer Zeitangabe (Stunden und Minuten) zusammensetzt, statt.
Dabei soll die Java-Bibliotheksklasse java.util.GregorianCalendar mithilfe des Entwurfsmusters Adapter gekapselt werden, um genau nur die Schnittstelle zur Verfügung zu stellen, die im Rahmen dieser Aufgabe benötigt wird. Konkret bedeutet das, dass die Klasse CustomDate ein Attribut vom Typ GregorianCalendar besitzt, welches eine Referenz auf eine Instanz von GregorianCalendar darstellt. Berechnungen werden über dieses Attribut an die Klasse GregorianCalendar delegiert.
Erstellen Sie die öffentliche Klasse CustomDate im Paket jpp.tourManager.date welche das Interface java.lang.Comparable< CustomDate > implementiert. Diese Klasse modelliert einen Zeitpunkt indem sie eine Instanz der Klasse GregorianCalendar kapselt und Anfragen an dieses Objekt weiterleitet.
Sie soll neben dem Referenz-Attribut vom Typ GregorianCalendar mindestens die folgende Schnittstelle bereitstellen:
*
public CustomDate()
Default-Konstruktor; erzeugt ein neues Default-Zeitpunkt-Objekt. Dafür wird das GregorianCalendar Attribut initialisiert. Als Default-Zeitpunkt gilt immer das aktuelle Datum und der Zeitpunkt der Initialisierung.
*
public CustomDate(java.util.Date other)
Konstruktor; erzeugt ein neues Zeitpunkt-Objekt. Dafür wird das GregorianCalendar Attribut mit den Werten aus other initialisiert. Sie dürfen hier davon ausgehen, dass nur gültige Date-Objekte übergeben werden, dh. es müssen keine Ausnahmen abgefangen werden.
*
public CustomDate (int year, int month, int day, int hour, int minute)
erzeugt ein neues Zeitpunkt-Objekt. Dafür wird das GregorianCalendar Attribut mit den übergebenen Werten initialisiert Sie dürfen hier davon ausgehen, dass nur gültige Werte übergeben werden, dh. es müssen keine Ausnahmen abgefangen werden.
*
public boolean isLeapYear ( int year )
gibt true zurück, wenn year ein Schaltjahr ist. Delegieren Sie den Methodenaufruf an das GregorianCalendar Objekt. Dabei soll bei year = 0 grundsätzlich false zurückgegeben werden.
Hinweis: GregorianCalendar gibt hier standardmäßig true zurück!
*
public boolean equalsDayOnly ( CustomDate other )
liefert, ob zwei Zeitpunkt-Objekte auf den gleichen Zeitpunkt (keine Referenzgleichheit!) verweisen. In dieser Variante soll die Uhrzeit unberücksichtigt bleiben, dh 02.05.2009 16:30h und 02.05.2009 18:01 gelten als gleich! Behandeln Sie den Fall, dass other null sein kann. Delegieren Sie den Methodenaufruf in geeigneter Weise an GregorianCalendar.
Hinweis: GregorianCalendar vergleicht Zeitpunkte IMMER einschließlich der Uhrzeit!
*
public boolean equals(Object obj)
liefert, ob zwei Zeitpunkt-Objekte auf den gleichen Zeitpunkt (Jahr, Monat, Tag, Stunde und Minute) verweisen. Diesmal soll auch die Uhrzeit berücksichtigt werden. Behandeln Sie den Fall, dass other null oder von einem anderen Typ sein kann gemäß der Definition in java.lang.Object. Delegieren Sie den Methodenaufruf in geeigneter Weise an GregorianCalendar.
*
public int hashCode( )
berechnet einen Hashcode für eine Instanz der Klasse CustomDate. Beachten Sie hier die Definition gemäß java.lang.Object.
*
public int compareTo(CustomDate o)
vergleicht zwei Instanzen der Klasse CustomDate. Beachten Sie hier die Definition gemäß java.lang.Comparable und achten Sie auf Konsistenz mit der Methode equals(Object).
*
public boolean before ( CustomDate other )
gibt true zurück, wenn der Zeitpunkt des aufrufenden Objektes vor dem Zeitpunkt other liegt, false sonst. Delegieren Sie den Methodenaufruf in geeigneter Weise an GregorianCalendar.
*
public boolean after ( CustomDate other )
gibt true zurück, wenn das Zeitpunkt des aufrufenden Objekts nach other liegt, false sonst. Delegieren Sie den Methodenaufruf in geeigneter Weise an GregorianCalendar.
*
public String toString ( )
liefert eine String-Repräsentation des aufrufenden Objekts nach folgender Regel: Wochentag, Tag.Monat.Jahr(4-stellig) Stunde:Minute AM/PM. Ein beispielhaft formatierter Zeitpunkt ist Friday, 05.06.2009 10:00 PM
Hinweis: Verwenden Sie die Klasse java.text.SimpleDateFormat sowie Locale.ENGLISH in geeigneter Weise.
*
public void addMinutes ( int value ) / public void addHours ( int value ) / public void addDays ( int value )
Schreiben Sie jeweils eine Methode, welche value zu den Minuten, Stunden oder Tagen eines Zeitpunktes hinzuaddiert. Delegieren Sie den Methodenaufruf an GregorianCalendar.
*
public int getYear ( ) / public int getMonth ( ) / public int getDay ( ) / public int getHour ( ) / public int getMinute ( )
Schreiben Sie jeweils eine Methode, welche Wert für Jahr, Monat, Tag, Stunde und Minute einzeln zurückgibt. Delegieren Sie den Methodenaufruf an GregorianCalendar.
*
public GregorianCalendar getDateRep ( )
Diese Methode liefert das Referenzobjekt auf GregorianCalendar.
Hinweis: Beachten Sie eine Besonderheit von GregorianCalendar - diese Klasse führt die Monatszählung (und NUR die Monatszählung!!!) 0-basiert durch. Das heißt, eine Übergabe von 1 als Monat erzeugt bereits den Monat FEBRUAR!.
In der Implementierung von CustomDate soll jedoch die Monatszählung ganz 'normal' erfolgen, d.h. bei einer Übergabe von 1 soll der Monat JANUAR erzeugt werden. Finden Sie ein geeignetes Workaround. Dies betrifft vor allem die Methoden zum auslesen des Monats bzw der Erzeugung einer geeigneten String-Repräsentation.
kann mir jamand beim starten helfen ?!!!!
ich habe eine kleine Aufgabe bekommen
und komme damit nicht klar , weil ich nicht so gut in Java bin
Transport Manager
Gesamtziel
Ziel dieses Aufgabenblocks ist es, eine Datenhaltung eines (australischen) Fuhrunternehmens zu implementieren. Das Unternehmen möchte die Fahrten (Aufträge) der verfügbaren Fahrzeuge (Kühltrucks, Tiertransporter usw.) mithilfe einer zentralen Datenhaltung verwalten können.
Die Wiederverwendung bereits implementierter Klassen ist dabei vorgesehen. Sollten in späteren Teilaufgaben Klassen aus vorherigen Aufgabenteilen benötigt werden, werden diese jedoch NICHT zur Verfügung gestellt. Das heißt spätestens dann sollten Ihre eigenen Klassen lauffähig sein.
Zeitpunkte
Zwischenziel: Verwendung von Java-Bibliotheksklassen, Entwurfsmuster Adapter
Zum Einstieg, beginnen wir mit einer Klasse für die Darstellung von Zeitpunkten. Jede spätere Fahrt/Auslieferung findet zu einem bestimmten Zeitpunkt, der sich aus einem Datum und einer Zeitangabe (Stunden und Minuten) zusammensetzt, statt.
Dabei soll die Java-Bibliotheksklasse java.util.GregorianCalendar mithilfe des Entwurfsmusters Adapter gekapselt werden, um genau nur die Schnittstelle zur Verfügung zu stellen, die im Rahmen dieser Aufgabe benötigt wird. Konkret bedeutet das, dass die Klasse CustomDate ein Attribut vom Typ GregorianCalendar besitzt, welches eine Referenz auf eine Instanz von GregorianCalendar darstellt. Berechnungen werden über dieses Attribut an die Klasse GregorianCalendar delegiert.
Erstellen Sie die öffentliche Klasse CustomDate im Paket jpp.tourManager.date welche das Interface java.lang.Comparable< CustomDate > implementiert. Diese Klasse modelliert einen Zeitpunkt indem sie eine Instanz der Klasse GregorianCalendar kapselt und Anfragen an dieses Objekt weiterleitet.
Sie soll neben dem Referenz-Attribut vom Typ GregorianCalendar mindestens die folgende Schnittstelle bereitstellen:
*
public CustomDate()
Default-Konstruktor; erzeugt ein neues Default-Zeitpunkt-Objekt. Dafür wird das GregorianCalendar Attribut initialisiert. Als Default-Zeitpunkt gilt immer das aktuelle Datum und der Zeitpunkt der Initialisierung.
*
public CustomDate(java.util.Date other)
Konstruktor; erzeugt ein neues Zeitpunkt-Objekt. Dafür wird das GregorianCalendar Attribut mit den Werten aus other initialisiert. Sie dürfen hier davon ausgehen, dass nur gültige Date-Objekte übergeben werden, dh. es müssen keine Ausnahmen abgefangen werden.
*
public CustomDate (int year, int month, int day, int hour, int minute)
erzeugt ein neues Zeitpunkt-Objekt. Dafür wird das GregorianCalendar Attribut mit den übergebenen Werten initialisiert Sie dürfen hier davon ausgehen, dass nur gültige Werte übergeben werden, dh. es müssen keine Ausnahmen abgefangen werden.
*
public boolean isLeapYear ( int year )
gibt true zurück, wenn year ein Schaltjahr ist. Delegieren Sie den Methodenaufruf an das GregorianCalendar Objekt. Dabei soll bei year = 0 grundsätzlich false zurückgegeben werden.
Hinweis: GregorianCalendar gibt hier standardmäßig true zurück!
*
public boolean equalsDayOnly ( CustomDate other )
liefert, ob zwei Zeitpunkt-Objekte auf den gleichen Zeitpunkt (keine Referenzgleichheit!) verweisen. In dieser Variante soll die Uhrzeit unberücksichtigt bleiben, dh 02.05.2009 16:30h und 02.05.2009 18:01 gelten als gleich! Behandeln Sie den Fall, dass other null sein kann. Delegieren Sie den Methodenaufruf in geeigneter Weise an GregorianCalendar.
Hinweis: GregorianCalendar vergleicht Zeitpunkte IMMER einschließlich der Uhrzeit!
*
public boolean equals(Object obj)
liefert, ob zwei Zeitpunkt-Objekte auf den gleichen Zeitpunkt (Jahr, Monat, Tag, Stunde und Minute) verweisen. Diesmal soll auch die Uhrzeit berücksichtigt werden. Behandeln Sie den Fall, dass other null oder von einem anderen Typ sein kann gemäß der Definition in java.lang.Object. Delegieren Sie den Methodenaufruf in geeigneter Weise an GregorianCalendar.
*
public int hashCode( )
berechnet einen Hashcode für eine Instanz der Klasse CustomDate. Beachten Sie hier die Definition gemäß java.lang.Object.
*
public int compareTo(CustomDate o)
vergleicht zwei Instanzen der Klasse CustomDate. Beachten Sie hier die Definition gemäß java.lang.Comparable und achten Sie auf Konsistenz mit der Methode equals(Object).
*
public boolean before ( CustomDate other )
gibt true zurück, wenn der Zeitpunkt des aufrufenden Objektes vor dem Zeitpunkt other liegt, false sonst. Delegieren Sie den Methodenaufruf in geeigneter Weise an GregorianCalendar.
*
public boolean after ( CustomDate other )
gibt true zurück, wenn das Zeitpunkt des aufrufenden Objekts nach other liegt, false sonst. Delegieren Sie den Methodenaufruf in geeigneter Weise an GregorianCalendar.
*
public String toString ( )
liefert eine String-Repräsentation des aufrufenden Objekts nach folgender Regel: Wochentag, Tag.Monat.Jahr(4-stellig) Stunde:Minute AM/PM. Ein beispielhaft formatierter Zeitpunkt ist Friday, 05.06.2009 10:00 PM
Hinweis: Verwenden Sie die Klasse java.text.SimpleDateFormat sowie Locale.ENGLISH in geeigneter Weise.
*
public void addMinutes ( int value ) / public void addHours ( int value ) / public void addDays ( int value )
Schreiben Sie jeweils eine Methode, welche value zu den Minuten, Stunden oder Tagen eines Zeitpunktes hinzuaddiert. Delegieren Sie den Methodenaufruf an GregorianCalendar.
*
public int getYear ( ) / public int getMonth ( ) / public int getDay ( ) / public int getHour ( ) / public int getMinute ( )
Schreiben Sie jeweils eine Methode, welche Wert für Jahr, Monat, Tag, Stunde und Minute einzeln zurückgibt. Delegieren Sie den Methodenaufruf an GregorianCalendar.
*
public GregorianCalendar getDateRep ( )
Diese Methode liefert das Referenzobjekt auf GregorianCalendar.
Hinweis: Beachten Sie eine Besonderheit von GregorianCalendar - diese Klasse führt die Monatszählung (und NUR die Monatszählung!!!) 0-basiert durch. Das heißt, eine Übergabe von 1 als Monat erzeugt bereits den Monat FEBRUAR!.
In der Implementierung von CustomDate soll jedoch die Monatszählung ganz 'normal' erfolgen, d.h. bei einer Übergabe von 1 soll der Monat JANUAR erzeugt werden. Finden Sie ein geeignetes Workaround. Dies betrifft vor allem die Methoden zum auslesen des Monats bzw der Erzeugung einer geeigneten String-Repräsentation.
kann mir jamand beim starten helfen ?!!!!