H8 SimpleFileParser

Benutzeravatar
blowfish
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 241
Registriert: 18. Okt 2006 16:00

Beitrag von blowfish »

banshee hat geschrieben: das ist immernoch lokal, globale variablen und methoden gibts in java nicht ;)
alles ne frage der definition.
wenn es an sich keine globalen variablen gibt, spricht ja nix dagegen, klassenvariablen so zu nennen!
Ein Hemd ist Einstellungssache!

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

das kannst du aber nur solange machen bis du das erste mal C/C++/Delphi etc. programmierst :>

Benutzeravatar
blowfish
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 241
Registriert: 18. Okt 2006 16:00

Beitrag von blowfish »

aber so lange kann ich und so lange mach ich und so lange kann mir auch keiner erzählen, dass es falsch wäre. und selbst wenn du mit c/c++ und bla programmierst ist in diesem thread ziemlich eindeutig, dass es um java geht und die bedeutung von globalen variablen ist dann ziemlich eindeutig ...
also eher ne frage des kontextes, als der definition, aber wahrscheinlich beides so n bisschen! naja, ansichtssache! ich hab recht, wenn ich das richtig definiere. das reicht mir! vielen dank, vorhang zu und einen wunderschönen abend noch!
Ein Hemd ist Einstellungssache!

citta
Mausschubser
Mausschubser
Beiträge: 96
Registriert: 7. Nov 2006 21:52

Beitrag von citta »

blowfish hat geschrieben:
alles ne frage der definition.
wenn es an sich keine globalen variablen gibt, spricht ja nix dagegen, klassenvariablen so zu nennen!
Ich will ja jetzt keinen drauflegen (sry ;)), aber du meinst womöglich Felder bzw. Attribute, Klassenvariablen sind die static (...) Dinger.

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

blowfish hat geschrieben:ich hab recht, wenn ich das richtig definiere. das reicht mir!
glückwunsch. nur redest du dann über eine andere sache als der rest der welt weil:
In der Programmierung sind globale Elemente (z. B. globale Variablen) für alle Komponenten eines Moduls oder Programms zugänglich.
das is die offizielle definition, versuch mal eine variable in klasse A "global" zu definieren und in klasse B darauf zuzugreifen, geht nicht -> definition nicht erfüllt -> variable nicht global.
wenn du jetz sagst für dich is das aber global oder variablen heißen bei dir funktionen oder der quadratmeter erde auf dem du stehst is ne scheibe dann bringt dich das auch nicht viel weiter.

aber jetzt mal eine andere sache die mir am besten ein tutor beantworten könnte:
in der aufgabenstellung steht 15+ zeilen pro methode führen zu punktabzug. ich hab jetzt allerdings eine methode wo sich weitere abstraktion aufgrund von zu großem speicheraufwand nicht mehr lohnt. soll ich jetzt mit gewalt alle lokalen variablen eine ebene weiter nach außen ziehen und/oder funktionen erstellen die dann 5 parameter und mehr übergeben bekommen oder wie hab ich das zu verstehen?

Benutzeravatar
blowfish
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 241
Registriert: 18. Okt 2006 16:00

Beitrag von blowfish »

banshee hat geschrieben:
In der Programmierung sind globale Elemente (z. B. globale Variablen) für alle Komponenten eines Moduls oder Programms zugänglich.
jetzt "definiere" ich das sogenannte "Modul" als eine bestimmte klasse, was in java durchaus üblich sein sollte, auf grund der struktur der sprache und schon sind alle klassenvariablen (variablen, die außerhalb jeder funktion in einer klasse definiert wurden) global! könnte auch sagen dieses "Modul" ist eine funktion, dann sind alle variablen, die in der funktion definiert wurden global! wie du siehst, kann man das auf verschiedene arten sehen, und keine dieser sichtweisen ist falsch.
wie gesagt, alles ne frage der definition. ich geh mal davon aus, kechler ist von ersterem ausgegangen!
Ein Hemd ist Einstellungssache!

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

