Клас – набір даних і методів, що мають спільну, цілісну, добре визначену сферу відповідальності. Однією з основних умов ефективного програмування є максимізація частини програми, яку можна ігнорувати при роботі над конкретним фрагментом коду. Клас – основний засіб досягнення даної цілі.
Не маючи явного уявлення про поняття абстракції, що використовується при побудові класів, програмісти часто створюють класи, які тільки називаються "класами", будучи насправді лише контейнерами, які вміщують дані та підпрограми, що погано узгоджуються між собою. Класи примітні тим, що дозволяють працювати з сутностями реально світу, а не з низькорівневими сутностями реалізації.
Переваги використання абстракції на рівні класів.
1) Можливість приховування реалізації.
2) Більш висока інформативність інтерфейсу.
3) Легкість оптимізації коду.
4) Легкість читання і зрозумілість коду.
5) Обмеження області використання даних рамками одного класу.
6) Можливість роботи з сутностями реального світу, а не низькорівневими деталями реалізації.