Le tecniche di programmazione basate su oggetti e classi di oggetti rappresentano la soluzione più moderna e funzionale per affrontare lo sviluppo di programmi con caratteristiche di comprensibilità, manutenibilità e riutilizzo. Inoltre con questo paradigma non è più il progettista a doversi adattare alle regole di programmazione dettate dall’elaboratore, come accadeva al massimo grado nello sviluppo di programmi in assembly agli albori dell’informatica, ma è piuttosto la macchina che si avvicina all’uomo, mediante linguaggi in grado di modellizzare le entità del mondo reale, costituite da oggetti dotati di specifici attributi e capaci di interagire fra loro attraverso operazioni ben definite (metodi). Fra i diversi linguaggi orientati agli oggetti sono particolarmente affermati il C++ e Java. Entrambi definiscono relazioni di propagazione delle caratteristiche e dei comportamenti degli oggetti secondo regole di ereditarietà. Descrivono le diverse manifestazioni che un oggetto può avere, secondo regole di polimorfismo. Permettono di ridefinire sugli oggetti il significato degli operatori più comuni, attraverso soluzioni di overloading. La libreria standard del C++ (STL) definisce una collezione di classi e di funzioni di utilizzo generale e introduce inoltre delle classi, chiamate contenitori, che costituiscono collezioni di oggetti per i quali sono predefiniti i metodi di accesso. Gli oggetti sono generici, essendo implementati come template di classi. Analogamente anche in Java esiste un Java Collections Framework che definisce una serie di contenitori generici, progettati intorno a una rigida gerarchia di interfacce.