L'essentiel de la programmation objet est l'écriture de code pour de nouveaux objets, c'est à dire la définition de nouvelles classes. En Objective C les classes sont définie en deux parties :
Un seul fichier peut déclarer ou implémenter plusieurs classes. Mais l'usage veut que l'on place chaque interface dans un fichier différents, ainsi que chaque implémentation. Ce découpage explicite mieux le status indépendant des différentes classes, et donne un rôle important au concept d'interface qui est un concept clef dans la programmation à plusieurs.. Le nom de ces fichiers est corrélé généralement au nom de la classe quand il ne sont pas tout simplement identiques. L'implémentation est un fichier d'extension ".m" ce qui indique du code ObjectiveC. L'interface peut avoir l'extension de votre choix mais la norme est à l'usage de l'extension ".h" comme en C pour les fichiers d'inclusion. Ainsi la classe Matrix aura sont interface dans le fichier Matrix.h et sont implémentation dans le fichier Matrix.m.
Cette séparation de l'interface et de l'implémentation est adaptée à la philosophie objet. Un objet est une entité autonome qui résout les problèmes comme une boite noire, une fois que vous avez définie les interactions de l'extérieur avec l'objet, vous prouver changer l'implémentation sans danger pour le reste de l'application. Reciproquement si l'interface doit changer (ce qui doit être éviter au maximum) un mécanisme de protection des fichiers d'interace peut vous obliger à signaler la modification soit à l'utilisateur soit à l'implementeur suivant votre propre cituation.