Module
Zu unterscheiden sind Module von den Klassen der objektorientierten Softwareentwicklung
Im Prinzipt hast du ja nicht unrecht. Nur wenn du dich verständlich machen willst, würde ich dir raten im vorgegebenen Rahmen zu bleiben ;)

Benutzeravatar
Robert
Ehemalige Fachschaftler
Beiträge: 511
Registriert: 6. Okt 2004 17:38
Wohnort: DA

Beitrag von Robert »

aber jetzt mal eine andere sache die mir am besten ein tutor beantworten könnte:
in der aufgabenstellung steht 15+ zeilen pro methode führen zu punktabzug. ich hab jetzt allerdings eine methode wo sich weitere abstraktion aufgrund von zu großem speicheraufwand nicht mehr lohnt. soll ich jetzt mit gewalt alle lokalen variablen eine ebene weiter nach außen ziehen und/oder funktionen erstellen die dann 5 parameter und mehr übergeben bekommen oder wie hab ich das zu verstehen?
auf grund des thread titles gehe ich jetzt davon aus du redest vom simple file parser .. mir ist wirklich nicht ersichtlich wo du da soviel code hast und wie du da auf funktionen mit 5 parametern kommst

leere zeilen und kommentar zeilen zählen nicht.
und sowas wie
int blubb;
blubb = 5;
macht man normal
int blubb = 5;

Benutzeravatar
blowfish
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 241
Registriert: 18. Okt 2006 16:00

Beitrag von blowfish »

banshee hat geschrieben:Module
Im Prinzipt hast du ja nicht unrecht. Nur wenn du dich verständlich machen willst, würde ich dir raten im vorgegebenen Rahmen zu bleiben ;)
das problem is ja eben der rahmen! meiner meinung nach (und ich bin der meinung das verträgt sich mit der definition) ist global recht relativ zu sehen, je nach dem wie groß der programm-code ist, den du betrachtest. da für alle klar ist (oder sein sollte), dass es "über" klassenvariablen nix gibt, kann man doch beruhigt ohne verwechslungsgefahr von globalen variablen reden. da kannst du mir jetzt noch beliebig viele definitionen bringen, es gibt garantiert mindestens einen, der das anders definiert. und mal so "for future reference": wenn bei wikipedia etwas festgelegt wird, wie "Zu unterscheiden sind Module von den Klassen der objektorientierten Softwareentwicklung", würde ich das nicht als absulute wahrheit ansehen, sondern auch eher als eine mögliche definition. aber nicht als die einzige!!!!
Ein Hemd ist Einstellungssache!

Benutzeravatar
Robert
Ehemalige Fachschaftler
Beiträge: 511
Registriert: 6. Okt 2004 17:38
Wohnort: DA

Beitrag von Robert »

hört doch mal auf. das wort "global" ist nunmal überladen ... darum sollte man es auch möglichst nur dann benutzen wenn sich alle Parteien einig sind was man genau damit meint (in der Klausur also möglichst nicht)

übrigens war der wortlaut ursprünglich:
"Ich habe mir ein 2-dimensionales Array global in SimpleFileParser definiert"
mit Betonung auf "in" .. womit er das wort global ziemlich richtig benutzt hat .. denn das array ist global IN dem Modul SimpleFileParser definiert.

ich würde sowas aber nicht in eine klausur schreiben weil man global nunmal auch anders auslegen kann wie wir gesehen haben.
Bei einer Klausur würde ich empfehlen von einer:
"privaten Klassenvariaben der Klasse SimpleFileParser"
zu sprechen. Das kann man kaum missverstehen, somit sinkt auch die chance für einen Punktabzug. Das privat ist in diesem speziellen fall sogar wichtig, da ja explizit information hiding gefordert war.

(Natürlich gilt das nicht nur für Klausuren, sondern auch allgemein für irgendwelche Wissenschaftlichen arbeiten. Man sollte keine Begriffe nutzen welche mehrere Bedeutungen haben können. Falls es sein muss dann sollte man deren Bedeutung vorher genau festlegen)

