Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Sinan

Senior Schreiberling

  • "Sinan" is male
  • "Sinan" started this thread

Posts: 1,021

Date of registration: Jul 5th 2003

Location: Malaga

Occupation: Senior Cloud Solution Engineer bei Oracle

1

Saturday, May 22nd 2004, 8:47pm

Java Übung 5

Hallo,
Die Seite
http://www.gdv.uni-hannover.de/doc/j2sdk-1_4_2-doc/api/
öffnet sich bei mir nicht :(
Kann sie nur innerhalb des Netzes der Uni abgerufen werden ?(
oder hat es jemand schon von zu Hause öffnen können?

Danke
With great power comes great responsibility

Benjamin

Segelnder Alter Hase

  • "Benjamin" is male

Posts: 3,827

Date of registration: Oct 1st 2002

Location: Region Hannover

Occupation: Alumni

2

Saturday, May 22nd 2004, 9:05pm

bei einem spontanen Test ging sie soeben bei mir ( !130.75.*) :P

schönes Wochenende!
Es gibt nur eine bessere Sache als auf dem Wasser zu sein: Noch mehr auf dem Wasser sein.

Sinan

Senior Schreiberling

  • "Sinan" is male
  • "Sinan" started this thread

Posts: 1,021

Date of registration: Jul 5th 2003

Location: Malaga

Occupation: Senior Cloud Solution Engineer bei Oracle

3

Saturday, May 22nd 2004, 9:19pm

Quoted

Original von metalhen
bei einem spontanen Test ging sie soeben bei mir ( !130.75.*) :P
schönes Wochenende!


huuh, endlich geht es auch bei mir (aber erst beim 17 Versuch) :rolleyes:
na ja, ist auch egal, denn jetzt habe ich 'ne andere Frage :D
Ich habe ue5test.jar entpackt und außer e1 bis e5.np noch endlos1, hello und home.np gefunden. Sind diese auch fehlerhaft und muss der Interpreter entsprechend modifiziert werden?

schönes Wochenende dir auch allen anderen auch :]
With great power comes great responsibility

NullAhnung

Erfahrener Schreiberling

  • "NullAhnung" is female

Posts: 332

Date of registration: Apr 28th 2003

4

Sunday, May 23rd 2004, 2:16pm

Mein Problem ist: Wie teste ich den Interpreter mit den Beispielen? :rolleyes: ?(

Sinan

Senior Schreiberling

  • "Sinan" is male
  • "Sinan" started this thread

Posts: 1,021

Date of registration: Jul 5th 2003

Location: Malaga

Occupation: Senior Cloud Solution Engineer bei Oracle

5

Sunday, May 23rd 2004, 2:19pm

Quoted

Original von NullAhnung
Mein Problem ist: Wie teste ich den Interpreter mit den Beispielen? :rolleyes: ?(

ganz einfach :D
java Interpreter e1.np
With great power comes great responsibility

Arne

ThI

  • "Arne" is male

Posts: 1,798

Date of registration: Oct 7th 2002

Location: Hannover :)

Occupation: Lecturer ThI

6

Sunday, May 23rd 2004, 10:26pm

Quoted

Original von Sinan
Sind diese auch fehlerhaft und muss der Interpreter entsprechend modifiziert werden?


korrekt, dass ist Sinn und Zweck der Aufgabe ;) du musst den Interpreter so erweitern, dass jene Exceptions korrekt behandelt werden.
"NP - The class of dashed hopes and idle dreams." Complexity Zoo

Sinan

Senior Schreiberling

  • "Sinan" is male
  • "Sinan" started this thread

Posts: 1,021

Date of registration: Jul 5th 2003

Location: Malaga

Occupation: Senior Cloud Solution Engineer bei Oracle

7

Sunday, May 23rd 2004, 10:44pm

und soll man die Exceptions nur auffangen, sodass das Programm weiterläuft, oder mussen die Fehler auch dabei korrigiert werden? (kann man überhaupt die Fehler innerhalb des catch-Blocks korrigieren?)
Danke
With great power comes great responsibility

Arne

ThI

  • "Arne" is male

Posts: 1,798

Date of registration: Oct 7th 2002

Location: Hannover :)

Occupation: Lecturer ThI

8

Sunday, May 23rd 2004, 11:18pm

