Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Vererbung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Vererbung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
javaneu
unregistriert
Vererbung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo ich habe gerade bei dieser Aufgabe probleme:

In dieser Aufgabe sollen Sie mathematische Ausdrücke
objektorientiert modellieren und dabei die Eigenschaften der Vererbung ausnutzen.
a) Erstellen Sie dazu zunächst ein Interface Term, dass nur die Methode public int getValue()
enthält.
b) Schreiben Sie eine Klasse AbsoluteTerm, die Term implementiert. Jedes Objekt dieser Klasse soll
einen (unveränderlichen) int-Wert speichern, der dem Konstruktor als Parameter übergeben wird.
Die Methode getValue() der Klasse soll diesen Wert zurückgeben.
c) Schreiben Sie als Nächstes die abstrakte Klasse BinaryOperation, die ebenfalls das Interface
Term implementiert. Schreiben Sie die Methoden public Term getLeft() und public Term
getRight(), die den linken bzw. rechten im Konstruktor festgelegten Operanden der Operation
zurückgeben. Die Methode getValue() schreiben Sie hier nicht ? warum geht das?
d) Erstellen Sie die Klasse Addition als Unterklasse von BinaryOperation und implementieren Sie
nun die Methode getValue() so, dass diese die arithmetische Summe der beiden Operanden berechnet
und zurückgibt. Vergessen Sie den Konstruktor der Klasse nicht.
e) Implementieren Sie die Klasse Factorial, die die Fakultät eines anderen Ausdrucks berechnet.
Überlegen Sie sich, was eine geeignete Oberklasse bzw. -interface sein könnte.
f) Überlegen Sie sich weitere mathematische Operationen und implementieren Sie diese, wie z.B. die
Exponentiation: ab. Ggf. müssen Sie Klassen weiterer Grundrechenarten
erstellen.
Zur Erinnerung: Fakultät von n ist definiert als: n! = 1  2  3  . . .  n

Meine Ideen:
Interface

code:
1:
2:
3:
4:
5:
6:
7:
8:
public interface Term
{
    public int getValue();
    
}




class Habe es so versucht
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public class AbsoluteTerm implements Term
{
   Wie soll der Konstruktor sein?

Echt doch nichts konkretes?


}

28.02.2015 12:44
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

So soll der Konstruktor sein:
code:
1:
2:
3:
AbsoluteTerm(int value) {
    //hier kommt noch was
}


__________________
Syntax Highlighting fürs Board (Link)
28.02.2015 12:55 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
javaneu
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public class AbsoluteTerm implements Term
{AbsoluteTerm(int value) {
    
    this.value = value;
    //hier kommt noch was
}

public static void getValue(){
    return this.value;

}
}


Mir wird nur hier ein Fehler angezeigt:
public class AbsoluteTerm implements Term
Absolute term is not abstract and does not override abstract method getValue
28.02.2015 13:21
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,

getValue() darf nicht static sein. Methoden und Felder sind nur als static zu kennzeichnen, wenn man sie ohne ein Objekt zu erzeugen aufrufen will.

Hier ein Beispiel zur Funktionsweise von static:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
public class Beispiel{
	public static void statischeMethode(){
		System.out.println("Statische Methode aufgerufen.");
	}
	public void objektMethode(){
		System.out.println("Objektmethode aufgerufen.");
	}

	public static void main(String[] args){
		Beispiel.statischeMethode();
		//Beispiel.objektMethode();    //Geht nicht, weil vorher ein Objekt erzeugt werden muss
		Beispiel bsp = new Beispiel(); //Hier wird ein Objekt vom Typ Beispiel erzeugt und der 
																	 //Variable bsp zugewiesen
		bsp.objektMethode();
		bsp.statischeMethode();        //Geht auch
	}
}


Gruß,

Karlito
28.02.2015 15:03 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
javaneu
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
 
public class AbsoluteTerm implements Term
{AbsoluteTerm(int value) {
    
    this.value = value;
    //hier kommt noch was
}

public  void getValue(){
    return this.value;

}
}              


Die Fehlermeldung bleibt trotzdem ?
28.02.2015 16:46
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ja, weil der Rückgabetyp nicht stimmt. Im Interface soll getValue() int zurückgeben. In der Klasse gibst du void (also nichts) zurück. Die Rückgabetypen müssen übereinstimmen. Im Prinzip kann man den Funktionskopf aus dem Interface kopieren. Sorry, dass ich das vorhin übersehen habe.

Edit: Weiterhin fällt mir gerade auf, dass es kein Feld value gibt. Deswegen solltest Du gleich noch mehr Fehler bekommen, weil this.vaiue nicht existiert.

Gruß,

Karlito
28.02.2015 16:59 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
javaneu
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:

public class AbsoluteTerm implements Term
{AbsoluteTerm(int value) {
    
    this.value = value;
    //hier kommt noch was
}

public  int getValue(){
    return this.value;

}
}




Aber wie soll ich sonst was zurückgeben ,wenn nicht mit value?
28.02.2015 17:05
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wie gesagt, es fehtl ein entpreichendes Feld in der Klasse:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public class AbsoluteTerm implements Term
{
	private int value; //dieses (private) Feld fehlt...

	AbsoluteTerm(int value) {
		this.value = value;
		//hier kommt noch was
	}

	public  int getValue(){
		return this.value;
	}
}


Diese Felder werden im Normalfall immer als private gekennzeichnet um dem Geheimnisprinzip gerecht zu werden.

Gruß,

Karlito
28.02.2015 17:53 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
javaneu
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

public class AbsoluteTerm implements Term
{
private int value; //dieses (private) Feld fehlt...

AbsoluteTerm(int value) {
this.value = value;
//hier kommt noch was
}

Ich komme gerade nicht darauf , was ich noch hinzufügen kann?
28.02.2015 18:34
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Der Beitrag eins über dir sieht doch gut aus.
Ich habe es jetzt nicht extra in eclipse kopiert, behaupte aber, da fehlt nichts mehr.

__________________
Syntax Highlighting fürs Board (Link)
28.02.2015 18:41 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zeile 3 war das was gefehlt hatte. Ich habe es hinzugefügt.

Gruß,

Karlito
28.02.2015 18:58 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
javaneu
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public class AbsoluteTerm implements Term
{AbsoluteTerm(int value) {
    
    this.value = value;
    //hier kommt noch was
}

public  int getValue(){
    return this.value;

}
}

Mein blue j meckert aber trotzdem das cannot find symbol ( variabel value)
28.02.2015 19:13
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

So weit waren wir doch schon!
private int value; //dieses (private) Feld fehlt...

__________________
Syntax Highlighting fürs Board (Link)
28.02.2015 19:14 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Schau dir meinen Code an und deinen und ziehe deine Schlüsse...
28.02.2015 19:15 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
javaneu
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

public class AbsoluteTerm implements Term{

private int value;
{AbsoluteTerm(int value) {
    
    this.value = value;
    //hier kommt noch was
}

public  int getValue(){
    return this.value;

}
}






Immer noch Fehler anzeige .class expected.

Tut mir leid wenn ich euch ein wenig nerve .
Programmieren ist kompletttes neuland für mich im moment.
28.02.2015 19:32
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Vererbung