Benutzeravatar
blowfish
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 241
Registriert: 18. Okt 2006 16:00

Beitrag von blowfish »

das doch mal n wort. danke für die klärung!
Ein Hemd ist Einstellungssache!

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

Robert hat geschrieben:
mir ist wirklich nicht ersichtlich wo du da soviel code hast und wie du da auf funktionen mit 5 parametern kommst
In der build() Methode von KarelTheBuilderRobot zb. Da hab ich schonmal 4 Variablen, die ich für den Gitterdurchlauf brauche. Und dann hab ich noch einen Programmteil wo per Schleifen eben das Gitter durchlaufen wird und evtl. Beeper gelegt werden. Sind bei mir 19 Zeilen Code.
Und wenn ich jetzt irgendeinen Teil in eine extra Methode packe, führt das dazu, dass er die lokalen Variablen nicht mehr kennt. Soll ich die dann also alle als private Atrribute deklarieren oder als Parameter übergeben?

Benutzeravatar
Robert
Ehemalige Fachschaftler
Beiträge: 511
Registriert: 6. Okt 2004 17:38
Wohnort: DA

Beitrag von Robert »

ist vllt ein wenig falsch dein Ansatz. Was du gemacht hast ist: du hast erst nen kneul produziert ... dann gemerkt das er recht groß ist und nu willst du ihn aufteilen, das dies natürlich schwierig ist liegt auf der Hand.

Vllt solltest du das ganze nochmal durchdenken. Die build Methode soll ja die gegebene datenstruktur mit beepern legen. welche schritte sind dazu nötig?
nehmen wir mal an ihr wollt die zeilen wie so ne schreibmaschiene durchgehen .. also eine zeile .. dann wieder zurück und ne zeile höher ... dann gäbe es folgende aufgaben:
- eine zeile legen
- zurücklaufen und zur nächsten zeile

dann hätte man so ein programm:

gehe von zeile 1 bis zur letzten durch
- zeichne die aktuelle zeile
- gehe zurück und zur nächsten zeile

dann hätte man ein ziemlich übersichtliches programm:
eine schleife in der build funktion welche einfach die zeilen durchzählt, und darin zwei funktionsaufrufe .. zeichne zeile ( als parameter die zeile, damit die fkt weiß von wo sie aus dem array lesen muss) .. und gehe zurück und eins hoch .... alles recht kurz und übersichtlich

da ihr aber mal von links und mal von rechts gehen sollt wird das ganze etwas komplizierter, prinzipiell aber gleich.

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

Das ist immer etwas schwierig das zu erklären wenn ich hier keinen Code posten darf :/

Aber im Prinzip hab ich das genauso gemacht. Nur mein Problem ist eben dass ich 4 lokale Variablen hab die Breite, Höhe und Laufrichtung speichern und in jedem Codeabschnitt der Methode wird auf diese Variablen zugegriffen.

Also im Prinzip wäre es gar kein Problem das aufzuteilen nur entweder müsste ich eben diese 4 Variablen als Klassenatrribute setzen oder ich müsste der Hilfsmethode die Variablen, auf die zugegriffen werden muss, als Parameter übergeben. Aber das hat speichertechnisch doch gar keinen Sinn oder sehe ich das falsch? Da werden ja für jede Methode Variablen doppelt und dreifach angelegt...

Benutzeravatar
Robert
Ehemalige Fachschaftler
Beiträge: 511
Registriert: 6. Okt 2004 17:38
Wohnort: DA

Beitrag von Robert »

höhe und breite brauchst du doch garnicht .. das kriegst du doch aus RectangleDataAccess .. und die datenstruktur kannst du dem builder ruhig als klassenvariable geben .. bleibt nur noch die laufrichtung als parameter, das geht dann ja.

Antworten

Zurück zu „Archiv“