OOP Uhr programmieren

Hallo Leute,

habe eine Aufgabe bekommen und habe ein paar Fragen dazu.

Die Aufgabenstellung hab ich auf meine kilu website geladen weil sie zu lang ist für sie hier hinein zu schreiben Willkommen auf Sobchaks Homepage.

Java:
import utilities.*;     /* Ordner der die Klasse TastaturEingabe enthält */

public class Time24{
  private int hour;
  private int minute;
  
  public Time24(int hour, int minute){
    this.hour = hour;
    this.minute = minute;
    normalizeTime();
    
  }
  
  public Time24(){
    minute = 0;
    hour = 0;
  }
  
  public Time24(Time24 time){
    this.minute = time.minute;
    this.hour = time.hour;
  }
  
  public void readTime(int hour, int minute){
    hour = TastaturEingabe.readInt("Bitte Stunden eingeben");
    minute = TastaturEingabe.readInt("Bitte Minuten eingeben");
    normalizeTime();
  }
  
  public void writeTime(){
    System.out.println(this.hour + ":" + this.minute);
  }
  
  public void addTime(int time){
    if(time >= 0)
    {
      this.minute = this.minute + time;
    }
    normalizeTime();
  }
  
  public int getHour(){
    return this.hour;
  }
  
  public void setHour(int hour){
    this.hour = hour;
  }
  
  public int getMinute(){
    return minute;
  }
  
  public void setMinute(int minute){
    this.minute = minute;
  }
  
  public String toString(){
    return  "";
  }
  
  private void normalizeTime(){
    if(this.minute > 59 && this.minute < 119)
    {
      this.minute = this.minute % 60;
      this.hour = this.hour++;
    }
    else if(this.minute > 119)
    {
      this.minute = this.minute % 60;
      this.hour = this.hour + 2;
    }
    
    if(this.hour > 23)
    {
      this.hour = this.hour % 24;
    }
    else if(this.hour < 0)
    {
      System.err.println("FEHLER!");
    }
    
  }
}

Java:
import utilities.*;

public class Timetest{
  public static void main(String[] args){
    Time24 sanfrancisco, frankfurt, melbourne;
    
    sanfrancisco = new Time24(40, 13);
    
    sanfrancisco.writeTime();
    sanfrancisco.getHour();
  }
}

So meine Fragen nun:

  1. Wofür ist der Kopierkonstruktor da?
  2. Wie mache ich das mit der toString Methode. Das verstehe ich nicht. Hab sie jetzt erstmal kompilierbar gemacht, damit das Programm funktioniert
  3. Ist der Quellcode schonmal annehmbar geschrieben?

Hoffe auf Antworten. Danke im Vorraus
 
G

Gasst

Gast
1) Um ein neues Time24 objekt aus einem alten zu erstellen
2) was verstehst du nicht? Die Methode soll halt die Uhrzeit als String zurückliefern
3) Ja

Deine normalizeTime() methode ist übrigens nicht ganz richtig mit den Minuten, und du hast vergessen normalizeTime() in setHour und setMinute nochmal aufzurufen
 
Danke für deine Antwort.

1) Um ein neues Time24 objekt aus einem alten zu erstellen

Aber warum kann ich die Objekte denn nicht einfach mit
Code:
new
erstellen? Wo liegt denn der tiefere Sinn eines Kopierkonstruktors? Ist er nötig?

2) was verstehst du nicht? Die Methode soll halt die Uhrzeit als String zurückliefern

Aber wie geht das. Kannst du mir ein Beispiel zeigen, was ungefähr auf diesen Quellcode passt. Ich kann ja noch kein Objekt in eine Zeichenkette umwandeln, wenn noch keins da ist. Oder muss ich das Objekt aus dem Kopierkontruktor nehmen?

Deine normalizeTime() methode ist übrigens nicht ganz richtig mit den Minuten, und du hast vergessen normalizeTime() in setHour und setMinute nochmal aufzurufen

