Alla luce di quanto detto precedentemente si capisce che la base di questa tecnica di programmazione è la struttura che ci permette di modellare entita' astratte . La classe è la struttura formale attraverso la quale si possono definire nuovi tipi di dati e le relazioni che intercorrono con le altre classi. Questa struttura è composta da due elementi: gli attributi, o variabili di istanza, che descrivono la struttura dati della classe e i metodi che operano sugli attributi secondo una certa "implementazione" e offrono sull'esterno una "interfaccia". Con il termine interfaccia si definisce un formalismo per individuare quali funzioni sono implementate e come, tali funzioni, vengono chiamate I dettagli dell' implementazione sono nascosti all'utente, il quale potra' interagire solo tramite l'interfaccia prestabilita.
Gli oggetti che appartengono ad una stessa classe hanno comuni proprietà dal punto di vista semantico, cioè di significato ad alto livelllo; si tratta di variabili definte in differenti locazioni di memoria e quindi del tutto indipendenti: Si noti che due oggetti possono avere inizializzati nello stesso modo i propri attributi e restare tuttavia distinti, nello stesso modo in cui due variabili restano distinte da nomi simbolici diversi, anche se contengono lo stesso valore. Per esempio se si considerasse la classe delle persone su ogni oggetto persona si potrebbe distinguere il colore dei capelli, l'altezza o il peso. Tali valori sono detti membri e rappresentativole caratteristiche peculiari di una categoria. I membri di una classe possono essere di tipo "primitivo" (ex: int, float, boolean)ma anche riferimaenti a generiche classi. In questo caso inizializzare tale membro significa creare un'istanza della sua classe. La figura mostra che i metodi della classe contenitore possono accedere ai membri dell'oggetto contenuto soltanto tramite la sua interfaccia simbolica.
Il polimorfismo è quel meccanismo che consente ad un'interfaccia di essere utilizzata per una classe generale di azioni che, pur essendo riferite ad oggetti differenti e pur avendo differenti implementazioni, siano equivalenti dal punto di vista semantico. La specifica azione selezionata è determinata dalla natura della situazione. Per spiegare meglio questo concetto si consideri il seguente esempio nel mondo reale. La definizione di polimorfismo può essere applicata al termostato. Se si desidera raggiungere una data temperatura, ad esempio 25 gradi, non si deve fare altro che impostarla sul termostato indipendentemente dal combustibile usato o dal modo di funzionamento dell'impianto. Quindi tutti i termostati svolgono la stessa funzione e offrono all'utente la stessa interfaccia, anche se sono costruiti in maniera completamente diversa. Dal punto di vista realizzativo si definisce "astratto" il metodo nella classe di base e lo si implementa soltanto nelle classi derivate. Il giusto collegamento è realizzato in modo dinamico.