Se tutto dovrebbe essere un oggetto in Java (tranne i tipi primitivi), non è questo in contraddizione con il punto di staticità? [duplicare]

0

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 ...

    
posta Dan Savage 24.07.2015 - 16:37
fonte

1 risposta

1

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;
    }
}
    
risposta data 24.07.2015 - 19:28
fonte

Leggi altre domande sui tag