Was meinst du mit noch nicht ganz richtig? Ist halt nur für den Anfang nur oberflächlich programmiert. :D
 
G

Gasst

Gast
Aber warum kann ich die Objekte denn nicht einfach mit
Code:
new
erstellen?
Machst du doch!?
Wo liegt denn der tiefere Sinn eines Kopierkonstruktors? Ist er nötig?
Nein nötig ist überhaupt nichts, ist nur eine Frage was Sinn macht um eine bestimmte Aufgabenstellung zu lösen

Aber wie geht das. Kannst du mir ein Beispiel zeigen, was ungefähr auf diesen Quellcode passt. Ich kann ja noch kein Objekt in eine Zeichenkette umwandeln, wenn noch keins da ist. Oder muss ich das Objekt aus dem Kopierkontruktor nehmen?
Versteh ich jetzt wiederum nicht - natürlich hast du ein Objekt, sonst könntest du ja nicht toString() aufrufen. Im Prinzip musst du auch nur exakt das selbe machen was du schon in writeTime gemacht hast, darum weiß ich nicht wo du da hängst?

Was meinst du mit noch nicht ganz richtig? Ist halt nur für den Anfang nur oberflächlich programmiert. :D
Mit nicht ganz richtig meine falsch :D (für minuten werte < 120 und >= 180)

PS: deine readTime() methode funktioniert auch nicht korrekt btw.
 

faetzminator

Gesperrter Benutzer
Aber warum kann ich die Objekte denn nicht einfach mit
Code:
new
erstellen? Wo liegt denn der tiefere Sinn eines Kopierkonstruktors? Ist er nötig?
Das neue Objekt wird so oder so mit [c]new[/c] erstellt. Aber wenn die Daten des alten Objekts übernommen werden sollen, kann dieses im Copykonstruktor mitgegeben werden. Ersteres ist einfach schöner als letzteres:
Java:
SomeObject newObj = new SomeObject(oldObj);
Java:
SomeObject newObj = new SomeObject();
newObj.setA(oldObj.getA());
newObj.setB(oldObj.getB());
newObj.setC(oldObj.getC());
Mal ganz abgesehen davon, dass es private Felder geben könnte, auf welche man von aussen gar keinen Zugriff hat, aber man die Möglichkeit bieten will, ein Objekt zu kopieren.
Aber wie geht das. Kannst du mir ein Beispiel zeigen, was ungefähr auf diesen Quellcode passt. Ich kann ja noch kein Objekt in eine Zeichenkette umwandeln, wenn noch keins da ist.
Wie Gasst bereits sagte, ist ein Objekt vorhanden, nämlich dieses, auf welchem [c]toString()[/c] aufgerufen wird. Du kannst dort einfach [c]return hour + ":" + minute;[/c] schreiben. Die Methode [c]writeTime()[/c] kann dann eigentlich auch auf [c]System.out.println(this);[/c] umgeschrieben werden, da [c]println()[/c] nichts anderes macht, also [c]toString()[/c] des übergebenen Objektes aufzurufen und auszugeben.
 
Mit nicht ganz richtig meine falsch (für minuten werte < 120 und >= 180)

PS: deine readTime() methode funktioniert auch nicht korrekt btw.

Ok habs gemerkt. Habs jetzt angepasst. Danke^^.


Das neue Objekt wird so oder so mit new erstellt. Aber wenn die Daten des alten Objekts übernommen werden sollen, kann dieses im Copykonstruktor mitgegeben werden. Ersteres ist einfach schöner als letzteres:
Java:
SomeObject newObj = new SomeObject(oldObj);

Java:
SomeObject newObj = new SomeObject();
newObj.setA(oldObj.getA());
newObj.setB(oldObj.getB());
newObj.setC(oldObj.getC());

Mal ganz abgesehen davon, dass es private Felder geben könnte, auf welche man von aussen gar keinen Zugriff hat, aber man die Möglichkeit bieten will, ein Objekt zu kopieren.

