Originariamente inviato da abcd1000
Ecco le domande:A mio avviso, i due metodi che hai presentato sono uguali, a livello logico, poichè si "gioca" sempre con una classe che, in un metodo o in un altro, si occupa di creare i pulsanti di cui ha bisogno.1) Secondo voi tutti e due i modi sono corretti da un punto di vista di programmazione ad oggetti?
La programmazione ad oggetti influenza maggiormente l'area concettuale del codice: per esemplificare, la scelta di utilizzare una classe complessa dipende da quanti discendenti, cioè varianti, pensi di farne. Nel tuo caso, se il menu è sempre identico e viene creato quando richiesto, aggiungere i pulsanti nel costruttore o richiamando un metodo appropriato è la stessa identica cosa.
E' diverso invece il caso in cui vuoi creare "varianti" del tuo menu, ad esempio accodando nuove voci a quelle esistenti: in quella situazione, ti conviene rendere "virtuale" o comunque "overridable" il metodo makeMenu in modo da poterlo richiamare da una classe discendente ed estendere aggiungendo le voci necessarie.
I metodi che hai presentato sono identici: l'unica differenza è nella posizione del codice che in un caso si trova nel costruttore, nell'altro caso si trova in un metodo a parte, ma in entrambi i casi deve essere caricato in memoria quando crei un'istanza della classe (oggetto).2) Qual'è il migliore? Io penso il secondo modo perchè non si istanzia nessun oggetto e quindi occupo meno risorse. O sbaglio?
In che senso? Ciascuna tipologia di metodo è creata per essere utilizzata...3) Usare metodi statici è una cosa da fare nella programmazione oppure è sconsigliato per qualche motivo?
Il fatto che possa essere "sconsigliata", dipende dall'uso che se ne fa.
No, ma io mi limiterei a valutare la loro effettiva utilità in base alle esigenze di progettazione ad oggetti.4) I metodi statici occupano più risorse dei metodi non statici?
No, sono più rapidi perchè il loro indirizzo in memoria è già noto, mentre i metodi che possono essere posti in "override" devono essere ricercati dal codice in base all'oggetto con cui si ha a che fare.5) I metodi statici sono più lenti dei metodi non statici?
Non hai specificato il linguaggio che utilizzi, ad ogni modo io mi riferisco a Delphi. I principi della programmazione ad oggetti non cambiano, al massimo si modificano leggermente le nomenclature degli elementi.
Ciao!![]()