Un programa orientat a objectes és normalment construit des d'una varietat d'objectes. Un programa basat en el marc de treball Cocoa podria utilitzar objectes NSMatrix, objectes NSWindows, objectes NSDictionary, objectes NSFont, objectes NSText, i molts altres. Els programes sovint utilitzen més que un objecte del mateix tipus de classe -- diversos NSArrays o NSWindows, per exemple.
En Objective-C, defineixes objectes al definir les seves classes. La definició de classe és un prototip per un tipus d'objecte; aquest declara les variables d'instància que serà part de cada mèmbre de la classe, i defineix un conjunt de mètodes que tots els objectes de la classe poden utilitzar.
El compilador crea justament un objecte accessible per a cada classe, un objecte de classe que connexi com contruir nous objectes pertanyents a la classe. (Per aquesta raó tradicionalment s'anomea un "fàbrica d'objectes"). L'objecte classe és una versió compilada de la classe; els objectes que es contrueixen són instàncies de la classe. Els objectes que fan el treball principal del programa són intàncies creades per l'objecte classe quan s'executa.
Totes les intàncies d'una classe tenen el mateix conjunt de mètodes, i totes tenen un conjunt de variables d'instància tallades del mateix motllo. Cada objecte obté les seves pròpies variables d'instància, però els mètodes es comparteixen.
Per convenció, els noms de les classes comencen amb un lletra en majúscules (com el "Rectangle"); els noms de les instàncies normalment comencen amb un lletra en minúscula (com "elMeuRectangle").