Els objectes combinen l'estat i el comportament, per així semblar-se al món real. Perqué s'assemblin a coses reals, dissenyar un programa orientat a objectes és molt més com pensar sobre coses reals -- que fan, com treballen, i com una cosa es connecta a una altra.
Quan dissenyes un programa orientat a objectes, estas, en efecte, posant junts una simulació d'ordinador de com treballen algunes coses. Les xarxes d'objectes semblen i es comporten com models de sistemes reals. Un programa orientat a objectes pot fer-se a través d'un model, inclòs si no és uns homòleg actual d'ell en el món real.
Cada component del model -- cada tipus d'objecte -- és descrit en termes del seu comportament, responsabilitats i interaccions amb els altres components. Perquè la interfície d'objecte sigui els seus mètodes, no les seves dades, pots fer el process de disseny pensant sobre que ha de fer un component del sistema, no com es representa amb dades. Un cop s'ha decidit el comportament d'un objecte, l'estructura de dades apropiades pot escollir-se, però aquesta és una cosa de la implementació, no del disseny inicial.
Per exemple, en el programa d'ús hídric, podrien començar per decidir com seria l'estructura de dades de l'Aixeta, però que esperes que faci l'Aixeta -- fer una connexió a una Canonada, obrir-se i tancar-se, ajustar el cabal, entre altres. El disseny, per tant, no és lligar-se de bon començament a l'elecció de les dades. Pots decidir primer el comportament, i implementar les dades més endavant. La teva elecció de la estructura de dades pot canviar a mida que avanci el temps sense afectar al disseny.
Dissenyant un programa orientat a objectes no suposa necessariament escriure grans quantitats de codi. La reutilització de les definicions de les classes significa que l'oportunitat és major per construir un programa principalment sense classes fetes per altres. Podria, fins i tot, ser possible construir programes interesants sense que ningú defineixi cap classe. A mida que creixi el conjunt de definicions de classes, tenes més i més parts reutilitzables d'on escollir.
Les classes reutilitzables provenen de molts orígens. Els projectes de desenvolupament ofereixen rendibles definicions de classes reutilitzables, i alguns desenvolupadors empresarials els comercialitzen. Els entorns de programació orientats a objectes normalment venen amb llibreries de classes. En les llibreries Cocoa hi han més de dues centes classes. Algunes d'aquestes classes ofereixen serveis bàsics (mapejat, enmagatzament de dades, missatgeria remota). Altres són més específics (dispositius d'interfície d'usuari, visualitzadors de video, só).
Normalment, un grup de classes de llibreria treballen juntes per definir una estructura de programa parcial. Aquestes classes constitueixen un marc de treball (de l'anglès framework) de programari (o kit que pot utilitzar-se per construir un varietat de tipus d'aplicacions diferents. Quan utiltizes un marc de treball, acceptes el model del programa que proporciona i hi adaptes el teu disseny. Utilitza el marc de treball per:
En cadascuna d'aquestes formes, no només t'adaptes al marc de treball, també t'adaptes a la estructura genèrica del marc de treball pels propòsits especialitzats de la teva aplicació.
El marc de treball, en esència, et dona part d'una xarxa d'objectes pel teu programa i proveeix part de la seva jerarquia de classes. El teu propi codi completa el model del programa començat pel marc de treball.