Az objektum orientált programozási nyelvek (OOP nyelv) ezen a ponton jelentenek fejlődést. A felhasználó sokkal egyszerűbben és szabadabban készítheti el a saját típusait. Meglévő típusok továbbfejlesztésével (öröklődés) kevés munkával készíthet új típusokat. A saját típusaihoz (általában) készíthet operátorokat is (melyeknek jelentését természetesen le kell programozni). Ezek után a saját típus szinte minden szempontból egyenragúvá válik a nyelvi alaptípusokkal. A saját típusokhoz nem csak operátorokat rendelhet, hanem megadhat függvényeket és eljárásokat is, amelyek az adott típusú adatokkal végeznek valamilyen műveletet. Mivel ezen függvények és operátorok az adott típushoz tartoznak, a típus részeinek tekintendők. Az egy típusba sorolt adattároló változók (mezők), a hozzájuk tartozó műveletek és operátorok csoportját (halmazát) osztálynak nevezzük.
Egy OOP nyelvben tehát szintén megtalálhatóak az eljárások és függvények, illetve a paraméterek, változók. A vezérlési szerkezetek is a megszokott három formára épülnek (szekvencia, szelekció, iteráció). Ezért az OOP nyelvek inkább csak szemléletmódban mások (melyik eljárást és függvényt hova írjuk meg), mint kódolási technikákban. Ezért az OOP nyelveket nem tekintik külön generációnak.