Du sollst halt, wie es die Aufgabenstellung vorsieht, jene Exceptions mittels try&catch abfangen. In der Regel wird bei so einer Behandlung nur die jeweilige Exception im Catchblock am Bildschrim ausgegeben. Sinn dabei ist, dass das Programm an sich nicht wirklich abstürzt, sondern aufgrund des try&catch korrekt beendet und der Fehler abgefangen wird.
Siehe auch http://www.galileocomputing.de/openbook/…70001.htm#bild1
"NP - The class of dashed hopes and idle dreams." Complexity Zoo

Benjamin

Segelnder Alter Hase

  • "Benjamin" is male

Posts: 3,827

Date of registration: Oct 1st 2002

Location: Region Hannover

Occupation: Alumni

9

Monday, May 24th 2004, 7:48am

Fehler korrigieren soll man ja nicht direkt. Man soll nur die Exceptions mittels try/catch abfangen, damit sie das laufende Programm nicht unterbrechen.
Die Exceptions entstehen in der Aufgabe auch nicht, da der gelieferte Code falsch ist, sondern aus anderem Grund: Der gelieferte Interpreter interpretiert die mitgelieferten Beispiele, welche semanstische/syntaktische Fehler aufweisen. Man soll den Interpreter nun so anpassen, dass er dem Anwender in solchen Fällen quasi darauf hinweist, was am entsprechendne .np-Programm nicht stimmt. Man soll also nicht nur simple einfach die Exceptions abfangen, sondern auch verstehen warum sie geworfen wurden und dem Benutzer des Interpreters Infos dazu ausgeben.
Es gibt nur eine bessere Sache als auf dem Wasser zu sein: Noch mehr auf dem Wasser sein.

Cpt. Iglu

Trainee

  • "Cpt. Iglu" is male

Posts: 83

Date of registration: Oct 9th 2003

10

Monday, May 24th 2004, 3:24pm

Quoted

Man soll also nicht nur simple einfach die Exceptions abfangen, sondern auch verstehen warum sie geworfen wurden und dem Benutzer des Interpreters Infos dazu ausgeben.

Man kann mit .getMessage() eine detailliertere Fehlermeldung (sofern möglich) und mit .getClass().getName() den eigentlichen Typ des Ausnahmeobjekts abfragen.

Eigentlich würde ich aber bei "externen Fehlern" Assertions, statt Exceptions bevorzugen (also mit .check() und throw arbeiten). :D

Welche Exception habt ihr eigentlich gewählt? Doch nicht etwa die Superklasse? Ich denke mal, dass schreit nach einer neuen "unique" Tochterklasse, quasi extra für diese Aufgabe ;P.
"Intuitive Software ist leicht zu lernen. Man muß nur lange genug mit ihr arbeiten."

Ponder Stibbons

This post has been edited 1 times, last edit by "Cpt. Iglu" (May 24th 2004, 3:25pm)


Benjamin

Segelnder Alter Hase

  • "Benjamin" is male

Posts: 3,827

Date of registration: Oct 1st 2002

Location: Region Hannover

Occupation: Alumni

11

Monday, May 24th 2004, 5:47pm

Quoted

Original von Cpt. Iglu

Quoted

Man soll also nicht nur simple einfach die Exceptions abfangen, sondern auch verstehen warum sie geworfen wurden und dem Benutzer des Interpreters Infos dazu ausgeben.

Man kann mit .getMessage() eine detailliertere Fehlermeldung (sofern möglich) und mit .getClass().getName() den eigentlichen Typ des Ausnahmeobjekts abfragen.


Das ist aber trotzdem wohl anders gewollt? Wie ich schon sagte, soll man auch möglichst etwas vom Interpreter verstehen, der in einem minimalen Maße semantisch/syntaktisch parst. Die Exceptions haben nun aber direkt nichts mit z.B. der Syntax von npBasic nichts zu tun und die Transferleistung für den Studenten ist es die Exceptions abzufangen und zu sagen, wegen welchem z.B. syntaktischer Fehler im np-Programm der Interpreter abbricht. Dies kann ein vergessenes Symbol sein, eine nicht definierte Variable, eine nicht passende Zuweisung, ein Semikolon zuviel, ...
Ein simples Ausgeben der Java-Infos zu den Exceptions wäre auch eine etwas stumpfsinnige Arbeit, spätestens wenn man ab der 2ten Exception nur Copy&Paste des try/catch-Blocks machen würde.
Es gibt nur eine bessere Sache als auf dem Wasser zu sein: Noch mehr auf dem Wasser sein.