Ach ok. Das habe ich jetzt verstanden. Gute Erklärung danke.

Wie Gasst bereits sagte, ist ein Objekt vorhanden, nämlich dieses, auf welchem
Code:
toString()
aufgerufen wird. Du kannst dort einfach
Code:
return hour + ":" + minute;
schreiben. Die Methode
Code:
writeTime()
kann dann eigentlich auch auf
Code:
System.out.println(this);
umgeschrieben werden, da
Code:
println()
nichts anderes macht, also
Code:
toString()
des übergebenen Objektes aufzurufen und auszugeben.

Ich habe dort viel zu kompliziert gedacht:D. Aber besser man fragt nach^^.

Ok danke. Falls noch weitere Fragen auftauchen melde ich mich wieder.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A GUI bequemer programmieren? Java Basics - Anfänger-Themen 6
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
laxla123 Rechteck programmieren Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
D Programmieren nach UML Java Basics - Anfänger-Themen 2
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
B Überweisung programmieren Java Basics - Anfänger-Themen 7
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
D Ampel Programmieren die jede 10 sekunden ihre farbe wechselt Java Basics - Anfänger-Themen 6
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
thor_norsk Fernseher programmieren mit Java Java Basics - Anfänger-Themen 4
M Jenga Regeln Java Programmieren Java Basics - Anfänger-Themen 1
M Ressourcensparend programmieren Java Basics - Anfänger-Themen 3
brypa Wie Programmieren lernen? Java Basics - Anfänger-Themen 15
G Spielerwechsel programmieren Java Basics - Anfänger-Themen 1
J Solitär (Brettspiel) programmieren Java Basics - Anfänger-Themen 3
H Objektorientiertes Programmieren Java Basics - Anfänger-Themen 4
K 12- Stunden Konverter Programmieren Java Basics - Anfänger-Themen 1
WAB9703-04 Programm zum automatischen Ausfüllen von Formularen programmieren Java Basics - Anfänger-Themen 3
L Zahlenspiel programmieren Java Basics - Anfänger-Themen 1
TimoN11 Automat programmieren Java Basics - Anfänger-Themen 4
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
N Ufospiel programmieren Java Basics - Anfänger-Themen 13
KogoroMori21 Vorbereitung auf die Programmieren Klausur vom ersten Semester Java Basics - Anfänger-Themen 4
Drinkerbell Erste Schritte Zu blöd zum Programmieren? Java Basics - Anfänger-Themen 9
G Stack programmieren Java Basics - Anfänger-Themen 6
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
G Bruchrechner programmieren Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
J Hilfe beim Programmieren Java Basics - Anfänger-Themen 5
S Kreisberechnung3 Buch: Programmieren lernen mit Java von Hans-Peter Habelitz Java Basics - Anfänger-Themen 39
M Quiz in Java programmieren mit Array Java Basics - Anfänger-Themen 8
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
K Java programmieren Java Basics - Anfänger-Themen 6
V_Fynn03 Kontrolle des Quelltextes (Bank programmieren)(GUI) Java Basics - Anfänger-Themen 6
D Was tun gegen zu komplzierten Denken beim Programmieren Java Basics - Anfänger-Themen 27
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
N Ticketautomat programmieren Java Basics - Anfänger-Themen 63
M Rechner programmieren Java Basics - Anfänger-Themen 3
V_Fynn03 Java Bruchrechner programmieren Java Basics - Anfänger-Themen 13
J Java Suchfunktion Programmieren Java Basics - Anfänger-Themen 1
L Erste Schritte Bin ich "zu dumm" oder nicht geeignet zum Programmieren? Java Basics - Anfänger-Themen 3
U Ist jemad gut in programmieren (JAVA) und kann mir helfen? Java Basics - Anfänger-Themen 1
H Uhr programmieren Java Basics - Anfänger-Themen 10
T Schalter programmieren Java Basics - Anfänger-Themen 17
S Ampel Programmieren Java Basics - Anfänger-Themen 5
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
D Richtig für Programmieren an der UNI lernen Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
steven789hjk543 Kann man mit Java und Eclipse einen Virus programmieren? Java Basics - Anfänger-Themen 13
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
S Erste Schritte Hilfe beim lernen von Programmieren Java Basics - Anfänger-Themen 2
V Zeichenkette programmieren Java Basics - Anfänger-Themen 20
O Fenster programmieren Java Basics - Anfänger-Themen 2
R Uebersichtlicher bzw. besser Programmieren Java Basics - Anfänger-Themen 13
N Dynamisches Programmieren/Fibonacci Java Basics - Anfänger-Themen 1
B Spielfiguren für ein Beute-Jägerspiel programmieren Java Basics - Anfänger-Themen 12
A Programmieren lernen Java Basics - Anfänger-Themen 28
F ArrayListe manuell programmieren? Java Basics - Anfänger-Themen 24
X Erste Schritte Einstieg ins Programmieren Java Java Basics - Anfänger-Themen 2
O Erste Schritte ln(1+x) Reihe Programmieren Java Basics - Anfänger-Themen 6
Ellachen55 Weihnachtsbaum in Eclipse programmieren Java Basics - Anfänger-Themen 6
L Klassen Geldrückgabe - Aufgabe Programmieren Java Basics - Anfänger-Themen 23
H Stern Dreieck (Buch: Grundkurs Programmieren) Java Basics - Anfänger-Themen 2
V Variablen Vorkommen programmieren Java Basics - Anfänger-Themen 18
S Dreieckssignal programmieren Java Basics - Anfänger-Themen 5
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
M Spiel programmieren Java Basics - Anfänger-Themen 16
A Fenster programmieren Java Basics - Anfänger-Themen 1
V OOP Kassensystem objektorientiert programmieren Java Basics - Anfänger-Themen 15
A Erste Schritte DoodleJump programmieren: Kollisionsabfrage Java Basics - Anfänger-Themen 4
CT9288 Kleine Simulation programmieren, denkanstöße erbeten Java Basics - Anfänger-Themen 19
H Welche IDE zum Buch "Programmieren mit Java" von Reinhard Schiedermeier des Verlags Pearson Studium Java Basics - Anfänger-Themen 19
D Könnt ihr mir helfen beim Programmieren eines Ping Pong Spieles? Java Basics - Anfänger-Themen 9
M Rekursive Methode Programmieren Java Basics - Anfänger-Themen 3
I Spielbrett programmieren: Datenstruktur Java Basics - Anfänger-Themen 3
G Rekursives Programmieren --> harmonische Reihe Java Basics - Anfänger-Themen 3
A Endlich anfangen mit Programmieren ! Java Basics - Anfänger-Themen 8
L Karawane programmieren Java Basics - Anfänger-Themen 0
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
E Mastermind programmieren, wie den falschen Platz aber richtige Farbe schecken? Java Basics - Anfänger-Themen 23
steven789hjk543 Erste Schritte java programmieren/ Schritt für Schritt Java Basics - Anfänger-Themen 14
I Spiel programmieren. Java Basics - Anfänger-Themen 16
H [Studium] Mäxchenspiel programmieren Java Basics - Anfänger-Themen 10
C BlueJ Zahlenschloss programmieren Java Basics - Anfänger-Themen 5
steven789hjk543 mit dem Smartphone java programmieren Java Basics - Anfänger-Themen 44
F Okjektorientiert programmieren Java Basics - Anfänger-Themen 2
S OOP Ticketsystem programmieren Java Basics - Anfänger-Themen 6
P Selber Programmieren lernen oder Uni? Java Basics - Anfänger-Themen 12
P Kasse programmieren Java Basics - Anfänger-Themen 12
D Timer programmieren Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben