Først skal vi designe vores objekter, så de har tilstand og adfærd. Vi skaber private felter, der holder staten og offentlige metoder, der er adfærden.
For eksempel, hvis vi designer et personobjekt, kan vi oprette private felter til at gemme en persons fornavn, efternavn og adresse. Værdierne for disse tre felter kombineres for at gøre objektets tilstand. Vi kunne også oprette en metode kaldet displayPersonDetails til at vise værdierne med fornavnet, efternavnet og adressen på skærmen.
Dernæst skal vi foretage adfærd, der får adgang til og ændrer objektets tilstand. Dette kan opnås på tre måder:
For eksempel kan vi designe personobjektet til at have to konstruktormetoder. Den første tager ingen værdier og indstiller blot objektet til at have en standardtilstand (dvs. fornavnet, efternavnet og adressen ville være tomme strenge). Den anden sætter de oprindelige værdier for fornavn og efternavn fra værdier, der er sendt til det. Vi kan også oprette tre accessor-metoder, der kaldes getFirstName, getLastName og getAddress, der ganske enkelt returnerer værdierne for de tilsvarende private felter. Opret et mutatorfelt kaldet setAddress, der indstiller værdien af det private adressefelt.
Til sidst skjuler vi implementeringsdetaljerne for vores objekt. Så længe vi holder os til at holde de statslige felter private og den adfærd offentlige er der ingen måde for omverdenen at vide, hvordan objektet fungerer internt.