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ächter
    

    Um 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 machen

    Vielen 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).


Anmelden zum Antworten