PDA

Visualizza la versione completa : classi c++


nadia.16
24-01-2013, 13:17
salve ho problemi a risolvere questo programma qualcuno mi pu aiutare a risolverlo?
devo creare una classe SistemaOperativo con le seguenti variabili:
NomeSistemaOperativo(stringa),Versione(float)
definire un costruttore per inizializzare i valori.
devo creare una classe Fotocamera:
Risolzione(int) Zoom(float)
con get e set
classe Smartphone che includa :
istanza della classe SistemaOperativo
istanza della classe Fotocamera
una variabile MemoriaInterna (float)
relazione di amicizia tra classe Smartphone e Fotocamera
creare un applicazione per istanziare e modificare oggetto della classe Smartphone.

grazie...

oregon
24-01-2013, 14:00
Aiutare come? Magari comincia a scriverla tu e vediamo gli errori ...

nadia.16
24-01-2013, 14:43
:mem:giusto!poich non sono riuscita a capire come svolgere l'istanze sono arrivata al scondo punto ossia qst:
classi.h
#include<iostream>
#include<string>
using namespace std;
class SistemaOperativo{
public:
string NomeSistemaOperativo;
float Versione;
void inserisci_Nome();
void inserisci_Versione();
};
class Fotocamera{
public:
int Risoluzione;
float Zoom;
int getRisoluzione();
int setRisoluzione();
float getZoom();
float setZoom();
#include<iostream>
#include "classi.h";
void SistemaOperativo::inserisci_Nome(){
cout<<"inserire nome del SistemaOperativo:";
cout<<endl;
};
void SistemaOperativo::inserisci_Versione(){

cout<<"inserire versione del SistemaOperativo:";
cout<<endl;

};
void Fotocamera::getZoom(){
cout<<"impostare zoom della Fotocamera:";
cout<<endl;
Zoom=zoom;
return zoom;
}
void Fotocamera::setZoom() {
cout<<"impostare zoom della Fotocamera:";
cout<<endl;
Zoom=zoom;
return zoom;
}
void Fotocamera::getRisoluzione(){
cout<<"impostare Risoluzione della Fotocamera:";
cout<<endl;
Risoluzione=risoluzione;
return risoluzione;
}
void Fotocamera::setRisoluzione(){
cout<<"impostare Risoluzione della Fotocamera:";
cout<<endl;
Risoluzione=risoluzione;
return risoluzione;
}

main(){
SistemaOperativo sistemaoperativo;
sistemaoperativo.inserisci_Nome();
sistemaoperativo.inserisci_Versione();
cout<<"il Nome del SistemaOperativo :"<<sistemaoperativo.nome;
cout<<"la Versione del SistemaOperativo :"<<sistemaoperativo.versione;
Fotocamera fotocamera;
fotocamera.getRisoluzione();
fotocamera.setRisoluzione();
fotocamera.getZoom();
fotocamera.setZoom();

cout<<"la Risoluzione della Fotocamera :"<<fotocamera.risoluzione;
cout<<"lo Zoom della Fotocamera :"<<fotocamera.zoom;
return 0;
}
};

MItaly
24-01-2013, 15:16
Ma il codice che hai postato si riferisce a file diversi o tutto nello stesso file? Inoltre, completo? Non mi pare di vedere la chiusura della classe...

Infine, il codice va postato tra tag [co­de] ... [/co­de], altrimenti perde l'indentazione.

nadia.16
24-01-2013, 15:33
tutto nello stesso file,non completo xk non riesco ad andare avanti :confused:

MegaAlchimista
24-01-2013, 18:42
sei sicura di aver scritto proprio cos??
questa cosa non ha alcun senso


class Fotocamera{
public:
int Risoluzione;
float Zoom;
int getRisoluzione();
int setRisoluzione();
float getZoom();
float setZoom();
#include<iostream>
#include "classi.h";
void SistemaOperativo::inserisci_Nome(){
cout<<"inserire nome del SistemaOperativo:";
cout<<endl;
};

nadia.16
24-01-2013, 19:02
:bh: ho chiesto aiuto perch non sono sicura vorrei un mano per risolverlo.Grazie x la disponibilit! :)

oregon
24-01-2013, 19:37
Purtroppo un po' difficile dare consigli dato che non hai idea di quello che scrivi.

L'unico modo sarebbe scriverti tutto il codice ma qui non consentito ...

nadia.16
24-01-2013, 19:45
vabb grazie lo stesso! sto imparando...quindi x qst ho chiesto aiuto.

00disaster00
24-01-2013, 20:37
Ciao, prima di tutto ecco dei consigli:
Ogni classe va in un file diverso e si scrivono in questo modo:


#ifndef CLASSE_H
#define CLASSE_H

class NomeClasse
{
public:
//Metodi pubblici
private:
//membri e metodi privati
};
#endif


le righe con # fanno in modo che se includi il file in diversi file il codice viene scritto solamente la prima volta (altrimentri avresti pi classi con lo stesso nome).
Nella sezione pubblica vanno i metodi che permettono di interfacciarsi con la classe.
Nella privata i dati membro e i metodi interni.
Se metti un attributo nella sezione pubblica si perdono i concetti di incapsulamento e di astrazione .
Le classi ricordati che servono per astrarsi dai dati.
Le Get e le Set inoltre vanno scritte in questo modo: (considero direttamente la loro implementazione)


//Get
type GetSize() const { return size; } //invece di type devi mettere il tipo di size (il quale un dato membro)
//const indica che la funzione non modifica i dati membro

//Set
void SetSize(type parameter) { size =parameter ;}//parameter e delle stesso tipo di size
//ovviamente, puoi prevedere anche dei controlli se necessario

l'inserimento dei dati di solito non viene chiesto dentro le funzioni delle classi, se non per motivi che non ti sto qui a spiegare; comunque nelle farlo nelle Set non corretto.
Guarda un esempio di come settare i parametri:


#include <iostream>
using std::cin;
using std::cout;
#include "NomeClasse.h"
//Oppure, anche se non mi hanno detto di fare cose puoi usare using namespace std;
//Se vai alle superiori userai using namespace std;
int main()
{
Nomeclasse obj;
type parameter;
cout<<"Inserisci il valore del parametro da settare: ";
cin>>parameter;
obj.SetAttributo(parameter)
char c; //
cout<<"Premi un tasto per continuare"; // sarebbe system("PAUSE");
cin>>c; //
return 0;
}


Non ti avr insegnato la programmazione ad oggetti, ma almeno penso di aver risposto a qualche tuo dubbio.
--

Loading