Salve a tutti,
sono nuovo e autodidatta per quanto riguarda la programmazione ad oggetti e il C++
Vorrei esporre questo quesito piu' di concezione che di linguaggio.

Ho creato delle classi base astratte:
Falegnameria - Tronco - Conci - Sezione - Essenza
Le classi derivate sono ad esempio per Essenza: abete, larice, ecc , per Sezione: circolare, rettagolare,...

Per ora, nei metodi delle classi, passavo per referenza la classe "inferiore"' es:

Circolare.getMatrix(Larice);

questo percorso dal basso all alto mi funziona fino alla classe Falegnameria.
Infatti il mio problema e' capire chi o dove devono essere chiamati gli oggetti... cerco di spiegarmi.
Per ora Falegnameria ha dei metodi che prendono Tronco e lo elaborano. Pero' Tronco deve avere tutte le informazioni che son state definite negli oggetti precedenti fino ad Essenza.
Dunque in ottica, programmazione ad oggetti, devo prima creare gli oggetti fino a Tronco ad esempio dal main (ma volevo evitare) e poi passarli a Falegnameria oppure e' la stessa Falegnameria che deve prima creare oggetti al suo interno e poi passarli ai suoi metodi?

Con il primo metodo lavoro praticamente dal basso verso l-alto, pero' devo usare una serie di istruzioni che non so dove definirle penso separatamente dal programma, mentre con la seconda opzione avrai un percorso forse da cambiare ma che sarebbe dall-alto verso il basso, con poche istruzioni dal main o altro perche' una volta chiamata Falegnameria tutto e' collegato di conseguenza.
Spero di non essere stato troppo confusionario.
Dove devo essere piu' chiaro, ditemelo pure
Grazie