Progettazione di sottoclassi per una classe base astratta in C ++

1

Sto facendo un piccolo incarico in C ++ dove devo usare concetti come le funzioni virtuali e l'ereditarietà in un dominio di mia scelta. Sto implementando il prototipo per un gestore di pacchetti in Linux.

Ho il pacchetto della classe base, questo ha attributi come package_id, nome, versione, dipendenze, ecc. Esistono due tipi di pacchetti, MetaPackages e ConcretePackages, che differiscono nel modo in cui devono essere installati e rimossi.

Sto pensando di dichiarare i metodi di installazione e rimozione in Package come virtuali. Durante la memorizzazione di questi pacchetti in un file di dati posso sapere in qualche modo se il pacchetto memorizzato è Meta o Concrete.

Non sono sicuro di come dovrei progettarlo al meglio. Qualcuno può indicarmi una risorsa in modo che io possa imparare meglio questa roba.

Abbiamo Grady Booch nel nostro curriculum e onestamente è difficile leggere molto meno.

    
posta nikhil 21.10.2011 - 15:06
fonte

1 risposta

2

I am thinking of declaring the methods install and remove in Package as virtual.

Sembra una buona idea.

While storing these packages in a datafile can I somehow know if the stored package is Meta or Concrete.

Perché hai bisogno di saperlo? Il punto di polimorfismo (e probabilmente di questo esercizio specifico) è che l'utente dell'oggetto non ha bisogno di conoscerne il tipo concreto, basta chiamarne i metodi. Se detti metodi aderiscono al "contratto" definito dall'interfaccia di base, i dettagli dell'implementazione non sono importanti per il chiamante.

Dovresti implementare i metodi install e remove in ciascuna sottoclasse di calcestruzzo in base alle specifiche dei pacchetti meta e concreti. Quindi l'installer dei pacchetti ha bisogno solo di scorrere attraverso la collezione di pacchetti e chiamare il rispettivo metodo su ciascuno.

    
risposta data 21.10.2011 - 15:21
fonte

Leggi altre domande sui tag