Aus den drei Grundprinzipien der OOP folgen bei konsequenter Umsetzung einige weitere Konzepte. Da ist zuerst das aus der Kapselung entstehende Konzept, daß Objekte ein Innen und ein Außen haben. Innen heißt dabei, daß es Elemente und evtl. auch Methoden gibt, die der Nutzer (d.h. der aufrufende Programmteil) dieses Objektes nicht sieht, während das Außen die Menge der Elemente und Methoden ist, die der Nutzer auch sehen kann. Objektorientierte Sprachen haben in der Regel die Möglichkeit, eine solche Unterscheidung zu treffen - in C++ werden Elemente und Methoden des inneren Bereichs privat (private) genannt, die des äußeren Bereichs öffentlich (public).
Die Nutzung der privaten Datenstrukturen ist dann nur noch über öffentliche Methoden möglich, bei einem konsequent objektorienten Programmierstil sollten alle Elemente privat sein und der Zugriff auf die Elemente nur über Methoden erfolgen (sogenannte Zugriffsmethoden). Damit ist u.a. gewährleistet, daß man später die Datenstrukturen austauschen kann, ohne die Aufrufe der entsprechenden Zugriffsmethoden zu ändern - und damit auch keine Programme ändern muß, die dieses Objekt nutzen. Außerdem ist es möglich, zusätzliche Effekte mit in die Zugriffsmethoden einzubauen, so z.B. ein Flag, das anzeigt, ob eine Änderung der Daten erfolgte. Wenn ein direkter Zugriff auf die Elemente der Klasse möglich wäre, wäre dieses Flag unzuverlässig.
Aus dem Konzept des Innen und Außen eines Objektes folgt, daß ein Objekt eine Außenseite hat. Diese Außenseite wird gebildet durch die Zugriffsmöglichkeiten auf Methoden und Elemente des Objektes. Sie werden vor allem von den Namen der öffentlichen Elemente und Methoden und der Parameter dieser Methoden bestimmt. Die Menge der Zugriffsmöglichkeiten wird als Schnittstelle (Interface) bezeichnet.
Der Aufruf einer Methode eines Objektes wird häufig als Nachricht (Message) bezeichnet. Dahinter steckt die intuitive Vorstellung, daß ein Programmteil durch eine Nachricht ein Objekt dazu bringt, etwas zu tun. Das kann dann durchaus auch nur ein Setzen eines Elementes sein. Wesentlich an diesem Konzept der Programmierung ist aber, daß niemals ein externer Programmteil das Objekt verändert, sondern immer nur eine Nachricht an das Objekt schickt, dies selbst zu tun. Damit kann ein Objekt immer die Kontrolle über sein Innen behalten.