
Что такое обьектно ориентированное программирование? Как понять концепцию?

Сначала создается класс Кнопка, в нем указываются, какие у кнопки могут быть параметры (имя, размер, место) и какие методы она использует. Методов у кнопки немного, "слушатель" и обработчик. "Слушатель" постоянно следит за положением мыши, то есть сравнивает координаты курсора с координатами кнопки, отслеживает наведение и нажатие. Обычно он уже встроен в язык, его не надо прописывать отдельно. Если слушатель поймал нажатие, он передает команду обработчику событый. А в обработчике вы описываете код, который должен выполняться, например взять текст из окошечка над кнопкой и послать его по такому-то адресу.
В рамках ООП из одного класса кнопки можно сделать много объектов-кнопок и для них можно прописать либо одно общее действие либо разные для каждой кнопки. Например, можно указать, что если слушатель поймал наведение курсора, то обработчик дает команду кнопке стать активной, выпуклой. И это не надо описывать в каждой кнопке, достаточно задать этот метод для всего класса. С другой стороны при нажатии нам чаще всего нужно задать функционал каждой кнопке отдельно. Тогда для каждой отдельной кнопки в обработчике событий записываем код или инструкцию, которая должна выполняться.