np

Junior Schreiberling

Posts: 155

Date of registration: Oct 23rd 2002

12

Tuesday, May 25th 2004, 8:47am

Quoted

Original von metalhen

Quoted

Original von Cpt. Iglu

Quoted

Man soll also nicht nur simple einfach die Exceptions abfangen, sondern auch verstehen warum sie geworfen wurden und dem Benutzer des Interpreters Infos dazu ausgeben.

Man kann mit .getMessage() eine detailliertere Fehlermeldung (sofern möglich) und mit .getClass().getName() den eigentlichen Typ des Ausnahmeobjekts abfragen.


Das ist aber trotzdem wohl anders gewollt? Wie ich schon sagte, soll man auch möglichst etwas vom Interpreter verstehen, der in einem minimalen Maße semantisch/syntaktisch parst. Die Exceptions haben nun aber direkt nichts mit z.B. der Syntax von npBasic nichts zu tun und die Transferleistung für den Studenten ist es die Exceptions abzufangen und zu sagen, wegen welchem z.B. syntaktischer Fehler im np-Programm der Interpreter abbricht. Dies kann ein vergessenes Symbol sein, eine nicht definierte Variable, eine nicht passende Zuweisung, ein Semikolon zuviel, ...
Ein simples Ausgeben der Java-Infos zu den Exceptions wäre auch eine etwas stumpfsinnige Arbeit, spätestens wenn man ab der 2ten Exception nur Copy&Paste des try/catch-Blocks machen würde.

metalhen hat recht: Der Aufgabenzettel fordert, die Fehler abzufangen und geeignet zu behandeln. Dies umfasst natürlich, sich zu überlegen, warum hier bestimmte Fehler auftreten, und sich dann eine passendere Exception-Klasse hierfür zu definieren.

Beispiel: Der Benutzer hat sicher nichts von einer Ausgabe wie "Hier ist ein null-Zeiger aufgetreten." Sinnvoller wäre: "Das Sprungziel "lop" existiert nicht."

Dies wurde in der Vorlesung unter dem Stichwort "Kapselungsprinzip bei Exceptions" angesprochen.

Uprooter

Junior Schreiberling

  • "Uprooter" is male

Posts: 249

Date of registration: Oct 7th 2003

Occupation: Angw. Inf.

13

Tuesday, May 25th 2004, 10:09pm

alles blödsinn, man guckt in der docu die art des fehlers nach, lässt was von der beschreibung auf dem monitor ausgeben und die try-anweisung packt man in die zeile, die einem nach dem fehlerhaften ausführen gezeigt wird. nach einigen probeversuchen taucht dr fehler nicht mehr auf und das beste ist man braucht nichts von dem interpreter zu verstehen. der prüfer ist zufrieden und man hat was dazugelernt(oder vllt doch nicht?) super übung*daumen hoch*

Uprooter

Junior Schreiberling

  • "Uprooter" is male

Posts: 249

Date of registration: Oct 7th 2003

Occupation: Angw. Inf.

14

Tuesday, May 25th 2004, 11:13pm

naja, ich find das nicht unbedingt gut, dass 1. die aufgabenstellung, und zwar seit der ersten übung, ziemlich ungenau ist und 2. der übungsleiter nicht so genau hinguckt. mir sind die übunspunkte ziemlich egal, aber ich will schon wissen, wenn ich n fehler gemacht habe und wie ich ihn korrigieren kann, sonst fall ich durch und die punkte bringen nix. aber bei dem übungsbetrieb am dienstag erwarte ich auch nicht mehr als es jetzt ist, denn diese übungsstunde ist total überfüllt und der leiter kommt einfach nicht hinterher.

np

Junior Schreiberling

Posts: 155

Date of registration: Oct 23rd 2002

15

Wednesday, May 26th 2004, 9:06am

Quoted

Original von Uprooter
naja, ich find das nicht unbedingt gut, dass 1. die aufgabenstellung, und zwar seit der ersten übung, ziemlich ungenau ist und

