eine klasse Klasse-Entwurf
-
Hallo zusammen
Ich habe ein Entwurfproblem in meinem Programm. Ich bin auf eure Hilfe dringend angewiesen.
Ich habe eine Klasse für mein Prog geschrieben. Mit der Zeit ist die Klasse zu zu dick geworden mit einem Haufen von Attribute und Funktionen.
Ich möchte daraus noch zwei Klassen machen und die Interaction dazwischen wird entweder durch Vererbung oder Zeigerzugriff realisiert? Wie ich das mache bin wirklich confused!? bitte hilft mir
folgendes ist der header-datei#ifndef RFC_h #define RFC_h RFC_h #include <vector> class CRFMat { private: std::vector<std::vector<int> > m_rfMat; // RF-Matrix std::vector<int> m_resVec; // Res-Vektor std::vector<int> m_delta_res; // Vektor für range = differenz zwischen Elemente vom Vektor m_resVec std::vector<std::vector<int> > m_ipm; // possibilities matrix std::vector <double> m_phys_signal; // Zeitschrieb-Vektor vector<vector<double> > m_vdMat; int m_insertpos; int m_masterCh,m_slaveCh; bool m_bvbdm; bool m_badapted; int m_mFrom,m_mTo; // da Schwingspiel(master_from; master_To) std::vector<std::vector<int> > m_saved_res; std::vector<std::vector<std::vector<int> > > m_saved_rfmat; // Vektor-Matrix :in jeder Zeile des Vektors wird eine RF-matrix gespeichert std::vector<std::vector<double> > m_savedReses; double m_min1Ch1,m_min1Ch2; double m_max1Ch1,m_max1Ch2; double m_min2Ch1,m_min2Ch2; double m_max2Ch1,m_max2Ch2; int m_adaptedPos; bool m_before,m_after; public: // Funktionsprototyps int readFile(); int edit_rfmat(); int print_rfmat(); int print_saved_rfmat(); int print_res(); int build_delta_res(); int print_delta_res(); int randomReco(); int print_ipm(); int randomSelect(); int nrand( int a, int e); int insertCycle(int row_selected); int saveSignal(); int output_header(); int scalingSignal(); int printPhysSignal(); int saveRes(std::vector<int> residu); int printSavedRes(); int saveDeltaRes(int ch,std::vector<int> m_delta_Res); int recoMode(); int positioningRes(); int masterReco(); int insertCycles(int ch,int rownr,int pos); int slaveReco(); int msQuery(); int slopeInterpolation(); int saveVbdmSignal(); int scalingVbdmSignal(); int saveVbdmVertices(); int verticeCompare(); bool checking4PAl(int rownr, int col1, int col2); int signalAdapting(); int rearrange(); bool m_begin; // wird in main() gesetzt und in positioningRes() gebraucht }; #endif // Ende Include-WächterUm davon ein Bild zu machen, ist folgendes eine kurze Zusammenfassung der Funktionsweise meines Programms :
Es werden 2 Txt-Dateien gelesen.
Von der 1. Datei werden:
Teil der Daten in der Matrix (dopp. Vektor) „m_rfMat“ gespeichert
Teil der Daten im Vektor „m_resVec“ gespeichert.
Diese Daten werden bearbeitet und eine Kombination davon wird im Vektor „m_phys_signal“ gespeichert.Von der 2. Txt-Datei werden:
Teil der Daten in der Matrix „m_vdMat;“ gespeichert.Eine Kombination und Bearbeitung aller Daten der 2 Text-Dateien werden mehrere „m_rfMat“ in dem 3.Ord Vektor „m_saved_rfmat“ zusammengefasst.
Dies gilt genauso für mehrere „m_resVec“. Es wurden auch in der matrix : „m_saved_res“ gespeichert.
Ich hoffe, dass ich verständlich ausgedruckt habe und falls noch Fragen sind stehe euch zur Verfügung.
Bitte schreibt mir eure Kritik oder Vorschläge um das zu verbessern und einen klassen Entwurf daraus zu machenVielen Vielen Dank
-
Sieh dir an welche Funktionen die Klasse übernimmt und trenne erstmal die unterschiedlichen Aufgaben von einander (Laden/Speichern, Daten, Berechnung)
dabei wird dir klar werden, welche Klassenhierachie du benötigst.
-
Danke Mathias
meinst du, dass ich für jede Aufgabe (Laden/Speichern, Daten, Berechnung..) eine extra Klasse zuordnen soll oder ?
-
Das ist meistens sinnvoll, denn so lassen sich auch mal Teile austauschen ohne dass man hierzu alles anfassen muss (wenn die Schnittstellen sauber sind... z.B. Speicher-Klasse durch andere ersetzen und gut is).