You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Saturday, November 6th 2010, 7:38pm

BlueJ Vererbung

Hallo :D

ich heiße Marcel und besuche ein Gymnasium in der Eph. Leider kann ich mich mit dem Fach Informatik nicht so leicht anfreunden ;) wir bekommen wöchentlich Aufgaben gestellt die aus einem Fragen-Teil und einer Programmieraufgabe bestehen. Vor kurzen hatte ich eine Mandelentzündung und habe dadurch zwei wochen gefehlt, unser Lehrer war die Letzten Stunden nicht da und gab uns als Aufgabe, die gegebenen Aufgaben zu bearbeiten und Hochzuladen. Dadurch kann ich die Aufgaben meist nur über Google lösen, aber fast immer kommt dabei nicht sehr viel bei raus. Deswegen hoffe ich, dass ihr mir helfen könnt :)

Es wäre wirklich super nett von euch mir dabei zu helfen :)

Die Aufgaben für diese Woche lauten:




Wochenaufgaben - Blatt 7 GK Eph IF - Sa


für die Zeit vom 2.11.10 bis 7.11.10




Aufgabe 14 - Fragen



1. Beschreibe, was man in der Programmierung unter


"Vererbung" versteht und wozu "Vererbung" nützlich ist.



2. Folgendes Beispiel zeigt die Programmierung einer Klasse, die von einer


anderen Klasse erbt. Warum kann der Stift mit "this" angesprochen


werden? Warum muss kein Bildschirm und kein normaler Stift erzeugt


werden?



Aufgabe 15 (Programmieraufgabe)
· Programmiere eine Klasse "Spezialstift", die alle Methoden der


Klasse "
Buntstift" enthält und zusätzlich folgende Methoden bietet:


·
zeichneStern(int kantenlaenge)


Diese Methode zeichnet an der aktuellen Position des Stiftes einen


gelben
Stern mit der Kantenlänge "kantenlaenge".


·
zeichneGefuelltenKreis(int radius, int f)


Diese Methode zeichnet an der aktuellen Position des Stiftes einen
[b]

ausgefüllten
Kreis in der Farbe, die als Parameter f übergeben wird.


·
resetStift()


Diese Methode setzt den Stift in den Ursprungszustand zurück (Winkel,


Position, Farbe, etc.)
· Programmiere eine weitere Klasse mit dem Namen


"Spezialstifttest". Diese soll als Stift die zuvor programmierteKlasse "Spezialstift" benutzen. Teste mit der Klasse


"Spezialstifttest" die in der Klasse "Spezialstift"


programmierten Methoden.[b]



Lade die Lösung aller Aufgaben wie gewohnt in Moodle hoch! Die Abgabe
besteht aus drei Text-Dateien (A14, A15 "Spezialstift" und "Spezialstifttest").
[/b]
[/b]
Marcel Porsche has attached the following file:

This post has been edited 4 times, last edit by "Marcel Porsche" (Nov 7th 2010, 8:16pm)


2

Saturday, November 6th 2010, 8:48pm

Das hab ich jetzt geschrieben aber da ist irgendein Fehler drin. Könnt ihr bitte einmal nachschauen :)

Danke schonmal im vorraus ;)

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import sum.kern.*; 
/** 
* @M.Porsche * @version 1.0 
*/ 
public class Spezialstift extends Buntstift 
{ 
// Objekte 
Bildschirm derBildschirm; 
Spezialstift meinStift; 
 
// Konstruktor 
public Spezialstift() 
{ 
derBildschirm = new Bildschirm(400,400); 
meinStift = new Spezialstift(); 
} 
 
public void zeichneGefuelltenKreis(int radius, int f) 
{ 
meinStift.zeichneGefuelltenKreis(radius,f); 
} 
public void zeichneStern(int zackenlaenge) 
{ 
meinStift.setzeFarbe(Farbe.GELB); 
meinStift.setzeFuellmuster(Muster.GEFUELLT); 
meinStift.dreheBis(180); 
meinStift.runter(); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(144); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(-72); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(144); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(-72); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(144); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(-72); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(144); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(-72); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(144); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.hoch(); 
} 
public void resetStift() 
{ 
meinStift.hoch(); 
meinStift.bewegeBis(0,0); 
meinStift.dreheBis(O); 
meinStift.setzeFarbe(Farbe.SCHWARZ); 
} 
// Dienste 
public void fuehreAus() 
{ 
// Aktionsteil 
meinStift.bewegeBis(200,200); 
this.zeichneStern(20); 
this.zeichneGefuelltenKreis(50,Farbe.ROT); 
this.resetStift(); 
// Aufraeumen 
meinStift.gibFrei(); 
derBildschirm.gibFrei(); 
} 
}

This post has been edited 1 times, last edit by "Marcel Porsche" (Nov 7th 2010, 12:32pm)


3

Saturday, November 6th 2010, 11:56pm

Den Fehler kann ich dir leider nicht nennen (nich gefunden). Was läuft denn nicht, was sagt dir der compiler?
Die Fragen solltest du ganz gut googeln können.
mfg Zwergling

Btw: wenn du beim schreiben des Posts Unter syntax die Kaffetasse anklickst und den code in die erstelllten tags setzt lässt sich dein code besser lesen.
Sieht dann etwa so aus:

Java Quellcode

