File: /home/peppino/Area_Lavori/ese…orgenti/Oggetti/ohm_classe.cpp Pagina 1 di 5 /** * esempi_c++/sorgenti/ohm_classe.cpp * * Una classe semplice per applicare la legge di OHM * * @autore Giuseppe Talarico 19/01/2004 * @data */ // // // // posizionarsi nella cartella esempi_c++ compilare: c++ ./sorgenti/ohm_classe.cpp -o ./eseguibili/ohm -g eseguire: ./eseguibili/ohm testare: lanciare Kdbg using namespace std; #include <iostream> /* La figura seguente mostra l' interfaccia della classe Ohm. Le ( set method ) sono quelle che puntano verso i "dati privati" indicare che possono modificare i dati stessi. Le funzioni di accesso ( get method ) sono quelle che puntano per indicare che possono solo leggere i dati privati. Visto che i dati vengono definiti "privati", solo le funzioni della classe vi possono accedere. funzioni di mutazione o "incapsulati", per dalla parte opposta membro (funzioni di mutazione) ---------------| Ohm | ---------------Ohm() ----->| | Ohm( int unaresistenza , double unatensione) ----->| resistenza | modifica_resistenza(int valore) ----->| tensione | modifica_tensione(double valore) ----->| corrente | calcola_corrente() ----->| | | ^ | leggi_resistenza() <-----| dati | leggi_tensione() <-----| privati | leggi_corrente() <-----| | mostra_valori() <-----| | | | ---------------*/ //======================= Interfaccia della classe Ohm ================================== class Ohm { private: // variabili o campi istanza int resistenza; double tensione; double corrente; public: // in ohm // in Volt // in Ampere File: /home/peppino/Area_Lavori/ese…orgenti/Oggetti/ohm_classe.cpp //---------------------- costruttore ---------------------------/** Costuisce un oggetto Ohm con resistenza= 1 ohm e tensione nulla */ Ohm(); //---------------------- costruttore ---------------------------/** Costruisce un oggetto con valori iniziali non nulli @param unaresistenza , unatensione */ Ohm( int unaresistenza , double unatensione); //---------------------- metodo set ---------------------------------/** Modifica il valore della resistenza */ @param valore //in ohm void modifica_resistenza(int valore); //---------------------- metodo ---------------------------------/** Modifica il valore della tensione */ @param valore //in volt void modifica_tensione(double valore); //---------------------- metodo ---------------------------------/** Calcola il valore della corrente */ void calcola_corrente(); //---------------------- metodo ---------------------------------/** mostra i valori di tensione, resistenza e corrente */ void mostra_valori(); //---------------------- metodo get ---------------------------------/** Interroga l' oggetto per ottenere il valore della resistenza */ @return valore // in ohm int leggi_resistenza() const; Pagina 2 di 5 File: /home/peppino/Area_Lavori/ese…orgenti/Oggetti/ohm_classe.cpp //---------------------- metodo get ---------------------------------/** Interroga l' oggetto per ottenere il valore della tensione */ @return valore // in volt double leggi_tensione() const; //---------------------- metodo get ---------------------------------/** Interroga l' oggetto per ottenere il valore della corrente */ @return valore // in ampere double leggi_corrente() const; };// end classe Ohm ..nota il ; per chiudere la classe ! //============== Implementazione delle funzioni membro della classe Ohm ================ //---------------------- costruttore ---------------------------Ohm::Ohm() { resistenza = 1; tensione = 0.0; corrente = tensione / resistenza; } //---------------------- costruttore ---------------------------Ohm::Ohm( int unaresistenza , double unatensione) { resistenza = unaresistenza; tensione = unatensione; corrente = tensione / resistenza; } //---------------------- metodo set ---------------------------------- void Ohm::modifica_resistenza(int valore) { resistenza = valore; } //---------------------- metodo ---------------------------------void Ohm::modifica_tensione(double valore) { tensione = valore; } //---------------------- metodo ---------------------------------- void Ohm::calcola_corrente() { corrente = tensione / resistenza; } //---------------------- metodo ---------------------------------void Ohm::mostra_valori() Pagina 3 di 5 File: /home/peppino/Area_Lavori/ese…orgenti/Oggetti/ohm_classe.cpp Pagina 4 di 5 { :" << leggi_tensione() << " Volt\n"; cout <<"\n\n\t La tensione vale cout <<"\t La resistenza vale :" << leggi_resistenza() << " Ohm\n\n"; :" << leggi_corrente() << " Ampere\n\n"; cout <<"\t La corrente vale } //---------------------- metodo get ---------------------------------int Ohm::leggi_resistenza() const { return resistenza; } //---------------------- metodo get ---------------------------------double Ohm::leggi_tensione() const { return tensione; } //---------------------- metodo get ---------------------------------double Ohm::leggi_corrente() const { return corrente; } //******************************** MAIN *********************************** /** Il metodo main serve per testare la classe Ohm */ int main ( ) { int R; // resistenza elettrica // Ohm circuito; Ohm circuito = Ohm(); // notazione abbreviata per usare il costruttore predefinito, oppure: // costruisce l' oggetto con resistenza =1 ohm e tensione 0 volt cout <<"\n\n\t *********** Test Classe Ohm ********\n\n "; circuito.mostra_valori(); circuito = Ohm(1000, 10.0);//reimposta l' oggetto con resistenza =1000 ohm e tensione 10 volt circuito.mostra_valori(); circuito.modifica_tensione(20.0); circuito.modifica_resistenza(10000); circuito.calcola_corrente(); circuito.mostra_valori(); cout <<"\n\n\t *********** Legge di ohm: calcola corrente ********\n\n "; //---------------------- come tester.cpp ------------------------------------circuito = Ohm(); // ricostruire l' oggetto per reimpostare a 0 Volt la tensione cout << "\n\n\t Immetti il valore della Resistenza [Ohm]: "; cin >> R; circuito.modifica_resistenza(R); cout <<"\n\ncon R = "<< circuito.leggi_resistenza() <<" Ohm si ha:\n\n"; File: /home/peppino/Area_Lavori/ese…orgenti/Oggetti/ohm_classe.cpp cout <<"--------------------------------\n"; V (volt) I (ampere)\n"; cout <<" cout <<"--------------------------------\n"; circuito.calcola_corrente(); // I= V/R cout << "\t"<< circuito.leggi_tensione() << "\t" << circuito.leggi_corrente(); cout <<"\n--------------------------------\n"; do { // V=V+2 circuito.modifica_tensione(circuito.leggi_tensione()+2); circuito.calcola_corrente(); // I= V/R cout <<"\t"<< circuito.leggi_tensione() << "\t" << circuito.leggi_corrente() ; cout <<"\n--------------------------------\n"; } while ( circuito.leggi_tensione() < 12 ); cout << "\n\n\n"; return 0; } Pagina 5 di 5