PDA

Visualizza la versione completa : [c++]applicazione piu o meno oop


giuseppe500
15-05-2012, 13:57
ciao.
parto con la domanda:
1)ho una serie di forme 2d che devono essere estruse in 3d e hanno le proprietà necessarie per estrudere che sono piu o meno le stesse , quello che è diverso è il modo di estrarre queste informazioni(che è comunque precedente all estrusione e non relazionato con questa) e il modo di estrudere dalle proprietà.

premessa:
penso (e forse sbaglio) che un applicazione ad oggetti possa essere piu o meno oop spinta.
mi chiedo se è sempre meglio spingere al massimo su questa astrazione,(l'oop), ho visto che a volte non è necessario e invece a volte è indispensabile , premetto che di tempo ne ho e posso fare le cose bene ma indipendentemente da questo mi sembra che a volte "spingere" troppo sia controproducente , quasi una malattia , un brutto metodo.

dopo queesta premessa chiedo:
sia meglio creare un tipo base CExtruder e creare una factory con un parametro intero del tipo di estrusione che crea il tipo derivato(factory method?) e nel tipo derivato avere ad es una funzione estrudi che sia polimorfica nelle varie implementazioni delle forme relative al parametro.

mi chiedo se puo essere una buona implementazione , ma puo essermi utile?
In che senso?

per es se una forma in piu viene aggiunta basta derivare da CExtruder e aggiungere un parametro al factory method?


chiedo a voi è un esempio , mi è capitato e l'ho fatto ad oggetti e forse non è neanche tanto spinto.

scusate se dico degli strafalcioni , e correggetemi ma ho notato questa cosa della "sovra programmazione".

ciao.

Andrea Simonassi
15-05-2012, 15:16
Prima di tutto chiediti se aumentare l'indirezione ti migliora la manutenibilità del codice. Altrimenti fanne a meno.

Dopo di che se la tua intenzione è fare qualcosa come

if (Tipo == 'a') istanzia tipo a
else if(tipo== 'b') istanzia tipo b

sappi che questo è contro la morale. :)

tendenzialmente dovresti avere una classe

class forma2D
{
metodo astratto che ritorna forma3d ESTRUDI(Versore v, double modulo);
}

quindi

class poligonochiuso : forma2D
{
forma3d ESTRUDI(Versore v, double modulo)
}

class cerchio : forma2D
{
forma3d ESTRUDI(Versore v, double modulo)
}

eccetera

Ciao.

Caiodark
15-05-2012, 18:44
Originariamente inviato da giuseppe500
ciao.
parto con la domanda:
1)ho una serie di forme 2d che devono essere estruse in 3d e hanno le proprietà necessarie per estrudere che sono piu o meno le stesse , quello che è diverso è il modo di estrarre queste informazioni(che è comunque precedente all estrusione e non relazionato con questa) e il modo di estrudere dalle proprietà.


Diciamo che tu hai delle forme 2d che hanno in comune il fatto che possono essere estruse in 3D.



premessa:
penso (e forse sbaglio) che un applicazione ad oggetti possa essere piu o meno oop spinta.
mi chiedo se è sempre meglio spingere al massimo su questa astrazione,(l'oop), ho visto che a volte non è necessario e invece a volte è indispensabile , premetto che di tempo ne ho e posso fare le cose bene ma indipendentemente da questo mi sembra che a volte "spingere" troppo sia controproducente , quasi una malattia , un brutto metodo.


Per me non c'é troppa o troppo poca OOP, c'é solo un buon design o un cattivo design (spesso non c'é proprio design). Non so se l'applicazione che stai realizzando sia banale o no in termini di righe di codice, ma tu quanto tempo hai speso, carta e penna alla mano, per fare l'analisi e successivamente il design del tuo progetto?



dopo queesta premessa chiedo:
sia meglio creare un tipo base CExtruder e creare una factory con un parametro intero del tipo di estrusione che crea il tipo derivato(factory method?) e nel tipo derivato avere ad es una funzione estrudi che sia polimorfica nelle varie implementazioni delle forme relative al parametro.

mi chiedo se puo essere una buona implementazione , ma puo essermi utile?
In che senso?

per es se una forma in piu viene aggiunta basta derivare da CExtruder e aggiungere un parametro al factory method?


chiedo a voi è un esempio , mi è capitato e l'ho fatto ad oggetti e forse non è neanche tanto spinto.

scusate se dico degli strafalcioni , e correggetemi ma ho notato questa cosa della "sovra programmazione".

ciao.

A volte per capire la qualità di un'astrazione basta leggere a voce alta e usare un po' di logica.
Prova a leggere a voce altra: una forma 2d è un Cextrude. Non so a te, a me suona malissimo.

Loading