Innanzitutto, dobbiamo progettare i nostri oggetti in modo che abbiano stato e comportamenti. Creiamo campi privati che contengono lo stato e metodi pubblici che sono i comportamenti.
Ad esempio, se progettiamo un oggetto persona, possiamo creare campi privati per memorizzare il nome, il cognome e l'indirizzo di una persona. I valori di questi tre campi si combinano per rendere lo stato dell'oggetto. Potremmo anche creare un metodo chiamato displayPersonDetails per visualizzare sullo schermo i valori di nome, cognome e indirizzo.
Successivamente, dobbiamo creare comportamenti che accedano e modifichino lo stato dell'oggetto. Questo può essere realizzato in tre modi:
Ad esempio, possiamo progettare l'oggetto persona in modo che abbia due metodi di costruzione. Il primo non accetta alcun valore e imposta semplicemente l'oggetto in modo che abbia uno stato predefinito (ovvero, il nome, il cognome e l'indirizzo sarebbero stringhe vuote). Il secondo imposta i valori iniziali per il nome e il cognome dai valori passati ad esso. Possiamo anche creare tre metodi di accesso chiamati getFirstName, getLastName e getAddress che restituiscono semplicemente i valori dei campi privati corrispondenti. Crea un campo mutatore chiamato setAddress che imposterà il valore del campo privato dell'indirizzo.
Infine, nascondiamo i dettagli di implementazione del nostro oggetto. Finché ci atteniamo a mantenere privati i campi statali e i comportamenti pubblici, non c'è modo per il mondo esterno di sapere come funziona l'oggetto internamente.