1
2
3
4
public void zeichneGefuelltenKreis(int radius, int f)
{
meinStift.zeichneGefuelltenKreis(radius,f);
}

Und gut wäre es auch wenn du den code einrücken würdest

P.P.S:
Vererbung
P.P.P.S:
In Zeile 61 musst du einen int übergeben, statt einer 0(null) hast du aber ein "O" (buchstabe zwischen i und p) übergeben.
P.P.P.P.S:
Überleg mal was der Konstruktor in deinem Programm genau macht, dann wirst du auf problem 2 kommen (öffnen tausender fenster).
Wahlweise kannst du auch meine Posts durchsuchen hab den Fehler auch schon gemacht :P

This post has been edited 1 times, last edit by "Zwergling" (Nov 7th 2010, 12:04am)


4

Sunday, November 7th 2010, 12:30pm

Dankeschön :D

Danke für den Tipp ^^
Für den Stern hab ich nochmal die Winkel überarbeitet und einen symmetrischen Stern hinbekommen :P Ich weiß gar nicht wie ich es geschafft hab da ein"O" hin zu bekommen 8) In deinen Posts hab ich gelesen, dass du einen Namen doppelt benutzt hast, aber ich weiß nicht genau, was ich im Konstruktor ändern soll ?( Nennt mas soetwas dann Endlosschleife?

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import sum.kern.*; 
/** 
* @M.Porsche 
* @version 1.0 
*/ 
public class Spezialstift extends Buntstift 
{ 
// Objekte 
Bildschirm derBildschirm; 
Spezialstift meinStift; 
 
// Konstruktor 
public Spezialstift() 
{ 
derBildschirm = new Bildschirm(400,400); 
meinStift = new Spezialstift(); 
} 
public void zeichneGefuelltenKreis(int radius, int f) 
{ 
meinStift.zeichneGefuelltenKreis(radius,f); 
} 
public void zeichneStern(int zackenlaenge) 
{ 
meinStift.setzeFarbe(Farbe.GELB); 
meinStift.setzeFuellmuster(Muster.GEFUELLT); 
meinStift.dreheBis(180); 
meinStift.runter(); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(108); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(324); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(108); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(324); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(108); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(324); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(108); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(324); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.dreheUm(108); 
meinStift.bewegeUm(zackenlaenge); 
meinStift.hoch(); 
} 
public void resetStift() 
{ 
meinStift.hoch(); 
meinStift.bewegeBis(0,0); 
meinStift.dreheBis(0); 
meinStift.setzeFarbe(Farbe.SCHWARZ); 
} 
// Dienste 
public void fuehreAus() 
{ 
// Aktionsteil 
meinStift.bewegeBis(200,200); 
this.zeichneStern(20); 
this.zeichneGefuelltenKreis(50,Farbe.ROT); 
this.resetStift(); 
// Aufraeumen 
meinStift.gibFrei(); 
derBildschirm.gibFrei(); 
} 
}

5

Sunday, November 7th 2010, 1:07pm

Java Quellcode

1
meinStift = new Spezialstift();

Das darf da nicht stehen, weil du damit wieder den Konstruktor von Spezialstift aufrufst ;) und so endlos den Konstruktor neu aufrufst.

6

Sunday, November 7th 2010, 2:40pm

Cool :D Wenn ich den Quelltext deklariere steht da 'Klasse übersetzt Keine Syntaxfehler' :) aber wenn ich das Programm ausführe weist er mich auf verschiedene Zeilen hin und sagt 'java.lang.NullPointerExpcetion: null'. ?(

This post has been edited 1 times, last edit by "Marcel Porsche" (Nov 7th 2010, 6:41pm)


7

Sunday, November 7th 2010, 7:40pm

passiert bei mir auch, aber leider kann ich dir nicht sagen wo das Problem ist, da muss dir ein andrer hier im Forum helfen.

Edit: wenn ich richtig ergooglet hab könnte der Fehler sein, das ein erwarteter Wert "null" ist, also du noch ein andrer Wert übergeben werden muss, aber wie du dein Problem lößt, weiß ich nicht.

This post has been edited 2 times, last edit by "Zwergling" (Nov 7th 2010, 7:50pm)


8

Sunday, November 7th 2010, 7:57pm

Dankeschön :) Ich hab auch gegoogelt, da kam dann raus, dass das Objekt nicht zugewiesen werden kann. Trotzdem vielen Dank :)

9

Monday, November 8th 2010, 9:27am

Es wäre ganz gut zu wissen wenn ihr schreibt wo die Nullpointerexception geworfen wird ;)

10

Monday, November 8th 2010, 9:34pm

Direkt in Zeile 28, zumindest wenn ich den stern zeichnen lasse, allerdings scheint das Problem generell aufzutreten.

Und was mir noch aufgefallen ist, du übergibst bei zeichneGefuelltenKreis als Farbe einen int, müsste das nicht ein string sein? Und ich find die Methode zeichneGefuelltenKreis(int radius, int farbe) nicht in der Dokumentation. Sicher, dass du das in Zeile 18 so machen kannst?


Edit: Ich find da nur

Java Quellcode

1
zeichneKreis(double pRadius)
in der Doku von Buntstift.

This post has been edited 1 times, last edit by "Zwergling" (Nov 8th 2010, 10:09pm)


Similar threads

Social bookmarks