ich bin ein totaler Java-Anfänger und würde mich bei diesem Problem auf eure Ratschläge sehr freuen
Zwei Klassen "Rechnen.java" und "Ausdruck.java" sind gegeben.
Ausdruck.java
Rechnen.java
Die Klasse "Ausdruck" dient zur Repräsentation von arithmetischen Ausdrücken in abstrakter Syntax.
Das Hauptprogramm Rechnen erzeugt einige Ausdrücke und ermittelt ihren Wert mit der Methode "auswerten()", die in der Klasse Ausdruck abstrakt deklariert ist. Das heißt, die Klasse enthält keine Implementierung der Methode, sondern nur eine Implementierungsverpflichtung für ihre Unterklassen.
Definieren Sie sämtliche Unterklassen von Ausdruck, die im Hauptprogramm verwendet werden. Führen Sie außerdem eine abstrakte Klasse "BinaererAusdruck" ein für die Gemeinsamkeiten der Klassen
"AdditionsAusdruck", "MultiplikationsAusdruck" und eventuell noch hinzukommender Klassen für arithmetische Ausdrücke mit einem zweistelligen Operator. Führen Sie analog dazu eine abstrakte Klasse
"UnaererAusdruck" ein für die Gemeinsamkeiten von "NegativerAusdruck", "QuadratAusdruck" und
eventuell hinzukommender Klassen für arithmetische Ausdrücke mit einem einstelligen Operator. Haben auch
die Klassen "UnaererAusdruck" und "BinaererAusdruck" Gemeinsamkeiten?
Achten Sie bei Ihrer Implementierung darauf, dass Klassen für neue Arten von arithmetischen Ausdrücken mit möglichst wenig Aufwand hinzugefügt werden können und Programmcode so weit wie möglich wiederverwendet wird.
Meine Aufgabe besteht darin, dass ich jetzt die (Unter-)Klassen "KonstanterAusdruck", "Additionsausdruck", "Multiplikationsausdruck", "BinaererAusdruck", "NegativerAusdruck", "QuadratAusdruck" und "UnaererAusdruck" schreibe.
Die Klasse "KonstanterAusdruck" ist eine abgeleitete Klasse (Unterklasse) von "Ausdruck", es geht also um Vererbung, ich würde sie so dekcklarieren
KonstanterAusdruck .java
Problem bekomme ich erst mit der Klasse "AdditionsAusdruck.java" und "BinaererAusdruck.java"
Um das Problem besser auf dem Leim zu gehen, habe ich die vorgegebene Klasse "Rechnen.java" ein wenig verändert, und unterm Name "Rechnen2.java" gespeichert:
[b|Rechnen2.java [/b]
BinaererAusdruck.java
Additionsausdruck.java[/b|
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag Themenstart: 2009-01-09 13:11
Guten Tag,
ich bin ein totaler Java-Anfänger und würde mich bei diesem Problem auf eure Ratschläge sehr freuen
Zwei Klassen "Rechnen.java" und "Ausdruck.java" sind gegeben.
Ausdruck.java
Java
/**
* Abstrakte Klasse für Repräsentationen arithmetischer Ausdrücke.
*
* Jeder arithmetische Ausdruck soll als Bedeutung eine ganze Zahl haben.
* Daher soll jeder Ausdruck ausgewertet werden können,
* indem eine Abbildung auf eine ganze Zahl definiert wird.
*
* Durch Implementieren der Funktion {@link Ausdruck#auswerten()}
* können Unterklassen den Ausdruck für
* eine bestimmte Funktion zu Verfügung stellen.
*/
public abstract class Ausdruck
{
/**
* Funktion zum Auswerten des Ausdrucks.
*
* Bildet diesen Ausdruck auf einen Wert ab,
* der der Bedeutung des Ausdrucks entspricht.
*
* @return der Wert dieses Ausdrucks
*/
public abstract int auswerten();
}
Rechnen.java
Java
/**
* Klasse zur Durchführung einiger Beispielrechnungen mit Ausdrücken.
*/
public class Rechnen
{
/**
* Führt einige Beispielrechnungen mit Ausdrücken durch.
*
* @param args wird nciht benötigt
*/
public static void main(String[] args)
{
Ausdruck v = new KonstanterAusdruck(4);
Ausdruck f = new KonstanterAusdruck(5);
Ausdruck v_plus_f = new AdditionsAusdruck(v, f);
Ausdruck v_mal_f = new MultiplikationsAusdruck(v, f);
Ausdruck quadrat_v_plus_f = new QuadratAusdruck(v_plus_f);
Ausdruck negatives_quadrat_v_plus_f = new NegativerAusdruck(
quadrat_v_plus_f);
System.out.println("4 = " + v.auswerten());
System.out.println("4+5 = " + v_plus_f.auswerten());
System.out.println("4*5 = " + v_mal_f.auswerten());
System.out.println("-((4+5)*(4+5)) = "
+ negatives_quadrat_v_plus_f.auswerten());
}
}
Die Klasse "Ausdruck" dient zur Repräsentation von arithmetischen Ausdrücken in abstrakter Syntax.
Das Hauptprogramm Rechnen erzeugt einige Ausdrücke und ermittelt ihren Wert mit der Methode "auswerten()", die in der Klasse Ausdruck abstrakt deklariert ist. Das heißt, die Klasse enthält keine Implementierung der Methode, sondern nur eine Implementierungsverpflichtung für ihre Unterklassen.
Definieren Sie sämtliche Unterklassen von Ausdruck, die im Hauptprogramm verwendet werden. Führen Sie außerdem eine abstrakte Klasse "BinaererAusdruck" ein für die Gemeinsamkeiten der Klassen
"AdditionsAusdruck", "MultiplikationsAusdruck" und eventuell noch hinzukommender Klassen für arithmetische Ausdrücke mit einem zweistelligen Operator. Führen Sie analog dazu eine abstrakte Klasse
"UnaererAusdruck" ein für die Gemeinsamkeiten von "NegativerAusdruck", "QuadratAusdruck" und
eventuell hinzukommender Klassen für arithmetische Ausdrücke mit einem einstelligen Operator. Haben auch
die Klassen "UnaererAusdruck" und "BinaererAusdruck" Gemeinsamkeiten?
Achten Sie bei Ihrer Implementierung darauf, dass Klassen für neue Arten von arithmetischen Ausdrücken mit möglichst wenig Aufwand hinzugefügt werden können und Programmcode so weit wie möglich wiederverwendet wird.
Meine Aufgabe besteht darin, dass ich jetzt die (Unter-)Klassen "KonstanterAusdruck", "Additionsausdruck", "Multiplikationsausdruck", "BinaererAusdruck", "NegativerAusdruck", "QuadratAusdruck" und "UnaererAusdruck" schreibe.
Die Klasse "KonstanterAusdruck" ist eine abgeleitete Klasse (Unterklasse) von "Ausdruck", es geht also um Vererbung, ich würde sie so dekcklarieren
KonstanterAusdruck.java
Problem bekomme ich erst mit der Klasse "AdditionsAusdruck.java" und "BinaererAusdruck.java"
Um das Problem besser auf dem Leim zu gehen, habe ich die vorgegebene Klasse "Rechnen.java" ein wenig verändert, und unterm Name "Rechnen2.java" gespeichert:
Rechnen2.java
BinaererAusdruck.java
AdditionsAusdruck.java
Das Compilieren von "Ausdruck.java" , "BinaererAusdruck.java" , "KonstanterAusdruck.java" und "AdditionsAusdruck.java" liefen reibungslos.
Aber wenn ich dann die Klasse "Rechnen2.java" compilieren möchte, also
javac Rechnen2.java
, wird Fehlermeldung gezeigt.
Ich hoffe, ich habe mein Problem präzis beschrieben.
Besten Dank an euch
LG
Zwei Klassen "Rechnen.java" und "Ausdruck.java" sind gegeben.
Ausdruck.java
Code:
/**
* Abstrakte Klasse für Repräsentationen arithmetischer Ausdrücke.
*
* Jeder arithmetische Ausdruck soll als Bedeutung eine ganze Zahl haben.
* Daher soll jeder Ausdruck ausgewertet werden können,
* indem eine Abbildung auf eine ganze Zahl definiert wird.
*
* Durch Implementieren der Funktion {@link Ausdruck#auswerten()}
* können Unterklassen den Ausdruck für
* eine bestimmte Funktion zu Verfügung stellen.
*/
public abstract class Ausdruck
{
/**
* Funktion zum Auswerten des Ausdrucks.
*
* Bildet diesen Ausdruck auf einen Wert ab,
* der der Bedeutung des Ausdrucks entspricht.
*
* @return der Wert dieses Ausdrucks
*/
public abstract int auswerten();
}
Rechnen.java
Code:
/**
* Klasse zur Durchführung einiger Beispielrechnungen mit Ausdrücken.
*/
public class Rechnen
{
/**
* Führt einige Beispielrechnungen mit Ausdrücken durch.
*
* @param args wird nciht benötigt
*/
public static void main(String[] args)
{
Ausdruck v = new KonstanterAusdruck(4);
Ausdruck f = new KonstanterAusdruck(5);
Ausdruck v_plus_f = new AdditionsAusdruck(v, f);
Ausdruck v_mal_f = new MultiplikationsAusdruck(v, f);
Ausdruck quadrat_v_plus_f = new QuadratAusdruck(v_plus_f);
Ausdruck negatives_quadrat_v_plus_f = new NegativerAusdruck(
quadrat_v_plus_f);
System.out.println("4 = " + v.auswerten());
System.out.println("4+5 = " + v_plus_f.auswerten());
System.out.println("4*5 = " + v_mal_f.auswerten());
System.out.println("-((4+5)*(4+5)) = "
+ negatives_quadrat_v_plus_f.auswerten());
}
}
Die Klasse "Ausdruck" dient zur Repräsentation von arithmetischen Ausdrücken in abstrakter Syntax.
Das Hauptprogramm Rechnen erzeugt einige Ausdrücke und ermittelt ihren Wert mit der Methode "auswerten()", die in der Klasse Ausdruck abstrakt deklariert ist. Das heißt, die Klasse enthält keine Implementierung der Methode, sondern nur eine Implementierungsverpflichtung für ihre Unterklassen.
Definieren Sie sämtliche Unterklassen von Ausdruck, die im Hauptprogramm verwendet werden. Führen Sie außerdem eine abstrakte Klasse "BinaererAusdruck" ein für die Gemeinsamkeiten der Klassen
"AdditionsAusdruck", "MultiplikationsAusdruck" und eventuell noch hinzukommender Klassen für arithmetische Ausdrücke mit einem zweistelligen Operator. Führen Sie analog dazu eine abstrakte Klasse
"UnaererAusdruck" ein für die Gemeinsamkeiten von "NegativerAusdruck", "QuadratAusdruck" und
eventuell hinzukommender Klassen für arithmetische Ausdrücke mit einem einstelligen Operator. Haben auch
die Klassen "UnaererAusdruck" und "BinaererAusdruck" Gemeinsamkeiten?
Achten Sie bei Ihrer Implementierung darauf, dass Klassen für neue Arten von arithmetischen Ausdrücken mit möglichst wenig Aufwand hinzugefügt werden können und Programmcode so weit wie möglich wiederverwendet wird.
Meine Aufgabe besteht darin, dass ich jetzt die (Unter-)Klassen "KonstanterAusdruck", "Additionsausdruck", "Multiplikationsausdruck", "BinaererAusdruck", "NegativerAusdruck", "QuadratAusdruck" und "UnaererAusdruck" schreibe.
Die Klasse "KonstanterAusdruck" ist eine abgeleitete Klasse (Unterklasse) von "Ausdruck", es geht also um Vererbung, ich würde sie so dekcklarieren
KonstanterAusdruck .java
Code:
public class KonstanterAusdruck extends Ausdruck {
/** Attribute */
private int zahl;
/** Konstruktor */
public KonstanterAusdruck(int z) {
this.zahl = z;
}
/** Methoden */
public int auswerten() {
return this.zahl;
}
}
Problem bekomme ich erst mit der Klasse "AdditionsAusdruck.java" und "BinaererAusdruck.java"
Um das Problem besser auf dem Leim zu gehen, habe ich die vorgegebene Klasse "Rechnen.java" ein wenig verändert, und unterm Name "Rechnen2.java" gespeichert:
[b|Rechnen2.java [/b]
Code:
public class Rechnen2
{
public static void main(String[] args)
{
Ausdruck v = new KonstanterAusdruck(4);
Ausdruck f = new KonstanterAusdruck(5);
Ausdruck v_plus_f = new AdditionsAusdruck(v, f);
System.out.println("4 = " + v.auswerten());
System.out.println("4+5 = " + v_plus_f.auswerten());
}
}
BinaererAusdruck.java
Code:
public abstract class BinaererAusdruck {
/** Attribute */
private Ausdruck operand1;
private Ausdruck operand2;
/** Konstruktor */
public BinaererAusdruck(Ausdruck operand1, Ausdruck operand2) {
this.operand1 = operand1;
this.operand2 = operand2;
}
}
Additionsausdruck.java[/b|
Code:
public class AdditionsAusdruck extends BinaererAusdruck {
/** Attribute */
private Ausdruck operand1;
private Ausdruck operand2;
/** Konstruktor */
public AdditionsAusdruck(Ausdruck operand1, Ausdruck operand2) {
super(operand1, operand2);
}
/** Methoden */
public int auswerten(int op1, int op2) {
return op1 + op2;
}
}
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag Themenstart: 2009-01-09 13:11
Guten Tag,
ich bin ein totaler Java-Anfänger und würde mich bei diesem Problem auf eure Ratschläge sehr freuen
Zwei Klassen "Rechnen.java" und "Ausdruck.java" sind gegeben.
Ausdruck.java
Java
/**
* Abstrakte Klasse für Repräsentationen arithmetischer Ausdrücke.
*
* Jeder arithmetische Ausdruck soll als Bedeutung eine ganze Zahl haben.
* Daher soll jeder Ausdruck ausgewertet werden können,
* indem eine Abbildung auf eine ganze Zahl definiert wird.
*
* Durch Implementieren der Funktion {@link Ausdruck#auswerten()}
* können Unterklassen den Ausdruck für
* eine bestimmte Funktion zu Verfügung stellen.
*/
public abstract class Ausdruck
{
/**
* Funktion zum Auswerten des Ausdrucks.
*
* Bildet diesen Ausdruck auf einen Wert ab,
* der der Bedeutung des Ausdrucks entspricht.
*
* @return der Wert dieses Ausdrucks
*/
public abstract int auswerten();
}
Rechnen.java
Java
/**
* Klasse zur Durchführung einiger Beispielrechnungen mit Ausdrücken.
*/
public class Rechnen
{
/**
* Führt einige Beispielrechnungen mit Ausdrücken durch.
*
* @param args wird nciht benötigt
*/
public static void main(String[] args)
{
Ausdruck v = new KonstanterAusdruck(4);
Ausdruck f = new KonstanterAusdruck(5);
Ausdruck v_plus_f = new AdditionsAusdruck(v, f);
Ausdruck v_mal_f = new MultiplikationsAusdruck(v, f);
Ausdruck quadrat_v_plus_f = new QuadratAusdruck(v_plus_f);
Ausdruck negatives_quadrat_v_plus_f = new NegativerAusdruck(
quadrat_v_plus_f);
System.out.println("4 = " + v.auswerten());
System.out.println("4+5 = " + v_plus_f.auswerten());
System.out.println("4*5 = " + v_mal_f.auswerten());
System.out.println("-((4+5)*(4+5)) = "
+ negatives_quadrat_v_plus_f.auswerten());
}
}
Die Klasse "Ausdruck" dient zur Repräsentation von arithmetischen Ausdrücken in abstrakter Syntax.
Das Hauptprogramm Rechnen erzeugt einige Ausdrücke und ermittelt ihren Wert mit der Methode "auswerten()", die in der Klasse Ausdruck abstrakt deklariert ist. Das heißt, die Klasse enthält keine Implementierung der Methode, sondern nur eine Implementierungsverpflichtung für ihre Unterklassen.
Definieren Sie sämtliche Unterklassen von Ausdruck, die im Hauptprogramm verwendet werden. Führen Sie außerdem eine abstrakte Klasse "BinaererAusdruck" ein für die Gemeinsamkeiten der Klassen
"AdditionsAusdruck", "MultiplikationsAusdruck" und eventuell noch hinzukommender Klassen für arithmetische Ausdrücke mit einem zweistelligen Operator. Führen Sie analog dazu eine abstrakte Klasse
"UnaererAusdruck" ein für die Gemeinsamkeiten von "NegativerAusdruck", "QuadratAusdruck" und
eventuell hinzukommender Klassen für arithmetische Ausdrücke mit einem einstelligen Operator. Haben auch
die Klassen "UnaererAusdruck" und "BinaererAusdruck" Gemeinsamkeiten?
Achten Sie bei Ihrer Implementierung darauf, dass Klassen für neue Arten von arithmetischen Ausdrücken mit möglichst wenig Aufwand hinzugefügt werden können und Programmcode so weit wie möglich wiederverwendet wird.
Meine Aufgabe besteht darin, dass ich jetzt die (Unter-)Klassen "KonstanterAusdruck", "Additionsausdruck", "Multiplikationsausdruck", "BinaererAusdruck", "NegativerAusdruck", "QuadratAusdruck" und "UnaererAusdruck" schreibe.
Die Klasse "KonstanterAusdruck" ist eine abgeleitete Klasse (Unterklasse) von "Ausdruck", es geht also um Vererbung, ich würde sie so dekcklarieren
KonstanterAusdruck.java
Code:
public class KonstanterAusdruck extends Ausdruck {
/** Attribute */
private int zahl;
/** Konstruktor */
public KonstanterAusdruck(int z) {
this.zahl = z;
}
/** Methoden */
public int auswerten() {
return this.zahl;
}
}
Problem bekomme ich erst mit der Klasse "AdditionsAusdruck.java" und "BinaererAusdruck.java"
Um das Problem besser auf dem Leim zu gehen, habe ich die vorgegebene Klasse "Rechnen.java" ein wenig verändert, und unterm Name "Rechnen2.java" gespeichert:
Rechnen2.java
Code:
public class Rechnen2
{
public static void main(String[] args)
{
Ausdruck v = new KonstanterAusdruck(4);
Ausdruck f = new KonstanterAusdruck(5);
Ausdruck v_plus_f = new AdditionsAusdruck(v, f);
System.out.println("4 = " + v.auswerten());
System.out.println("4+5 = " + v_plus_f.auswerten());
}
}
BinaererAusdruck.java
Code:
public abstract class BinaererAusdruck {
/** Attribute */
private Ausdruck operand1;
private Ausdruck operand2;
/** Konstruktor */
public BinaererAusdruck(Ausdruck operand1, Ausdruck operand2) {
this.operand1 = operand1;
this.operand2 = operand2;
}
}
AdditionsAusdruck.java
Code:
public class AdditionsAusdruck extends BinaererAusdruck {
/** Attribute */
private Ausdruck operand1;
private Ausdruck operand2;
/** Konstruktor */
public AdditionsAusdruck(Ausdruck operand1, Ausdruck operand2) {
super(operand1, operand2);
}
/** Methoden */
public int auswerten(int op1, int op2) {
return op1 + op2;
}
}
Das Compilieren von "Ausdruck.java" , "BinaererAusdruck.java" , "KonstanterAusdruck.java" und "AdditionsAusdruck.java" liefen reibungslos.
Aber wenn ich dann die Klasse "Rechnen2.java" compilieren möchte, also
javac Rechnen2.java
, wird Fehlermeldung gezeigt.
Ich hoffe, ich habe mein Problem präzis beschrieben.
Besten Dank an euch
LG