Java: Введение в ООП
Теория: Объекты
Так в чем же состоит настоящая цель классов? Упрощенно, с помощью классов описываются категории объектов, например, "кошки" или "адреса" или даже "строки". На базе классов создаются объекты, из которых потом строится логика работы кода.
Возьмем для примера студента Хекслета. В коде он описан классом User, у которого есть свойства и методы. Свойства — это любая информация о пользователе: дата рождения, дата создания, имя, наличие доступов и т.п. Методы – действия которые может выполнять пользователь.
Такой стиль работы предполагает, что класс используется как "шаблон" для создания объектов этого класса (или как говорят "экземпляров класса"). Например, для класса User объектами будут конкретные пользователи:
В коде мы создаем объект "пользователь" с указанными именем и фамилией. Делается это с помощью ключевого слова new, после которого идет имя класса со скобками, как при вызове обычной функции. Этот объект записывается в переменную и становится доступен для работы. Дальше, в зависимости от того как был написан класс, мы можем выполнять разные действия с ним - менять свойства и вызывать методы. Это похоже на работу со строками, только в таких объектах как выше, хранится не одно значение, а какой-то набор разнородных данных. Причем они могут быть разных типов. Вот пример другого класса User, который мы могли бы написать:
При таком подходе, программа превращается в набор объектов, которые взаимодействуют друг с другом. Через эти объекты выражаются процессы, происходящие в проекте. Например, создание курса, добавление туда уроков, прохождение курса студентом и так далее. Все это в коде выглядит как объекты, жонглирующие объектами:
В программировании такой стиль программирования называется объектно-ориентированным (ООП). Чтобы научиться писать такой код, нужно время. В начале, для создания объектов, мы будем использовать или дописывать готовые классы. Затем, постепенно, вы начнете создавать свои, пока это не станет обыденным делом.
Связь с реальным миром
В интернете много вопросов от новичков, что такое ООП (объектно-ориентированное программирование) и как его понять. Один из самых популярных ответов — рассказ про моделирование реального мира через классы. Вот у нас есть машина, вот дом, вот мы для них пишем классы. Такое объяснение больше путает, чем помогает. Классы действительно используются для моделирования, но только не реального мира, а конкретной предметной области. Например, пользователь с точки зрения бухгалтера и системы заказа пиццы — это абсолютно разные сущности. У них разный набор свойств, разное поведение и разное предназначение. То есть важно понимать, что в коде мы всегда описываем какое-то специфичное представление, которое может идти в разрез с реальным миром. Более того, классами описывается вообще все, что не имеет никакой связи с реальным миром. Чему например соответствует HTTP-запрос? А многие классы носят исключительно утилитарный характер и нужны для обслуживания других частей системы.
А для понимания ООП действительно нужно время. Поэтому сначала полезно работать с уже существующими системами, и только потом уже приходить к проектированию своих.