Ich darf hier einmal den Übungszettel zitieren: "Testen Sie den Interpreter mit den beigefügten Beispielen, die Programme e1.np bis e5.np sind fehlerhaft. Modifizieren Sie den Interpreter so, dass diese Fehler mittels Exceptions abgefangen und passend behandelt werden."
Was kann man denn daran missverstehen?

1. Die Programme e1.np bis e5.np sind fehlerhafte Beispielprogramme.
2. Modifizieren Sie den Interpreter so, dass diese Fehler (die in den Programmen e1.np bis e5.np) abgefangen und passend behandelt werden. Benutzen Sie dazu Exceptions.

Ich kann mir beim besten Willen keine klarere und kürzere Formulierung vorstellen. Vielleicht programmiere ich schon zu lange oder habe zuviel Mathe studiert, aber wenn jemand der Auffassung ist, dass dies missverständlich ist, bitte ich darum eine alternative Formulierung vorzuschlagen, vielleicht gelingt es mir dann endlich, zu verstehen, was an den Übungszetteln so kompliziert sein soll.

Im übrigen habe ich schon einmal darum gebeten, Kritik sofort zu äußern, und zwar an konkreten Beispielen. Nur dann habe ich die Möglichkeit, die Zettel beim nächsten mal zu verbessern.

Quoted

2. der übungsleiter nicht so genau hinguckt. mir sind die übunspunkte ziemlich egal, aber ich will schon wissen, wenn ich n fehler gemacht habe und wie ich ihn korrigieren kann, sonst fall ich durch und die punkte bringen nix. aber bei dem übungsbetrieb am dienstag erwarte ich auch nicht mehr als es jetzt ist, denn diese übungsstunde ist total überfüllt und der leiter kommt einfach nicht hinterher.

Jetzt überlegen wir einmal gemeinsam, woran es liegt, dass diese Übung so überfüllt ist. Ich erinnere mich, in der ersten und zweiten Vorlesung und auf dem ersten Übungszettel darum gebeten zu haben, dass sich nicht mehr als 20 Studierende einer Übung zuordnen. Auf den Listen habe ich 30 Positionen vorgesehen, da dies (nach meiner Einschätzung) die Maximalzahl der Teilnehmer ist. Ein Blick auf die Meldeliste sagt mir, dass sich dort aber 36 Personen eingetragen haben.

Ich könnte also dem Übungsleiter empfehlen, die letzten 6 Teilnehmer einfach zu streichen und in Zukunft nur noch Aufgaben von Personen abzunehmen, die auf Positionen <=30 stehen. Auch könnte ich zu jedem Zettel verbindliche Regeln erlassen, wann jemand keine Punkte bekommt. ("Aber das Programm läuft doch!" "Tut mir leid, e5 wird nicht korrekt behandelt. 0 Punkte.")

Ein solches Vorgehen wäre sicher weder in meinem noch in Eurem Interesse. Deshalb hoffe ich auf beiderseitige Vernunft und verweise auf eine weniger überfüllte Blockzeit, wie z.B. E (Do 11.30-13.00) oder F/G/H (Fr. 13.00-17.30)

Niklas Peinecke

This post has been edited 1 times, last edit by "np" (May 26th 2004, 9:06am)


Uprooter

Junior Schreiberling

  • "Uprooter" is male

Posts: 249

Date of registration: Oct 7th 2003

Occupation: Angw. Inf.

16

Thursday, May 27th 2004, 6:47pm

ja dann mach es doch, streich die leute weg, die es nicht gerafft haben, dass nicht mehr als 20 leute in einer übung gewollt sind, sonst haben doch diese reden keinen sinn. wieso soll die ordnungsgemäße korrektur meiner oder der aufgaben anderer leute daran leiden, dass viele studenten sich nciht an die vorgaben halten können? wenn denen die anderen zeiten nich passen, dann pech. ich durfte letztes sem auch immer montags in die uni für nur eine übung.

