Domanda Risolto Esercizio ereditarietà

Squiddy™

Utente Electrum
26 Aprile 2010
226
17
28
114
Salve ragazzi, frequento l'università di informatica e mi sono imbattuto in una simulazione di una prova in itinere che dovrei "svolgere" per prepararmi a quella del prossimo mese.
Mi potreste aiutare?
In allegato vi lascio le foto dell'esercizio, grazie.
P.s.
E' da svolgere in puro c++ , io utilizzo dev come programma, voi che mi consigliate?
esempio 1.png
esempio 1 pt2.png
 
In particolare cosa ti serve? Quando si tratta di ereditarieta' ti consiglio di indentificare le classi madri/padri o come preferisci chiamarle. Una volta instanziate quelle, esse avranno dei determinati campi privati e funzioni public. In particolare e' sempre consigliabile scrivere costruttore, set e get devi valori.
Da li' inizi a scendere nella gerarchia scrivendo le prima classi figlie, definendo come ereditano dalla classe madre e che campi hanno in piu'. Ovviamente anche qui costruttore, set, get.

Una volta fatta la struttura gerarchica (lo scheletro quindi), io inizierei a scrivere le funzioni specifiche che lavorano sui dati (ho letto un sin^2 e cose del genere).

Per quanto riguarda l'IDE, non ne uso: editor di testo e terminale io. Come IDE ne puoi provare tanti e scegliere, alla fine e' quasi solo questione di gusto imho

Spero di averti aiutato, in caso dimmi che provo a rendermi piu' utile
 
Non riesco a intraprendere una strada per cominciare, nel senso, non riesco a capire logicamente come iniziare e cosa vuole l'esercizio in output..
Mi aiuteresti anche solo con l'inizio (in codice) così capendo almeno cosa fare.
 
Sinceramente dello schema mostrato non capisco molto.. Come prima cosa devi individuare la/le classe/i madre/i ed istanziarla/e:
C++:
class Madre{
    private:
        //Inserimento campi privati di tale classe, ovvero
        //i campi che appartengono sia ad essa ed a tutte
        //le classi figlie
    public:
        //tutte le funzioni (generalmente non campi) che
        //ti permetteranno di leggere e modificare i campi
        //private e le altre funzioni che accomunano classe
        //Madre e le classi figlie
    protected:
        //campi che vuoi siano private/protected nelle classi
        //figlie, le quali potranno accedervi e modificarli al
        //loro interno
}

In seguito individua e crea le classi figli:
C++:
class Figlia1: public/private/protected Madre{
    private:
        //Inserimento campi privati di tale classe, ovvero
        //i campi che appartengono ad essa, ma non alla classe
        //madre

    public:

        //tutte le funzioni che ti permetteranno di leggere e
        // modificare i campi private e le altre funzioni che
        //sono necessarie per questa classe figlia, ma non per
        //la classe madre

    protected:

        //campi che vuoi siano private/protected nelle classi
        //figlie (qualora ce ne siano)

}

Spero sia piu' chiaro!
 
Grazie mille, intendevo proprio questo!
Messaggio unito automaticamente:

Giusto per curiosità, potrebbero esserci altri modi per fare questo esercizio?
Senza usare padre/figli?
 
Si, potresti creare un oggetto per ogni istanza, ma cio' vorrebbe dire che ogni istanza potrebbe avere uno (o molti piu') campi in comune con un'altra (o delle altre). Oltre ad avere piu' codice da scrivere quindi, rischieresti anche di rincoglionirti a causa della ripetizione dei dati!
Es. Una mamma ha 6 figlie (sto inventando al momento). Queste 6 figlie hanno solo una mamma ovviamente.
Ereditarieta':
oggetto mamma -> campo nomeMamma
ogni figlia ereditera' da mamma e avra' quindi modo di ottenere il suo nome.
Senza ereditarieta':
oggetto mamma->campo nomeMamma
6 oggetti figlie-> 6 volte dovrai riscrivere quindi il campo (una volta in ognuna di esse).

Dirai tu: "va beh ripeto, ma non mi confondo almeno".
Ora arriva il bello (BRUTTO).
La mamma cambia nome.
Ereditarieta':
oggetto mamma-> cambiaNome.
ogni figlia avra' l'aggiornamento, perche' eredita'.
Senza ereditarieta':
BUONA FORTUNA! Dovrai cambiare il nome della mamma nella classe mamma e nelle 6 classi figlie.

Questo esempio e' molto stupido, ma spero ti sia chiaro. Ovviamente in universita'/liceo, non ti troverai mai ad avere classi con 100 oggetti.. Ma prova ad immaginare solamente la fatica (ed il rischio di errore lasciando qualche dato invariato) qualora non usassi l'ereditarieta' e dovessi cambiare un dato!
 
Ultima modifica:
Salve ragazzi, frequento l'università di informatica e mi sono imbattuto in una simulazione di una prova in itinere che dovrei "svolgere" per prepararmi a quella del prossimo mese.
Mi potreste aiutare?
In allegato vi lascio le foto dell'esercizio, grazie.
P.s.
E' da svolgere in puro c++ , io utilizzo dev come programma, voi che mi consigliate?Visualizza allegato 31127Visualizza allegato 31128


cincotti o messina?? :oops::oops::asdbeer:
in ogni caso ti consiglio di tenere come guida l'esercizio svolto sul drive (fino all'anno scorso c'erano).
Ti sconsiglio vivamente di cercare "vie alternative" alla sua risoluzione perche sono alquanto contrari alle vie alternative, in fondo lo scopo della prova è farti prendere confidenza con le gerarchie ereditarie
 
  • Mi piace
Reazioni: Squiddy™
cincotti o messina?? :oops::oops::asdbeer:
in ogni caso ti consiglio di tenere come guida l'esercizio svolto sul drive (fino all'anno scorso c'erano).
Ti sconsiglio vivamente di cercare "vie alternative" alla sua risoluzione perche sono alquanto contrari alle vie alternative, in fondo lo scopo della prova è farti prendere confidenza con le gerarchie ereditarie
Cincotti..