istanziare un oggetto all'interno di una classe

Ciao a tutti,

vi pongo questo dubbio.

Nella programmazione ad oggetti, avrei bisogno di alcune funzioni comuni che possono essermi sempre utili quando definisco funzioni di classi. Ad esempio alcune funzioni che si preoccupano di togliere gli apici nelle stringhe, altre che si preoccupano di gestire le date, altre che si verificano se i valori dei dati rispettano certi range etc.

Le soluzioni che ho pensato per utilizzare queste funzioni comuni all'interno delle mie classi sono due

1°SOLUZIONE

Dichiarare queste funzioni comuni in delle classe particolari, es. Validator , Html, Date, etc. Queste poi vengono inizializzate all'interno delle mie classi in degli oggetti e richiamate quando mi servono

2°SOLUZIONE

Creare una classe generica con il nome es. Object e all'interno mettere tutte le funzioni comuni. Infine tutte le mie classi ereditano da questa classe Object, in modo da avere sempre a disposizione questi funzioni.

Ora mi chiedo, a livello metodologico quale delle due soluzioni è più corretta ?  A questa domanda ho cercato di darmi una soluzione da solo ma ovviamente vorrei confrontarmi con voi e capire qual'è la più corretta

RE: 1° SOLUZIONE

PRO:

-tutte le funzioni sono suddivise in classi in  base al contesto

-istanzio solo quelle che mi servono al momento

CONTRO:

-le classi diventano dipendenti da queste istanze che contengono le mie funzioni.

RE: 2°SOLUZIONE

PRO:

- non devo ogni volta istanziare le classi delle funzioni utili

CONTRO:

- le funzioni non sono suddivise in classi e quindi si crea un pò di confusione.

Aspetto un vostro suggerimento

ps. Un salutone all' Ing. Gianni :)

inviato 5 anni fa
Toto007
X 0 X

Io sono sicuramente per la prima soluzione.

Se ti escono delle dipendenze, vuol dire che stai sbagliando nell'impostare le tue classi.

Le uniche dipendenze che dovresti avere dovrebbero essere "a pacchetto": per esempio, crei un insieme di classi per gestire i form, in un cui una classe Form ha bisogno di una classe Input, che a sua volta ha bisogno di una classe InputValidator. In questo caso stai limitando le dipendenze a una serie di classi che hanno uno scopo comune, per cui la dipendenza è giustificata.

Se invece fai una generica classe Validator e poi la usi dappertutto, allora non va bene.

Si può fare lo stesso discorso per un insieme di classi che gestiscano il database, in un cui una si occupa dell'escape (togliere gli apici dalle stringhe)

risposto 5 anni fa
Massimiliano Arione
X 0 X

Ciao Toto007, senza dubbio la prima soluzione è quella corretta. La dipendenza che si crea sarà di tipo "A usa B" che è molto più blanda di "A eredita da B".

Infatti se hai bisogno di disaccoppiare A e B nel primo caso ti basta definire una interfaccia IB e fare in modo che A usi IB e non direttamente B. I questo modo in diversi contesti, ma anche a run time, potrai usare prima un oggetto B1 e poi un oggetto B2, semplicemente facendo implementare sia a B1 che a B2 l'interfaccia IB.

P.S.: sei diventato dottore?

risposto 5 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda