Hallo,
ich habe Fragen bezueglich objektorientierter Programmierung und ob ich es im Prinzip richtig gemacht habe oder was man anders machen sollte.
Ausgangspunkt: ich habe ein sliding menu tutorial als Ausgangspunkt. Dieses hat eine main_activity und drei fragments. Hier geht es um eines der Fragments (in Graph_Fragment.java). Graph_Fragment enhaelt einen Button und eine Komponente XYPlot androidplot
Nun habe ich eine weitere Klasse (myClass) definiert die folgendes macht: Sie laedt ein Textfile, parst dieses Textfile und schreibt die herausgefilterten numerischen Werte in eine Referenzklasse (myData, aehnlich einem record). Anschliessend enthaelt myData die Werte fuer mehrere XY-Kurven.
MyClass ist folgendermassen aufgebaut:
public class MyClass
{
private View myView; // stores view from Fragment
private XYPlot myPlot; // stores plot from Fragment
private TData myData; // stores data
private Context myContext; // stores context from Fragment
// constructor
public MyClass(View MC_View, XYPlot MC_Plot, Context MC_Context)
{
myView = MC_View;
myPlot = MC_Plot;
myContext = MC_Context;
}
// loads text-file into myData
public void LoadFileIntoRecord(String FileName)
// determines if char is a digit
private boolean IsDigit(char ch);
// searches next occurrence of string <key> in file after <startpos>
private long SeekNext(RandomAccessFile fis, long startpos, String key);
// searches next occurrence of string <key> in file after <startpos> and returns first value after
private float ReadNextValue(RandomAccessFile fis, long startpos, String key)
// determines if there is a next valid block marked with "$BEGIN" ... "$END"
private boolean DetermineNextValidBlock(RandomAccessFile fis, long startpos, TNextValidBlock NVB)
// extracts all data in the blocks and fills myData
private void ExtractMotorDataFromStream(RandomAccessFile fis, TMotorData MD)
// performs statistic operations on myData; saves statistical data also in myData
private void MakeMotorDataStatistics(TMotorData MD)
// plots the data in myData to XYPlot
public void PlotMotorData(int NCurve)
}
Alles anzeigen
Meine Fragen:
1) ist es in Ordnung myPlot, myView und myContext so ueber den Konstruktor von dem Fragment in die Klasse myClass zu bringen?
2) die private Funktionen zum parsen scheinen mir OO-maessig okay zu sein. Sie opererieren ja nur innerhalb der Klasse auf myData, das zuvor eingeladen wurde. Ein schlechteres Gefuehl habe ich bei PlotMotorData(int NCurve) welches die n-te Kurve aus myData in myPlot zeichnet. Ist es okay auch diese Plotoperation so in der Klasse zu haben, dass sie vom Fragment aus z.B. via myClassObject.PlotMotorData(2) aufgerufen wird? Dies ist ja irgendwie objektuebergreifend.
3) Viele der Parse Methoden enthalten Zugriffe auf das File mittels RandomAccessFile. Theoretisch muesste ich doch bei diesen Methoden ein "throws ExceptionXYZ" hinter der Methoden-deklaration stellen, oder nicht? So wie ich das verstanden habe muessen Methoden in denen exceptions auftreten koennen diese auch weiterreichen.
Vielen Dank
Gutelo
Edit: eine weitere Frage. Ist es normal, dass das Fragment Objekt komplett neu geladen wird wenn der screen seine Orientierung von horizontal nach vertikal und umgekehrt aendert?