Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

[Java] Frage zu einer Aufgabe
Gehe zu Seite 1, 2  Weiter
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> [Java] Frage zu einer Aufgabe
 
Autor Nachricht
mr. dumb
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 20.08.2007
Beiträge: 241

BeitragVerfasst am: 21 Jan 2009 - 21:55:06    Titel: [Java] Frage zu einer Aufgabe

Hey, ich habe eine Frage zu einer Aufgabe.
Mit wird der Fehler <identifier expected> in der abstrakten Klasse Celsius Zeile 2 ausgegeben. (Ich weiß, dass es irgendwie falsch ist, hab aber keine Ahnung, wie es richtig funktioniert, hoffe ihr könnt mir helfen).

Hier die Aufgabenstellung:
Zitat:

Gegeben sei eine abstrakte Klasse ZahlMitEinheit zur Repräsentation von mit Einheiten behafteten Zahlen. Downloadlink:
http://www.xup.in/dl,26889831/ZahlMitEinheit.class/

Der Konstruktor ist gegeben durch die Signatur:
public ZahlMitEinheit(double wert);

Zusätzlich gibt es Methoden zum Zugriff auf den gespeicherten Wert:
public double getWert();
public void setWert(double wert);


Die abstrakten Methoden sind gegeben durch
public abstract String getEinheitsName();
public abstract ZahlMitEinheit konvertiereZuStandard();


welche den Namen der Einheit zurück gibt bzw. die Umwandlung in eine Standardeinheit übernimmt.


1. Entwerfen Sie ein Interface Temperatur zur Definition von Temperaturen. Teile des Interfaces sollen die Methoden erwaermen(double delta) und abkuehlen(double delta) sein zum Erhöhen bzw. Erniedrigen der aktuellen Temperatur um ein positives delta. Für unzulässige Werte von delta soll eine Exception geworfen werden.

2. Entwickeln Sie zwei Klassen Celsius und Fahrenheit, die jeweils sowohl Temperatur implementieren als auch ZahlMitEinheit erweitern. Die Standardeinheit soll Celsius sein.



Zu Aufgabe 1:
Code:

public interface Temperatur{

public void erwaermen(double delta) throws IllegalArgumentException;
public void abkuehlen(double delta) throws IllegalArgumentException;

}


Das müsste ja soweit passen.


Zu Aufgabe 2: (nur Klasse Celsius, Fahrenheit sollte ja analog sein)
Code:

abstract class Celsius extends ZahlMitEinheit implements Temperatur{
  ZahlMitEinheit Wert = new.Wert(double wert);
   
    public Celsius{
    if(erwaermen){return wert + delta; }
    if(abkuehlen){return wert - delta;   }
        }
}


Mit "ZahlMitEinheit Wert = new.Wert(double wert);" wollte ich den imaginären Wert (Standardwert) aus der Superklasse ZahlMitEinheit einlesen und zur Verarbeitung in der Subclass freigeben.
Wäre nett, wenn mir jemand helfen könnte, wie es richtig funktioniert.

Auch weiß ich nicht, wie ich mit
"public abstract String getEinheitsName();" und
"public abstract ZahlMitEinheit konvertiereZuStandard();"
aus der Superklasse umgehen soll. Ich muss ja irgendwie Celsius zur "Standardunterklasse" machen können.

Ich kenne ja den Inhalt der Superklasse nicht und laut Aufgabenstellung muss ich es wohl selbst als Standardklasse (Ausweichklasse) deklarieren.

Habt ihr da vielleicht eine Idee?

LG
sarc
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.09.2006
Beiträge: 2657

BeitragVerfasst am: 21 Jan 2009 - 22:35:57    Titel:

Da das abstrakte Methoden sind, musst du diese natürlich überschreiben. Sinnigerweise so, dass sie das tun, was man von der jeweiligen Unterklasse erwarten würde.

Zu deinem ersten Problem: new.Wert ist falsche Syntax. Neue Objekte erzeugt man mittels new Konstruktor().
Smutje
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 18.07.2008
Beiträge: 3004
Wohnort: Gießen

BeitragVerfasst am: 21 Jan 2009 - 22:41:20    Titel: Re: [Java] Frage zu einer Aufgabe

mr. dumb hat folgendes geschrieben:
Ich kenne ja den Inhalt der Superklasse nicht und laut Aufgabenstellung muss ich es wohl selbst als Standardklasse (Ausweichklasse) deklarieren.


Das musst du auch nicht -- du darfst die dir gegebenen Methoden inkl. des Konstruktors der abstrakten Klasse als gegeben ansehen und in den Unterklassen benutzen, aber musst die als abstrakt deklarierten Methoden der abstrakten Oberklasse überschreiben. Im Fall von Celsius z.B. so, das getEinheitsName(); z.B. "°C" zurück liefert.
mr. dumb
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 20.08.2007
Beiträge: 241

BeitragVerfasst am: 21 Jan 2009 - 22:59:44    Titel:

Danke für die Antworten.

Leider habe ich mir schon gedacht, dass ich bei getEinheitsName(); schon eine Bezeichnung bzw "Celsius" zurück geben muss.

Mein Problem lag eher darin, dass ich nicht weiß wie genau ich das machen soll.

Bin Programmiertechnisch eigentlich 'ne echte Niete und versuche mein Bestes, schaue mir jedes Tutorial an, welches ich finden kann bzw lese Ebooks, aber auf Dauer ist es doch recht anstrengend ^^
Smutje
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 18.07.2008
Beiträge: 3004
Wohnort: Gießen

BeitragVerfasst am: 21 Jan 2009 - 23:03:15    Titel:

Code:
public class Celsius extends ZahlMitEinheit implements Temperatur {

  /* ... */

  public String getEinheitsName() {
    return "Celsius";
  }

  /* ... */

}


Wink
mr. dumb
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 20.08.2007
Beiträge: 241

BeitragVerfasst am: 21 Jan 2009 - 23:05:07    Titel:

So simpel ist das Überschreiben? Das ist nicht dein Ernst? Und deshalb hock ich 3h davor und bekomm Krampf vom Notizen schreiben mit der Hoffnung irgendwas Sinnvolles kommt dabei rum.


Wäre dann Standardeinheit:

Code:

public ZahlMitEinheit konvertiereZuStandard(){
return "Celsius";
}


?


edit: Danke an dich auch für den Link!


Zuletzt bearbeitet von mr. dumb am 21 Jan 2009 - 23:07:52, insgesamt 3-mal bearbeitet
Smutje
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 18.07.2008
Beiträge: 3004
Wohnort: Gießen

BeitragVerfasst am: 21 Jan 2009 - 23:06:38    Titel:

Guck mal hier, das Buch ist echt gut:

http://openbook.galileocomputing.de/javainsel8/javainsel_06_010.htm#mj1f4c2af36568d597e9d2da7f9a2b75c7
mr. dumb
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 20.08.2007
Beiträge: 241

BeitragVerfasst am: 21 Jan 2009 - 23:16:13    Titel:

Code:

abstract class Celsius extends ZahlMitEinheit implements Temperatur{
 
    public String getEinheitsName(){
        return "Celsius";
    }
   
    public ZahlMitEinheit konvertiereZuStandard(){
        return "Celsius";
    }
 
}


Nun wird mir folgender Fehler ausgeworfen:
ZahlMitEinheit() has private access in ZahlMitEinheit



Schreibe ich folgendes:
Code:

public class Celsius extends ZahlMitEinheit implements Temperatur{
 
    public String getEinheitsName(){
        return "Celsius";
    }
   
    public ZahlMitEinheit konvertiereZuStandard(){
        return "Celsius";
    }
 
}


Nun wird mir ausgegeben:
Celsius is not abstract and does not override abstract method abkuehlen(double) in Temperatur


Compiler stoppt jeweils in der 1. Zeile.
mr. dumb
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 20.08.2007
Beiträge: 241

BeitragVerfasst am: 22 Jan 2009 - 17:47:56    Titel:

Zitat:
Ich weiss ja nicht wie deine superklasse aussieht von daher kann ich dir mit dem private nicht helfen. Allerdings glaube ich dass deine abkühlen und erwärmen methoden keinen sinn machen.
Normalerweise funktionieren Getter und Setter etwas anders. Du müsstest einfach nur
super.setWert(wert+delta);
schreiben.


Niemand weiß wie die Superklasse aussieht, was aber auch egal ist, da die Unterklasse unabhängig von der Superklasse arbeitet.


sarc, den Fehler habe ich leider vorhin auch schon gefunden (leider zu spät hier gemeldet, hänge gerade noch in der Uni).

Auf welchen Trichter ich noch nicht gekommen bin, ist, wie ich den Konstruktor mittels super aufrufen kann.
Ich muss da wohl noch einmal im Skript nachblättern.


Und zu deinem Nebenbei bemerkt: Ja das weiß ich, ich geb ja schon mein Bestes Wink
sarc
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.09.2006
Beiträge: 2657

BeitragVerfasst am: 23 Jan 2009 - 10:14:49    Titel:

super(Parameter); als erste Anweisung in nem Konstruktor der abgeleiteten Klasse.
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> [Java] Frage zu einer Aufgabe
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum