Compiler geht nicht (Dekorator Muster)

pindakaas

Mitglied
Hallöchen ich bins schonwieder, :toll:
diesmal bin ich dabei ein Dekorator Muster zu schreiben.
Der Dekorator der hier zu Implementieren bleibt soll Rabatt heißen und alle Objekte die
Betrag implementieren Dekorieren können und eine ganzzahligen Prozentsatz vom Preis abziehen.

Auf dem Papier dachte ich es sollte so funktionieren aber der Compiler gibt ne Fehlermeldung, die leider nichts aussagt da mein Compiler irreparabel kaputt zu sein scheint. Aber hier ist mein Versuch:

Ich freu mich auf eure Antworten ^^

Java:
/*für neuankömmlinge geändert*/
public class Rabatt extends Preis
{
    public Preis preis; int rabatt =0;
    
    public Rabatt(Preis preis,int a){
        this.preis=preis;
        rabatt = a;
    }
    
    public int berechneBetrag(){
        return preis.getBetrag()*(1-(rabatt/100));
    } 
    
    
}

Das Vorgegebene Interface und die vorgegebene Klasse.

Java:
public interface Betrag {
int berechneBetrag();
}
Java:
public class Preis implements Betrag {
int derPreis;
public Preis(int p) { derPreis = p>=0 ? p : 0; }
public int berechneBetrag() { return derPreis; }
}

für interessierte hier die Aufgabestellung:
Code:
Gegeben sind das Interface Betrag und die Klasse Preis. Programmieren Sie eine Klasse
Rabatt, die jedes Objekt dekorieren kann, das zu einer Klasse gehört, die Betrag implementiert.
Die Klasse Rabatt soll einen ganzzahligen Prozentsatz verwalten, der beim Aufruf der Methode
berechneBetrag von dem berechneten Betrag des dekorierten Objekts abgezogen wird.
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
willst du die Fehlermeldung einfach nicht posten oder hast du tatsächlich kein laufendes Java bei dir?
im letzteren Fall installiere das doch erstmal neu oder kaufe dir einen (anderen) Computer bevor hier jede Arbeit anfangen kann?

in Anbetracht dieses etwas dreisten Anteils vorerst nach Hausaufgaben verschoben,
wenn auch sonst auf etwas höheren Niveau als die meisten reinen Anfragen in diesem Bereich
 
G

Gonzo17

Gast
Java:
    public int berechneBetrag(){
        return preis.getBetrag()*(1-(a/100));
    }

Da ist wohl einiges schief gelaufen. Wo wird die Variable
Code:
preis
denn deklariert? Und wieso denn
Code:
a
?
Code:
a
ist eine lokale Variable im Konstruktor, wie willst du denn dadrauf zugreifen? Übrigens übergibst du ja genau deshalb den Wert dieser Variable an eine andere Variable, damit sie fürs Objekt nutzbar ist...
 

pindakaas

Mitglied
sorry hab wieder eine Variante die eigentlich anders aussah nach rumbasteln hier falsch gepostet.
Die Fehlermeldung enthält leider nur den Pfad zu der .java Datei das liegt an meiner Programmierumgebung das hat auch neuinstallieren nicht ändern können. Ich hab versucht einfach mal mit javac zu compilieren aber dann werden die Klassen nich automatisch importiert und solche Sachen und das zu lernen war bis jetzt mehr Aufwand als einfach den Fehler ohne Aussagekräftige Fehlermeldung zu finden.

so sollte der Adapter eigentlich aussehen:

Java:
public class Rabatt extends Preis
{
    public Preis preis; int rabatt =0;
    
    public Rabatt(Preis preis/*hier stand kurz Preis wird nachträglich geändert*/,int a){
        this.preis=preis;
        rabatt = a;
    }
    
    public int berechneBetrag(){
        return preis.getBetrag()*(1-(rabatt/100));
    } 
    
    
}

PS: Das hier ist keine Hausaufgabe sowas bekommen wir nicht ich versuche einfach nur zu verstehen warum mein Compiler das hier nicht Compilieren will, die Aufgabe ist aus ner Altklausur
 
Zuletzt bearbeitet:
S

SlaterB

Gast
dein Programm ist ungeeignet, den Compiler (oder genauer eine noch nicht einmal genannte Entwicklungsumgebung?) zu testen,
es sei denn es gibt speziell dort Fehler und anderswo nicht,

fange mit
Java:
public class Test
{
    public static void main(String[] args)
    {
        System.out.println("Hello World");
    }
}
an, geht das? baue verschiedene Fehler ein, falsche Klassennamen, Aufrufe, Klammern usw.,
teste mit mehreren Klassen wenn das alles geht usw., poste Screenshots
 

pindakaas

Mitglied
Wenn das Programm richtig ist geht es auch nur Fehlermeldungen werden halt nicht als Fehlermeldung ausgegeben, nur Laufzeitfehler bzw verursachte Exceptions werden richtig benannt.

Sorry falls ich verwirrung stifte ich werde mir mal angucken wie ich das mit javac hinbekomme, dann kann ich im Zweifel daher ne Fehlermeldung bekommen die Sinn macht.


PS: dein Programm spuckt "hallo world" aus
 
S

SlaterB

Gast
in Anbetracht deiner sonstigen Posting will ich mal extra Arbeit machen und selber einen Screenshot posten wie das ganze bei mir aussieht (beachte die exakten Fehlermeldungen!),
freilich nur mit kopierten Code in einer Klasse,
was du mit mehreren Dateien, packages usw. alles falsch machen kannst ist dabei nicht berücksichtigt

wenn du Hilfe zu deinem Compiler-Problem willst, musst du viele viele viele viele viele viele viele viele viele Informationen posten,
oder gleich Eclipse bzw. vergleichbares installieren falls noch nicht vorhanden

zurückverschoben, Titel geändert
 

Anhänge

  • screen1.png
    screen1.png
    28,6 KB · Aufrufe: 57
Zuletzt bearbeitet von einem Moderator:

pindakaas

Mitglied
okay ich werd mich jetzt erstmal darum kümmern das ich vernünftige Fehlermeldungen bekomme, das geht so nicht weiter, auch wenn ich eigentlich keine zeit für sowas hab.

PS: danke für den screenshot dachte mir schon das Preis zu subclassen hier falsch ist und ich eigenlich Betrag implementieren muss, das gibt zwar auch wieder irgend nen Fehler aber.. wie gesagt das regel ich jetzt erstmal
 

pindakaas

Mitglied
Moin,



aber alle anderen hier haben die Zeit ???:L :eek:

Gruß
Klaus
Nein so war das natürlich nicht gemeint ich bin nur gerade am lernen und mich jetzt mit sowas zu beschäftigen und zwei Stunden mit einem Problem zu ringen weil ich keine Fehlermeldungen hab die Sinn machen ist da einfach doof.
Aber jetzt hab ich nen anderen Editor der mir direkt javac Fehlermeldungen gibt jetzt kanns endlich weitergehen^^.

nur um Missverständnissen vorzubeugen: Danke an alle für ihre Hilfe und Zeit !
 
D

Dow Jones

Gast
Hallo Pindakaas,
wenn du ohnehin gerade am Lernen bist solltest du dir am besten gleich angewöhnen mit Interfaces statt mit Klassen zu arbeiten.
Java:
public class Rabatt implements Betrag
{
    public Betrag betrag; int rabatt =0;
    ...    
}
so ist das nicht nur "schöner", es entspricht auch eher der Aufgabenstellung. ;)
 

pindakaas

Mitglied
Hey sauber zu dem Schluss bin ich auch gerade gekommen das wirft jedoch ein Problem auf
wenn ich das so mache sieht meine Testumgebung so aus
Java:
public class Test{
	
	public static void Test(){
		Preis  p = new Preis(5);
		Rabatt Rab = new Rabatt(p,5);
	}
}

nur sollte eigentlich dort stehen denn er Typ sollte erhalten bleiben
Java:
public class Test{
	
	public static void Test(){
		Preis  p = new Preis(5);
		p = new Rabatt(p,5);
	}
}
das gibt natürlich
Code:
 incompatible types
found   : Rabatt
required: Preis
das funktioniert aber halt nur mit subclasses oder überseh ich was?
 
S

schnelle_hilfe

Gast
Java:
public class Test{
    
    public static void Test(){
        Betrag  p = new Preis(5);
        p = new Rabatt(p,5);
    }
}
 
S

SlaterB

Gast
zu spät aber ausführlicher:

das funktioniert eben nur wenn man konsequent aufs Interface setzt:
Java:
Betrag b = new Preis(5);
b = new Rabatt(b, 5);
wobei du dann Rabatt evtl. noch umbauen musst, damit dann da ein beliebiges Betrag-Objekt übergeben kann,
nicht nur einen Preis (wie in Dow Jones Posting bereits angedeutet),
wenn Rabatt nur Preis akzeptiert, dann ist es relativ akzeptabel, dass Rabatt auch von Preis erbt
 

pindakaas

Mitglied
sauber jetzt gehts alles hier die Finalen klassen:

Danke für die Geduld ^^
Java:
public interface Betrag {
    int berechneBetrag();
}




Java:
public class Preis implements Betrag{
    
    int derPreis;
    
    public Preis(int p) { derPreis = p>=0 ? p : 0; }
    
    public int berechneBetrag() { return derPreis; }
}

Java:
public class Rabatt implements Betrag
{
    public Betrag preis; int rabatt =0;
    
