Scrivo spesso codice che crea un oggetto e quindi utilizzo metodi statici in classi statiche per manipolare detto oggetto.
Mi manca il punto di OOP? Come faccio a sapere se sto pensando alla mentalità OOP? Dubito che io sia ...
Scrivo spesso codice che crea un oggetto e quindi utilizzo metodi statici in classi statiche per manipolare detto oggetto.
Mi manca il punto di OOP? Come faccio a sapere se sto pensando alla mentalità OOP? Dubito che io sia ...
Sì, mancano i principi OOP nella codifica. OOP non tratta di tipi primitivi, OOP significa avere un oggetto che ha delle responsabilità (metodi in sostanza).
I Principi di GRASP sono un buon inizio per imparare dove il metodo appartiene in OOP.
In OOP si desidera trattare la maggior parte delle istanze come oggetti che hanno responsabilità e campi di istanza (variabili specifiche dell'istanza). Tuttavia, a volte (e intendo a volte) si troverà la necessità di avere una classe statica, che è perfettamente valida finché si è sicuri che questa classe non ha bisogno di un'istanza. Ma prima di stabilirti con la creazione di uno, pensa: "Mi manca un oggetto?".
Il tuo modo di operare:
var alice = new Person("Alice");
ChangeName(alice, "John");
// Somewhere in your static code
function ChangeName(Person person, string name) {
person.name = name;
}
Modo OOP:
var alice = new Person("Alice");
alice.ChangeName("John");
public class Person {
private _name;
public Person(string name) {
_name = name;
}
public void ChangeName(string name) {
_name = name;
}
}
Leggi altre domande sui tag object-oriented java static