für mich persönlich ist das "passend behandelt" etwas schwammig formuliert(ich meine die übung 5), denn eine einfache textausgabe halte ich nicht für eine behanlung, sondern eher "aufmerksammachen" auf einen aufgetretenen fehler. kann ja sein, dass exceptions immer so behandelt werden, aber woher soll ich denn das wissen? und genau das ist der knackpunkt für mich und einge andere leute, die noch nicht so viel bzw. keine erfahrung mit java haben. die erste übung zB: abgesehen davon, dass ich mich bei dieser übung sehr schwer getan habe, bis es mir endlich erklärt wurde, finde ich 2 dinge an dieser übung etwas unverständlich
1. "Sehen Sie außerdem passende get- und set-Methoden vor und ¨uberlegen Sie,welche Konstruktoren sinnvoll sind." ich habe mir die vorlesung wirklich genau angehört und mir das skript 2-3 mal durchgelesen, ich wusste beim besten willen nciht was genau! von mir erwartet wird. ich finde diese formulierung ungenau.
2."Verwenden Sie z.B. die Methode parseDouble der Klasse Double, um ein String-Argument in eine Zahl
umzuwandeln." die korrekte syntax wäre dazu ja Double.praseDouble(args[]), jedoch hat mir persönlich der hinweis "der Klasse Double" nichts gebracht, ich habe parseDouble(args[]) geschrieben und es gab einen fehler, ich hab mir stundenlang den kopf zerbrochen wieso.

sehen wir uns die 2 übung an:
1."Leiten Sie nun FarbeCMY von Farbe ab. Modifizieren Sie die get- und set-Methoden und Konstruktoren von
FarbeCMY derart, dass die Rot-, Gr¨un- und Blauwerte auch aktualisiert werden." ich verstehe auch jetzt noch nciht vollständig was mit "aktualisiert" gemeint ist. ich vermute, dass es mit der vererbung was zu tun hat und zwar, dass wenn ich eine instanz in der subklasse erstelle gleichzeitig eine instanz mit dem selben namen in der basisklasse erstellt wird und deren werte aut. auf 0 gesetzt werden, diese soll man dann aktuallisieren. darüber erfuhr ich aber erst bei der vorführung.

2.niemand hat ein wort darüber verloren, dass wenn ich einen kontruktor erstelle aut. eine super-anweisung erstellt wird, die keine argumente bekommt, also sucht sie in der basisklasse nach einem leeren konstruktor, den hat man aber nicht erstellt, wozu auch?

in der 3 übung hat man sich dann schon n dickes fell zugelegt und sie ohne probleme gelöst.

die 4. übung: was die erste methode machen musste war nciht schwer zu begreifen, aber die nächsten beiden waren ohne das beigefügte Test-Programm einfach nicht zu verstehen. ich hab mir die sätze 3 mal durchgelesen und wurde einfach nciht schlauer. als ich mir das test-programm angeschaut hab und sah was diese methoden zum bearbeiten bekamen, konnt ich mir dann selbst zusammenreimen was gemeint ist.

die 5. übung halte ich weiterhin für sinnlos, da man sehr viel zeit braucht, um den interpreter zu durchschaun, weil man die meisten verwendeten methoden noch nie gesehen hat und der programmaufbau nicht gerade übersichtlich ist, für einen anfänger nicht.
dann kann jeder, der den aufbau von einem try-catch-block verstanden hat, die übung mit 10 punkten abgeben, ohne sich gross den kopf über den interpreter zu zerbrechen.

migu

free rider

  • "migu" is male

Posts: 2,643

Date of registration: Dec 11th 2001

Occupation: Developer

17

Friday, May 28th 2004, 12:33am

Quoted

Original von Uprooter
für mich persönlich ist das "passend behandelt" etwas schwammig formuliert(ich meine die übung 5), denn eine einfache textausgabe halte ich nicht für eine behanlung, sondern eher "aufmerksammachen" auf einen aufgetretenen fehler. kann ja sein, dass exceptions immer so behandelt werden, aber woher soll ich denn das wissen?


Ganz einfach. Aus dem beliebten Javabuch! Dort wird die Behandlung von Exceptions in Kapitel 12 genauestens erklärt. Das sollte man nachlesen können.
Allen Anfängern (und Fortgeschrittenen usw., aber die dürften es schon kennen) kann ich im allgemeinen das Javabuch sehr empfehlen.
Es mag für Anfänger schwierig sein, sich in die Begriffswelt der OOP und von Java einzufinden, aber es gibt genügend Quellen zum Nachlesen. (An "Drittliteratur" kommt man nur sehr selten vorbei.)

Quoted

Original von Uprooter
1. "Sehen Sie außerdem passende get- und set-Methoden vor und ¨uberlegen Sie,welche Konstruktoren sinnvoll sind." ich habe mir die vorlesung wirklich genau angehört und mir das skript 2-3 mal durchgelesen, ich wusste beim besten willen nciht was genau! von mir erwartet wird. ich finde diese formulierung ungenau.


Wahrscheinlich wurde erwartet, dass du die passenden Konstruktoren auch implementierst und zum Laufen bringst. (SCNR)
Im Ernst: Wenn du das Konzept von Konstruktoren verstanden hast, ist diese Aufgabe nicht allzu schwer. Und wenn das Skript nicht alles erschöpfend erklärt, kannst du doch immer noch Google, das Javabuch (s.o.) oder Kommilitonen fragen. :)

Quoted

Original von Uprooter
2."Verwenden Sie z.B. die Methode parseDouble der Klasse Double, um ein String-Argument in eine Zahl
umzuwandeln." die korrekte syntax wäre dazu ja Double.praseDouble(args[]), jedoch hat mir persönlich der hinweis "der Klasse Double" nichts gebracht, ich habe parseDouble(args[]) geschrieben und es gab einen fehler, ich hab mir stundenlang den kopf zerbrochen wieso.


Eine Methode kann nur aufgerufen werden, wenn du angibst, wo Java sie suchen soll. Schreibst du einfach den Methodenname, sucht Java in der aktuellen Klasse. In deiner Klasse war aber natürlich die gefragte Methode nicht enthalten.
Wie soll es also sonst gehen, wenn nicht unter Angabe der Klasse wie bei Double.parseDouble(String s)?
(Statische Methoden sollte man übrigens grundsätzlich unter Angabe des Klassennamens aufrufen und niemals anders.)

Quoted

Original von Uprooter
2.niemand hat ein wort darüber verloren, dass wenn ich einen kontruktor erstelle aut. eine super-anweisung erstellt wird, die keine argumente bekommt, also sucht sie in der basisklasse nach einem leeren konstruktor, den hat man aber nicht erstellt, wozu auch?


Guido Krüger schreibt im Javabuch dazu:

Quoted


8.1.4 Vererbung von Konstruktoren
Konstruktorenverkettung

Wenn eine Klasse instanziert wird, garantiert Java, daß ein zur Parametrisierung des new-Operators passender Konstruktor aufgerufen wird. Daneben garantiert der Compiler, daß auch der Konstruktor der Vaterklasse aufgerufen wird. Dieser Aufruf kann entweder explizit oder implizit geschehen.

Falls als erste Anweisung innerhalb eines Konstruktors ein Aufruf der Methode super steht, wird dies als Aufruf des Superklassenkonstruktors interpretiert. super wird wie eine normale Methode verwendet und kann mit oder ohne Parameter aufgerufen werden. Der Aufruf muß natürlich zu einem in der Superklasse definierten Konstruktor passen.


Quoted

Original von Uprooter
in der 3 übung hat man sich dann schon n dickes fell zugelegt und sie ohne probleme gelöst.


Ich glaube, ein dickes Fell wirst du beim Programmieren grundsätzlich brauchen. :)

Was bleibt zu sagen? Eine Floskel: Aller Anfang ist schwer.
tar: Anlegen eines leeren Archivs wird feige verweigert.

This post has been edited 1 times, last edit by "migu" (May 28th 2004, 12:37am)


Lucky

Erfahrener Schreiberling

  • "Lucky" is male

Posts: 449

Date of registration: Oct 17th 2003

Location: Dresden

Occupation: Um ein bißchen mehr Ahnung zu haben als andere

18

Friday, May 28th 2004, 3:10am

Also ich schließe mich Uprooter an. Wie soll ich als Java Newbie verstehen "sehen sie passende set- und get Methoden vor", wenn Sie einem doch so überflüssig vorkommen! Wenn ich n Programm schreiben soll was 3 Parameter wieder ausspuckt mit rot grün und blau davor, dann brauch ich sicherlich keine 2 Klassen geschweige denn get- und set- Methoden. Sowas sollte man einführen, wenn man den Syntax ein wenig drauf hat und es auch wirklich Sinn macht für eine Aufgabe.
no risk no fun, no brain no pain nor gain

This post has been edited 1 times, last edit by "Lucky" (May 28th 2004, 3:11am)


migu

free rider

  • "migu" is male

Posts: 2,643

Date of registration: Dec 11th 2001

Occupation: Developer

19

Friday, May 28th 2004, 8:06am

Quoted

Original von Lucky
Also ich schließe mich Uprooter an. Wie soll ich als Java Newbie verstehen "sehen sie passende set- und get Methoden vor", wenn Sie einem doch so überflüssig vorkommen! Wenn ich n Programm schreiben soll was 3 Parameter wieder ausspuckt mit rot grün und blau davor, dann brauch ich sicherlich keine 2 Klassen geschweige denn get- und set- Methoden. Sowas sollte man einführen, wenn man den Syntax ein wenig drauf hat und es auch wirklich Sinn macht für eine Aufgabe.


Tja, das ist eben Uni-Niveau. ;)
Viel Spaß beim Programmieren...

Bitte regt euch nicht auf. Programmieren lernt man nun mal nicht im Schlaf und schon gar nicht alleine mithilfe einer Vorlesung! Man muss viel selbst ausprobiert haben und aus vielen Fehlern gelernt haben. Bei mir hat's auch endlos lange gedauert, bis ich einigermaßen etwas konnte. Wenn es aber einmal "sitzt", dann macht es leidlich Spaß und man kann sich praktisch in jede Programmiersprache einfinden.
Ansonsten geht es in "Programmieren II" ja auch und vor allem um die objektorientierten Konzepte und nicht bloß ums Lernen von Java. Die Vorlesung sollte vielleicht besser "OOP mit Java" heißen. (?) (..nur ein spontaner Einfall)
tar: Anlegen eines leeren Archivs wird feige verweigert.

np

Junior Schreiberling

Posts: 155

Date of registration: Oct 23rd 2002

20

Friday, May 28th 2004, 9:52am

Vielen Dank für das ausführliche Feedback, Uprooter und Lucky!

Ich denke, ich verstehe jetzt, wo das Problem liegt: Du (und mit Dir sicher einige andere), sehen Programmieren rein zielorientiert. D.h. wenn in einer Aufgabe steht: "Schreiben Sie ein Programm, [blablabla], so dass die Ausgabe von "java Test pi" "3.1415" lautet, dann schreibt Ihr das Programm "println("3.1415")". Das ist jetzt überspitzt formuliert, aber bei einem Übungszettel geht es ja nicht nur darum, ein Programm zu schreiben, das eine gewisse Aufgabe erledigt, sondern auch (zumindest beim Programmieren) Programmiertechniken zu erlernen. Daher stehen auf den Übungszetteln diverse Zusatzschritte, die zum errecihen des (vermeintlichen) Ziels nicht unbedingt notwendig sind.
Beleg zu diesem Punkt:

Quoted

Original von Lucky
Wenn ich n Programm schreiben soll was 3 Parameter wieder ausspuckt mit rot grün und blau davor, dann brauch ich sicherlich keine 2 Klassen geschweige denn get- und set- Methoden.


Noch eine Analogie: Wenn auf einem Algebra-Übungszettel steht: "Zeigen Sie, das |R ein Körper ist, beweisen Sie dann, dass 1+1=2 ist." sagt man ja auch nicht "Blödsinn, 1+1=2 kennen wir seit der Grundschule." Der Punkt ist, dass hier eine bekannte Tatsache in eine allgemeingültigere Theorie eingebettet werden soll. OOP ist diese Theorie, die Ausgabe bestimmter Resultate nur ein (etwas konstruiertes) Beispiel.

Dass die Übung selbst (das reine Programmieren) in etwa 10 Min. gelöst werden kann, ist ein gewollter Nebeneffekt. Ich entwerfe die Aufgaben so, dass ich sie in ca. 15 Min. lösen kann, weil ich davon ausgehe, dass Ihr etwa drei Tage braucht, um Euch die jeweils zugrundeliegenden Konzepte anzueignen. Bei Exceptions dauert es etwa 45 Min. die entsprechenden Vorlesungsfolien gründlich zu lesen, etwa weitere 90 Min. um ergänzendes Material aus weiterer Literatur zu sichten. Ergibt eine Bearbeitungsdauer um die 150 Min. = 2.5 h. Das halte ich für angemessen.

Ein weiteres Problem scheint mir zu sein, dass einige Teilnehmer annehmen, sie könnten die Übung bearbeiten, ohne der Vorlesung zu folgen. Dies ist nicht nur ein Trugschluss, es gefährdet ernsthaft ihre Chancen, die Klausur zu bestehen. Beispielsweise teste ich stichprobenartig in meiner Blockzeit die Präsenz gewisser Begriffe aus der Vorlesung (gestern z.B. "Kapselungsprinzip"). Ich bin schon etwas erstaunt, wieviele Teilnehmer mit diesen Begriffen nichts anfangen können. Die Übungszettel erschließen sich natürlich teilweise erst, wenn man den Stoff der Vorlesung beherrscht. Das ist selbstverständlich, denn eine Übung begleitet eine Vorlesung, sie ist für sich genommen keine "Zweitvorlesung". Nichtdestotrotz nehme ich auch nur Bezug auf Material, das bereits in der Vorlesung behandelt wurde (dies ist nach meiner eigenen Erfahrung nicht selbstverständlich, in anderen Veranstaltungen eilt die Übung der Vorlesung schon zuweilen voraus).
Beleg: Klassen und Methoden wurden in der Vorlesung wirklich ausführlich behandelt. Wer versucht, parseDouble(args[]) ohne eine Klasse aufzurufen, versucht Java wie C zu programmieren.

Quoted

Original von Uprooter
2."Verwenden Sie z.B. die Methode parseDouble der Klasse Double, um ein String-Argument in eine Zahl
umzuwandeln." die korrekte syntax wäre dazu ja Double.praseDouble(args[]), jedoch hat mir persönlich der hinweis "der Klasse Double" nichts gebracht, ich habe parseDouble(args[]) geschrieben und es gab einen fehler, ich hab mir stundenlang den kopf zerbrochen wieso.


Nun noch zu Deinem letzten Punkt:

Quoted

Original von Uprooter
die 5. übung halte ich weiterhin für sinnlos, da man sehr viel zeit braucht, um den interpreter zu durchschaun, weil man die meisten verwendeten methoden noch nie gesehen hat und der programmaufbau nicht gerade übersichtlich ist, für einen anfänger nicht.
dann kann jeder, der den aufbau von einem try-catch-block verstanden hat, die übung mit 10 punkten abgeben, ohne sich gross den kopf über den interpreter zu zerbrechen.

Dies ist nicht wahr. Jeder, der von mir 10 P. bekommen hat, hat auch verstanden, was der Fehler bedeutet. Die einfachste Lösung bestand darin, diese Fehlerdiagnose einfach auszugeben, z.B. erzeugte e2.np eine NullPointerException. Wenige haben daraufhin einfach ausgegeben: "Es gab einen Nullzeiger." Dies ist offensichtlich keine passende Behandlung, denn woher soll ein Benutzer, der im Programm e2.np eine ungültige Sprungmarke verwendet denn wissen, warum daraus ein null-Pointer resultiert? Passend wäre: "Ungültige Sprungmarke."
Woher soll ein Student das wissen? Hierzu zitiere ich das Kapitel "Fehlerbahndlung" aus Teil 5 der Folien:

Quoted


* Beachte: Weiterreichen von Exceptions verletzt leicht das Kapselungsprinzip.
* Ausgeworfene Exceptions sollten semantisch auf derselben Ebene wie die erzeugende Methode liegen:
* D.h. ein Benutzer erwartet i.d.R. nicht, dass eine Methode wie initialisieren() eine (low level) IOException erzeugt, wenn der Bezug zu einer Datei nicht offensichtlich oder dokumentiert ist.
* In diesem Fall muss die Exception in eine neue Exception höherer Stufe verpackt werden.


Abschließend möchte ich nochmals darauf hinweisen, dass das Ziel dieser Veranstaltung nicht das Erlernen der Java-Syntax ist. Dieses kann innerhalb von drei Stunden durch bloßes Aufzählen der Konstrukte geschehen. Um nur Java zu lernen, ist es sinnvoller, einen Kurs am RRZN zu belegen, oder im Selbststudium eine beliebige Quelle (Kursbücher, Tutorials im Netz etc.) zu bearbeiten. Ziel der Vorlesung ist es, OOP zu vermitteln, dies geschieht am Beispiel von Java.

Ich hoffe, Ihr seid nicht allzu verärgert und versteht nun meine Position besser. Meinerseits werde ich versuchen, die Zettel noch klarer zu formulieren.

Niklas Peinecke

This post has been edited 1 times, last edit by "np" (May 28th 2004, 9:54am)