    public Rabatt(Betrag preis,int a){
        
        this.preis=preis;
        rabatt=a;
    }
    
    public int berechneBetrag(){
        return preis.berechneBetrag()*(1-(rabatt/100));
    } 
    
    
}

Java:
public class Test{
	
	public static void main (String[] args){
		Betrag  p = new Preis(5);
		System.out.println("Preis : "+p);
			
		p = new Rabatt(p,5);
		System.out.println("Mit Rabatt"+p);
	}
}
 

VfL_Freak

Top Contributor
Moin,

warum übergibst du in der Testumgebung einen String[]?

Meinst Du etwa diese Zeile ???:L :eek:
Java:
public static void main (String[] args)

Dann solltest Du Dich mal mit den Basics des Aufbaus eines Java-Programms auseinander setzen !!
Jedes Programm benötigt eine main-Methode mit diesem Aufbau, bei dem im String-Array die Argumente ans Programm übergeben werden (können) .....
Siehe bspw. hier:
Applikationen

Gruß
Klaus
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Sass Compiler und String erhalten? Java Basics - Anfänger-Themen 7
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
N Compiler-Fehler State Machine - Compiler Error Java Basics - Anfänger-Themen 48
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
A Compiler Fehler - not a statement Java Basics - Anfänger-Themen 2
OSchriever Frage zu Compiler Java Basics - Anfänger-Themen 8
B Nicht reproduzierbarer Fehler bei Kompilierung - Shortcut "Bereinigung" Compiler ? Java Basics - Anfänger-Themen 4
Gaudimagspam Compiler Error Java Basics - Anfänger-Themen 3
B Nach eingefügtem Code erkennt Compiler keine Instanzvar und meldet SyntaxError Java Basics - Anfänger-Themen 2
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
D Warum Compiler das nicht Java Basics - Anfänger-Themen 6
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
C Classpath Compiler lässt sich nur bedingt von Kommandozeile aus starten Java Basics - Anfänger-Themen 17
V Komplizierte Compiler Fehlermeldungen Java Basics - Anfänger-Themen 7
B Compiler -> unendliche Schleife (StringBuffer?) Warum? Java Basics - Anfänger-Themen 2
B Java Compiler Fehler Java Basics - Anfänger-Themen 7
R Compiler-Fehler Java Compiler Unterschiede Java Basics - Anfänger-Themen 10
S Variable, die im Konstruktor gesetzt wird, wird nicht gefunden vom Compiler. Java Basics - Anfänger-Themen 4
L Compiler funktioniert nicht Java Basics - Anfänger-Themen 2
M Erste Schritte Erstes Programm mit Compiler öffnen Java Basics - Anfänger-Themen 4
K Enigma compiler Fehler Java Basics - Anfänger-Themen 4
K Compiler-Fehler Enigma compiler Fehler Java Basics - Anfänger-Themen 5
P Compiler-Fehler wieso zeigt der compiler ein else without if? Java Basics - Anfänger-Themen 3
W Compiler-Fehler Compiler Fehler Java Basics - Anfänger-Themen 9
K Arraylist - Compiler Fehler Java Basics - Anfänger-Themen 3
S Logging Code komplett von Compiler entfernen lassen..? Java Basics - Anfänger-Themen 5
J Compiler-Fehler Cmd startet compiler Java Basics - Anfänger-Themen 1
Z Java Compiler will nicht mehr Java Basics - Anfänger-Themen 3
J Compiler Fehler Java Basics - Anfänger-Themen 5
K Compiler-Fehler Probleme mit dem Compiler Java Basics - Anfänger-Themen 10
R Java HotSpot Compiler Java Basics - Anfänger-Themen 6
J Java Basics Frage Compiler etc Java Basics - Anfänger-Themen 12
J Compiler-Fehler Verständnis Problem bei Compiler-Warning Java Basics - Anfänger-Themen 7
F Compiler Probleme Java Basics - Anfänger-Themen 7
D [jni] compiler error Java Basics - Anfänger-Themen 2
J Compiler findet method nicht Java Basics - Anfänger-Themen 12
E Compiler Java Basics - Anfänger-Themen 9
I Suche Compiler in Java SDK Java Basics - Anfänger-Themen 5
D Classpath compiler zur Laufzeit aufrufen & lib-classpath Java Basics - Anfänger-Themen 6
S Compiler-Fehler see the compiler error output Java Basics - Anfänger-Themen 6
E Verwirrender Compiler Fehler!? Java Basics - Anfänger-Themen 3
Dit_ Compiler-Fehler Stringvariable ändern | Compiler warnung Java Basics - Anfänger-Themen 25
J Mac OS X - javac - Compiler Probleme Java Basics - Anfänger-Themen 2
M Compiler-Fehler instanceof compiler-error Java Basics - Anfänger-Themen 2
M JDK installieren Compiler Version Java Basics - Anfänger-Themen 4
S compiler auf 6.0 stellen Java Basics - Anfänger-Themen 6
L laut Compiler fehlt der Methodenkörper Java Basics - Anfänger-Themen 2
N Compiler findet array in gleicher methode nicht Java Basics - Anfänger-Themen 4
R Automatischer Compiler? Java Basics - Anfänger-Themen 4
H TreeMap Rückgabe - Compiler-Warnings Java Basics - Anfänger-Themen 9
C Hat jemand Ahnung zum GCJ(Gnu Compiler for Java) Java Basics - Anfänger-Themen 7
Luk10 Frage zu Compiler-Einstellung Java Basics - Anfänger-Themen 12
B Compiler funzt nicht. Java Basics - Anfänger-Themen 12
A SocketServer und Ahead-Of-Time-Compiler Java Basics - Anfänger-Themen 18
P JAVA Compiler (Javac) Java Basics - Anfänger-Themen 4
M Compiler-Fehler Java Basics - Anfänger-Themen 11
Mike90 Java Compiler funzt nicht Java Basics - Anfänger-Themen 11
J Java Compiler will nicht in der Kommandozeile Java Basics - Anfänger-Themen 5
A Compiler kann das exceptionElement nicht finden Java Basics - Anfänger-Themen 10
M Unterschied zwischen . Compiler und JIT-Compiler,Hotspot-VM Java Basics - Anfänger-Themen 2
M einfache frage zum Jdk-Compiler Java Basics - Anfänger-Themen 3
A compiler gibt nichts aus Java Basics - Anfänger-Themen 12
D JDK Compiler Java Basics - Anfänger-Themen 4
B Fragen zu threads, swing, und dem bytecode compiler, etc. Java Basics - Anfänger-Themen 4
K Warum akzeptiert der Compiler mein Objekt nicht ? Java Basics - Anfänger-Themen 3
F Compiler für mac os x 10.4 Java Basics - Anfänger-Themen 5
S compiler warning Java Basics - Anfänger-Themen 2
A Java error message Was will der Compiler von mir? Java Basics - Anfänger-Themen 6
K Compiler Problem Java Basics - Anfänger-Themen 3
J compiler funktioniert nicht Java Basics - Anfänger-Themen 8
I Compiler ignoriert setSize, setPreferredSize, etc. Java Basics - Anfänger-Themen 14
G jaxb compiler Java Basics - Anfänger-Themen 2
E Compiler-Befehl zum "nicht beachten" von Code Java Basics - Anfänger-Themen 10
B Anfänger mit Compiler-problemen Java Basics - Anfänger-Themen 20
S was passt dem compiler nicht? Java Basics - Anfänger-Themen 2
I Probleme mit Pfad zum Compiler Java Basics - Anfänger-Themen 8
D [DONE] JDK Installation: Compiler macht Probleme. Java Basics - Anfänger-Themen 3
M Compiler findet main nicht Java Basics - Anfänger-Themen 4
O Compiler-Fehler im Bezug auf Klasse Java Basics - Anfänger-Themen 5
G compiler Java Basics - Anfänger-Themen 16
C Compiler-Fehler Java Basics - Anfänger-Themen 6
S Java Compiler? oder doch der Code? Java Basics - Anfänger-Themen 6
padde479 Compiler-Frage: Was bedeutet deprecated? Java Basics - Anfänger-Themen 4
C Nach Installation kein Java-Compiler Java Basics - Anfänger-Themen 7
R Java verstanden, Compiler nicht Java Basics - Anfänger-Themen 6
M Frage zu Java Compiler Java Basics - Anfänger-Themen 3
A Ant Problem: Unable to find a javac compiler; Java Basics - Anfänger-Themen 4
B Aus Datei Lesen -> Compiler fehler Java Basics - Anfänger-Themen 6
B Compiler Fehler "{" expected, kann doch nich sein? Java Basics - Anfänger-Themen 9
M kostenloser Java-Compiler? Java Basics - Anfänger-Themen 6
D Was für einen compiler empfehlt ihr? Java Basics - Anfänger-Themen 12
F Compiler-Fehlermeldung LINUX Java Basics - Anfänger-Themen 9
C Compiler-Fehler - bitte um Hilfe Java Basics - Anfänger-Themen 20
H Java-Compiler Java Basics - Anfänger-Themen 5
T System.out.println - Compiler-Fehler Java Basics - Anfänger-Themen 22
C Compiler läuft nicht Java Basics - Anfänger-Themen 6
G Compiler hängt schon wieder Java Basics - Anfänger-Themen 14
E jit-compiler Java Basics - Anfänger-Themen 5
G Windows optimierter Compiler? Java Basics - Anfänger-Themen 5
J suche guten Java-Compiler! Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben