Я когда-то так же застрял. Не понимал, как же выделять эти самые классы? И зачем?
Долго тупил в эти «авто» и наследники «грузовик» и «легковушка», с колесиками и баками.
Или users с managers и clients.
Всё это было понятно, пока не пытался сам что-то осмыслить из реальной жизни.
Мне помогли две вещи:
1. Фраза учителя типа «класс - это заголовок таблицы; строки - экземпляры класса; имена колонок - имена атрибутов класса». Это ОЧЕНЬ ГРУБО. И многие поспорят и будут правы. И для понимания идеи учителя надо понимать базы данных или хотя бы excel и access (я как раз тогда только что это дело изучил). Но это меня сдвинуло с мертвой точки.
2. Я долго строил всякие «парсеры» из лапши и перегруженных дурно пахнущих функций. Мне попалась на Хабре переводная
статья (точнее, не официальная документация) про selenium и раскладку его в стиле ООП. Это не прям образец для подражания (там есть пара деталей, которые мне очень не понравились), но когда я свой код рефакторил в соответствии с рекомендациями этой статьи (это было долго, больно, но в итоге получилось гораздо красивее исходной чудовищной лапши), я многое понял.