Основа современной разработки - понимание что такое объект. Пока что для кого-то это такой же неопознанный, как на картинке. Но, если нет понимания, то можно не садиться за комп и не стоит открывать редактор. Так что сейчас будем на примерах смотреть....
Разберемся что такое объект.
Давайте поговорим о машине. Обычной такой машине на колёсах, с двигателем и дворниками. Итак, какие характеристики мы можем дать машине? У неё есть:
- цвет
- размеры по длине, ширине и высоте
- размер колёс и рисунок протектора
- работать может на бензине, дизеле или вообще электричестве
А вот еще:
- быть заведенной
- ездить
- очищать окно с помощью дворников
- салон может прогреваться
Чем отличается первый список от второго?
Первый список - характеристики, которые условно не меняются: мы конечно можем заехать на шиномонтаж и поменять резину. Но! Поменяли колёса и всё: машина та же - протектор на шинах изменился.
Второй список - действия, которые машина может "совершать". То есть в момент, когда мы поворачиваем ключ зажигания, двигатель заводится. Когда включаем дворники, лобовое стекло начинает очищаться. Ливень? Тоже включение дворников, но в другом режиме. Стало холодно или жарко? Есть печка и кондиционер.
Так вот, машина - это объект. У объекта есть свойства - первый список, и методы - второй список.
Объект не обязательно имеет свойства.
Объект не обязательно имеет методы.
Иметь или не иметь - дело добровольное, так сказать.
Свойства объекта это характеристики машины. Да, мы можем их сменить. К примеру номер двигателя, который тоже свойство нашего объекта. Но после смены харктеристики сама по себе машина останется прежней, просто параметры её изменятся.
Методы мы можем вызывать: завести машину, включить обогрев стёкол, дворники или дальний свет. То есть мы должны совершить какое-то действие, после которого что-то будет происходить. Как долго? Зависит от метода: процесс завершится самостоятельно по факту какого-то события, либо пока мы не совершим действие, прекращающее процесс.
В разбираемом примере действие, которое завершится само - к примеру прикуриватель. Мы вызвали у объекта машина метод "прикуриватель", нажав на него. Запускается процесс нагрева спирали. Действие завершится, когда сработает термодатчик и прикуриватель отщелкнется.
В том же примере, вызываем метод "дворники". Процесс работы будет продолжаться пока мы не отключим их.
На этих принципах формирования объекта строится практически вся идеология ООП (Объектно Ориентированного Программирования).
Теперь немного о том, откуда же берется объект.
Объект в программировании является экземпляром класса. Как ксерокс: есть оригинал и есть его копии. Оригинал в сканере - класс. Копии в лотке для бумаги - объекты.
Не понятно пока? Сейчас поясню.
Наша машина из примера выше появилась не из воздуха. Её вполне конкретно сделали на заводе по чертежам инженеров. Построили сборочные цеха, наладили конвейерное производство и вот стоят ряды одинаковых машин на стоянке, готовые к отгрузке. А насколько они одинаковые?
Да, конструкция и форма у них идентичны. Отличия в характеристиках: цвет может быть иным. У каких-то машин более полная комплектаци и тому подобное. А что такое комплектация в нашем примере? Это набор свойств.
Так вот, чертежи инженера - это класс. И все машины - объекты - экземпляры этого класса. В классе (инженерной документации) были указаны абсолютно все возможные характеристики объекта (машины). Но какие-то были назначены: цвет, колёса, внутренняя обивка. А какие-то оказались не заполненными: для машин в базовой комплектации не добавили к примеру встренный навигатор в приборную панель. У машины есть эта характеристика, но она пустая. У других же объектов она может быть заполнена.
Объект может содержать другие объекты.
Проектируя объекты, мы не ограничены в заполнении их свойств.
На нашем же примере. Когда автомобильный завод выпускает машину, он реализует её по заранее заданным чертежам. Но завод ведь не производит всё сам от кожезаменителя и автомобильной краски до шин и обивки руля.
Есть к примеру электрика: возьмем обычную лампу дальнего света. По сути, это тоже объект со своими свойствами и методами: имеет определенный размер цоколя, определенную конструкцию спирали накаливания, определенную толщину стекла и т.д. При этом имеет метод "светиться". То есть существует некий вызывающий метод включения процесс.
Если рассматривать процесс включения лампы дальнего света, то можно построить такую логическую цепочку:
- водитель вызывает метод включить свет в режиме "дальний"
- машина знает, что есть метод "включить фары" - следует его вызов
- в вызванном методе присутствует информация, что есть у нас свойство лампа, содержащее объект - обращается к нему и вызывает у него метод светиться
Попробуйте взглянуть на мир вокруг с этой точки зрения. Довольно интересная картина, к слову сказать.
Чем естественней для человека становится думать в подобных критериях, тем лучшим программистом он становится.
При изучении JavaScript и PHP мы отдельно остановимся на объектах в этих языках программирования.
Все статьи попадают в "Оглавление канала". Не пропускаем новости!