Problemi con la programmazione ad oggetti (generico)

di il
8 risposte

Problemi con la programmazione ad oggetti (generico)

Salve a tutti,
premetto che da poco ho iniziato a studiare la programmazione in C e C++ e ho trovato molto semplice e divertente lo studio della programmazione ''imperativa'' .
Da qualche settiamna mi sono interfacciato con la programmazione ad oggetti ma non riesco a capire la logica da applicare per creare un programma ad oggetti.
Ho giá studiato la teoria ma (saró stupido io) non riesco ad applicarla ad esercizi pratici.
Spulciando la rete ho trovato migliaia di esercizi ma quelli svolti sono sempre i basilari.
Volevo chiedervi se potete risolvere questo:
Progettare una libreria software per il calcolo del computo metrico di un cantiere con le seguenti classi:
-fornitore (contiene alemeno nominativo,num di telefono, num di fax, partita iva, num di conto corrente)
-materiale (contenente almeno descrizione ,fornitore,prezzo unitario, aliquota iva)
il progetto che si richiede comporta la definizione dei memebri dato delle classi suddette, e di altre classi che si ritiene opportuno definire(le classi fornitore e materiale possono ereditare o contenere come membri oggetti di altre classi).
si definisca inoltre una classe magazzino (contenente almeno un array di un certo quantitativo di oggetti materiale e altri memebri che si ritengono necessari per l'utilizzo)

A primo impatto sembrava semplice ma che tipo di rapporto avrá la classe materiale con quella fornitore? Che altre classi sono necessarie?
diciamo che mi perdo nella prima fase di ideazione del codice e non nella fase di implementazione.
Qualcuno puó aiutarmi con questa traccia?

8 Risposte

  • Re: Problemi con la programmazione ad oggetti (generico)

    Si,qualcuno c'è e la stai sottovalutando, la carta. Pensa a tutto ciò che ti viene in mente leggendo la traccia e scrivi, NON IN CODICE ovviamente! Ti viene chiesto di trasformare ciò che hai in classi, hai delle informazioni , quindi comincia ad usarle. Mentre lo fai poi ti renderai conto se hai bisogno di vari raffinamenti, comincia su fornitore e materiale
  • Re: Problemi con la programmazione ad oggetti (generico)

    beginner32 ha scritto:


    Si,qualcuno c'è e la stai sottovalutando, la carta. Pensa a tutto ciò che ti viene in mente leggendo la traccia e scrivi, NON IN CODICE ovviamente! Ti viene chiesto di trasformare ciò che hai in classi, hai delle informazioni , quindi comincia ad usarle. Mentre lo fai poi ti renderai conto se hai bisogno di vari raffinamenti, comincia su fornitore e materiale
    Posso creare la classe fornitore con i suoi parametri e la classe materiale.
    Nella classe materiale, tra gli attributi ci metto anche l'oggetto di tipo fornitore.
    Puó andare?
  • Re: Problemi con la programmazione ad oggetti (generico)

    Un riferimento al fornitore dovrebbe essere uno dei campi dell'oggetto appartenente alla classe materiale, almeno da quel che vedo. Perciò si, può andare. Man mano puoi raffinare a seconda della soluzione che meglio ritieni opportuna.Buon lavoro
  • Re: Problemi con la programmazione ad oggetti (generico)

    Appena lo scrivo, posto per una correzione.
    Grazie per la dritta.
  • Re: Problemi con la programmazione ad oggetti (generico)

    Ora che ci penso, nella classe magazino vi sará sicuramente l'array di materiali (array di oggetti di tipo class materiale) e stavo pensando ad un array parallelo che tiene le quantitá dei singoli materiali.
    ovviamente ad ogni inserimento dovró verificare se il materiale é gia presente e in caso affermativo modificare solo la quantitá.
  • Re: Problemi con la programmazione ad oggetti (generico)

    Per ora ho scritto un pó e volevo sapere se é giusto...
    Sinceramente non penso perché non si avvia
    
    #include "stdafx.h"
    #include "string.h"
    #include <iostream>
    using namespace std;
    class fornitore {
    	char* nome;
    	char* numTel;
    	char* numFax;
    	char* IVA;
    	int* conto;
    public:
    	void impostaNome();
    	char prendiModello();
    	void impostaTelefono();
    	char prendiTelefono();
    	void impostaFax();
    	char prendiFax();
    	void impostaIVA();
    	char prendiIVA();
    	void impostaConto();
    	int prendiConto();
    };
    
    void fornitore::impostaNome() {
    	cin >> *nome;
    };
    
    char fornitore::prendiModello() {
    	return *nome;
    };
    
    void fornitore::impostaTelefono() {
    	cin >> *numTel;
    };
    
    char fornitore::prendiTelefono() {
    	return *numTel;
    };
    
    void fornitore::impostaFax() {
    	cin >> *numFax;
    };
    
    char fornitore::prendiFax() {
    	return *numFax;
    };
    
    void fornitore::impostaIVA() {
    	cin >> *IVA;
    };
    
    char fornitore::prendiIVA() {
    	return *IVA;
    };
    
    void fornitore::impostaConto() {
    	cin >> *conto;
    };
    
    int fornitore::prendiConto() {
    	return *conto;
    };
    
    class materiale {
    	char *desc;
    	float* prezzoUnitario;
    	int* aliIVA;
    	fornitore forn;
    public:
    	void impostaDesc(char*);
    	char prendiDesc();
    	void impostaPrezzo(float);
    	float prendiPrezzo();
    	void impostaAliquota(int);
    	int prendiAliquota();
    };
    
    void materiale::impostaDesc(char* desci) {
    	desc = desci;
    };
    
    char materiale::prendiDesc() {
    	return *desc;
    };
    
    void materiale::impostaPrezzo(float num) {
    	*prezzoUnitario = num;
    };
    
    float materiale::prendiPrezzo() {
    	return *prezzoUnitario;
    };
    
    void materiale::impostaAliquota(int num) {
    	*aliIVA = num;
    };
    
    int materiale::prendiAliquota() {
    	return *aliIVA;
    };
    
    class magazzino {
    	materiale array[20];
    	int quant[20];
    public:
    	magazzino()
    	{
    		for (int i = 0; i, 20; i++) quant[i] = 0;
    	};
    };
    
    int main() {
    	magazzino mag;
    
    	cout << "prova avvio";
    	return 0;
    }
    
    se lo eseguo mi esce la finestra:
    Exception thrown at 0x00922784 in ConsoleApplication3.exe: 0xC0000005: Access violation writing location 0x00900000.
    If there is a handler for this exception, the program may be safely continued.
    E ovviemnte dopo non succede piú niente.
    Potete spiegarmi quali sono i problemi di questo codice ?
  • Re: Problemi con la programmazione ad oggetti (generico)

    Ho appena notato che ho gestito tutto con i puntatori e non ho allocato niente *.*''
    fate finta di niente per quello, devo riscrivere tutti i dati con variabili normali e non puntatori...
  • Re: Problemi con la programmazione ad oggetti (generico)

    Oltre quello c'erano degli errori di sintassi tipo la condizione del ciclo for nel metodo magazzino (). Comunque sia ti consiglio di prendere un manuale di C++ ,specialmente quello di stroustrup ,in modo da familiarizzare con concetti di costruttore,distruttore , più in la anche iteratore se serve Buon lavoro
Devi accedere o registrarti per scrivere nel forum
8 risposte