Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

[Java] auslagern einer Methode in eine eigene Klasse

Diskussion: [Java] auslagern einer Methode in eine eigene Klasse im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo Zusammen, ich habe hier eine kleines Programm geschrieben ( http://tinyurl.com/45nce5p ) und würde gerne die Methode LEDMatrix in ...

Antwort
Alt 12.02.11, 10:21   #1 (permalink)
 
Registriert seit: 25.03.10
visualisierte Leistung: Facit NTK
visualisierte eine Nachricht über ICQ schicken visualisierte eine Nachricht über Skype™ schicken
Likes: 0
Standard [Java] auslagern einer Methode in eine eigene Klasse

Anzeige

Hallo Zusammen,

ich habe hier eine kleines Programm geschrieben (http://tinyurl.com/45nce5p) und würde gerne die Methode LEDMatrix in seine eigene Klasse auslagern. Mir ist allerdings noch nicht ganz klar wie ich das am besten anstelle. Für Anregungen, Tipps und zu Verweisen auf Dokumente und How-Tos würde ich mich freuen. Ich befürchte das es mit der Klasse "Cell" Probleme geben könnte, wenn ich die Methode in seine eigene Klasse auslagere.


Danke!

visualisierte ist offline   Mit Zitat antworten
Alt 12.02.11, 12:35   #2 (permalink)
Senior Member
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard

Hi,

etwas sehr unkonkret deine Frage Zumal man anhand des Codes auf den du verlinkt hast auch garnicht erkennen kann wo Cell überhaupt definiert ist. Was für Probleme "befürchtest" du denn?

ciao
serow
Serow ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 12.02.11, 12:47   #3 (permalink)
 
Benutzerbild von Scutus
 
Registriert seit: 02.09.10
Scutus Leistung: Pentium IScutus Leistung: Pentium IScutus Leistung: Pentium I
Scutus eine Nachricht über ICQ schicken Scutus eine Nachricht über Skype™ schicken
Likes: 21
Standard

processing.core.PApplet scheint eine Klasse namens cell vorzugeben...scheinbar soetwas wie ein grid. An sich dürfte die Auslagerung kein großes Problem sein, du musst nur entsprechende Variablen übergeben. Z.B. "rect" oder die ganze "heights" und "widths" - die du ja in deiner Sketch-Klasse schon herangezogen hast und dann in deiner LEDMatrix-Funktion weiter verwendest! Du solltest schauen, welche Variablen du innerhalb der LEDMatrix-Klasse erzeugen kannst und welche du als "Rahmenwerte" übergeben musst.

Grüße...
Scutus ist offline   Mit Zitat antworten
Alt 12.02.11, 12:49   #4 (permalink)
 
Benutzerbild von benediktibk
 
Registriert seit: 03.05.07
benediktibk Leistung: 8086benediktibk Leistung: 8086
Likes: 50
Standard

Warum möchtest du LEDMatrix in eine eigene Klasse verschieben? Eigentlich sieht das bestehende Objekt bereits recht übersichtlich und handlich aus. Wenn du LEDMatrix wirklich extrahieren möchtest, müssten genauso Cell[][] rect = new Cell[ yAxis ][ xAxis ]; und die draw-Funktion mitsiedeln. Damit würde dann in der ursprünglichen Klasse nicht mehr viel übrig bleiben außer main. Vielleicht solltest du eher andersherum überlegen: Gehört main wirklich dort hinein oder sollte main extern die jetzige Klasse aufrufen? Um das richtig beurteilen zu können fehlt mir aber ein klein wenig der Überblick über Java und die Anforderungen von PApplet.

mfg benediktibk
benediktibk ist offline   Mit Zitat antworten
Alt 12.02.11, 15:56   #5 (permalink)
 
Benutzerbild von metax.
 
Registriert seit: 22.01.07
metax. Leistung: 8086
metax. eine Nachricht über ICQ schicken
Likes: 10
Standard

Jupp, das Auslagern von LEDMatrix macht nur Sinn, wenn du die Funktion für andere Klassen wiederverwenden willst.
In dem Fall, kannst du sie einfach als statische Methode in eine neue (oder beliebige) Klasse verschieben, musst dann aber die Variablen mWidth, mHeight und rect als Parameter übergeben. Dass du rect veränderst ist kein Problem, da rect sowieso als Referenz übergeben wird, weil es ein Array ist.
Der Methodenkopf sieht dann so aus:
public static void LEDMatrix(int mWidth, int mHeight, Cell[][] rect) { ... }
Und statt dem Aufruf LEDMatrix(); in der Methode setup kannst du einfach einen statischen Aufruf NeueKlasse.LEDMatrix(mWidth, mHeight, rect); verwenden.
Wenn du die Methode aber nur hier brauchst, macht ein Auslagern keinen Sinn.

edit: Beim Auslagern musst du natürlich alle imports von Klassen, die du verwendest (wie Cell) mit übernehmen. Da Cell aber anscheinend bereits im gleichen Package wie Sketch liegt, wird die Klasse automatisch gefunden.

mfg, metax.
__________________
Wenn keiner zuschaut, teile ich heimlich durch Null!
Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter

Geändert von metax. (12.02.11 um 15:59 Uhr)
metax. ist offline   Mit Zitat antworten
Alt 14.02.11, 09:17   #6 (permalink)
Themenstarter
 
Registriert seit: 25.03.10
visualisierte Leistung: Facit NTK
visualisierte eine Nachricht über ICQ schicken visualisierte eine Nachricht über Skype™ schicken
Likes: 0
Standard

Hallo Zusammen,

danke schon mal für die vielen Antworten. Ich bin bis jetzt noch nicht dazu kommen alles durch zu arbeiten, aber ich würde gernen noch einiges zum Hintergrund schreiben, zum besseren Verständnis.

Der vollständige Source:

http://code.google.com/p/killswitchl...SketchPackage/

Code:
import processing.core.*
bezieht sich auf eine in Java geschriebe "Grafik-Bibliothek" welche oft im Bereich der Computergrafik eingesetzt.

public void setup(); dient dem reinen "setup" der Applikationen. Alles wird nur einmal gezeichnet.

public void draw(); ist eine Methode die wie eine while-Schleife, alles was in draw() steht, neu zeichnet.

Processing schreibt vor, dass nur eine Klasse im Programm eine Unterklasse von PApplet sein darf, und das ist Sketch.java, eben die Klasse mit main().

Im späteren Verlauf möchte ich ein GUI haben mit dem die Werte der "Cellen" zur Laufzeit verändert werden können. Ich möchte auch, dass mehrere Matrizen zeitgleich ausgeführt werden können, aber unabhängig von einander.

In Cell.java ist Parent definiert (Zeile: 21; Cell.java) . Ein Paramter der später mit (this):
Code:
rect[i][j] = new Cell( this );
(Zeile: 28; Sketch.java) übergeben wird. Da Cell in Sketch.java deklariert und instanziiert wird, funktionert (this) auch, da Sketch.java eine Unterklasse von PApplet ist. Wenn ich aber versuchen würde, den selben Code aus LEDMatrix.java auszuführen, würde es dabei ein Fehler geben, da LEDMatrix.java keine Unterklasse von PApplet ist. Und an der Stelle wüsste ich auch nicht, was genau ich anstelle von (this) verwenden müsste.

Rein vom Gefühl her, würde ich sagen die Methode LEDMatrix in eine eigene Klasse gehört, sicher bin ich mir aber nicht. Und wenn ja, wie kann ich dann am besten das Objekt Cell in LEDMatrix instanziieren?


Danke und MfG.
visualisierte ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » [Java] auslagern einer Methode in eine eigene Klasse
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



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