Объекты надо отличать между собой и у них есть что-то, что их определяет. Например, для человека это может быть имя, когда мы говорим про нашего знакомого Васю, и все понимают о ком речь. Подмножество людей, обладающих одинаковым набором свойств (имя, фамилия, возраст и т.д.) и общим поведением, будет называться класс.
Класс Car создается путем наследования от класса Vehicle с использованием ключевого слова extends и реализации интерфейса Device с использованием ключевого слова implements. В конструкторе класса мы вызываем конструктор родителя при помощи super(). Поскольку родительский класс только один, мы обращаемся к конструктору класса Vehicle. Для реализации интерфейса переопределяем getVoltage() с помощью аннотации Override. В строках 9 и 10 для контролируемого доступа мы создаем функцию voltage() и возвращаем значение приватной переменной.
Причины Появления Объектно-ориентированного Программирования
Программа курса составлена так, что изучение объектно-ориентированного программирования начинающим дается легко, приводится множество примеров. Таким образом, был взят общий класс Item со всеми его атрибутами и методами и сформирован подкласс, который перенял атрибут name. Если мы вызовем этот подкласс, то потребуется указать лишь стоимость. С его помощью мы узнаем наименование и цену для конкретного товара.
ООП позволяет упростить сложные объекты, составляя их из более маленьких и простых, поэтому над программой могут работать сотни разработчиков, каждый из которых занят своим блоком. Большинство современных языков программирования — объектно-ориентированные, и, однажды поняв суть, вы сможете освоить сразу несколько языков. Наследование — механизм языка, позволяющий описать новый класс на основе уже существующего (родительского, базового) класса. Класс-потомок может добавить собственные методы и свойства, а также пользоваться родительскими методами и свойствами.
Описание Полей Класса
Предшественником ООП является процедурное программирование. В рамках этого подхода программа рассматривается как набор процедур и функций, которые называются подпрограммами. Эти подпрограммы выполняют тот или иной блок кода с нужными входящими данными. Данный способ позволяет писать легкие программы с простой структурой.
Поскольку мы вызываем SayHi() без создания объекта, ссылки this не существует. Однако, это всё равно не функция в том смысле, в котором является say_hi() в Python. Поскольку в классе Car есть атрибут под названием colour и в области видимости нет больше переменных с таким именем, ссылка на это имя срабатывает. Мы использовали ключевое слово this в первом примере для того, чтобы различать атрибут и параметр с одинаковым именем shade. В данном примере мы расширяем понятие класса Car, включая электромобили.
Преимущества Ооп
Благодаря полиморфизму можно быстро адаптировать код под требования задачи, не описывая новые объекты и функции. В отличие от процедурного, объектно-ориентированное программирование позволяет вносить изменения один раз — в объект. Все операции представляются как взаимодействие между объектами. При этом код более читаемый и понятный, программа проще масштабируется.
а метод setAge – сеттером (setter), так как он устанавливает значение. Тем не менее даже к инкапсулированному состоянию может потребоваться доступ. Например, мы хотим устанавливать для свойства age новые значения, если они представляют корректный возраст. Используя технологию наследования, говорят, что классы «Человек», «Робот» и «Волшебник» — наследники класса «Юнит». Абстрактный (в данном случае) класс «Юнит» хранит информацию об имени, здоровье и броне, и к нему может быть применена операции «Атаковать» и «Защищаться». В Java имеются аналогичные возможности, однако контроль доступа и типобезопасность, заложенные в языке, усложняют дело.
Достаточно унаследовать эти объекты от одного «родителя», и «родительские» свойства применятся автоматически.
В итоге программы стали представлять собой древа с кучей ветвлений и вариантов работы.
Во-вторых, он помогает снизить вероятность случайного повреждения информации внутри класса или объекта.
Овладев навыками структурного программирования, разработчик может прочитать книгу Мэтта Вайсфельда, чтобы узнать об общих принципах ООП.
Более общее понятие в таком случае становится «родителем», а более специфичное и подробное — «наследником».
В противном случае применять парадигму ООП будет довольно сложно. Допустим, что перед программистом стоит задача создать таблицу работников компании с информацией о них. В первую очередь ему нужно будет сформировать класс ООП на PHP. Для этого необходимо создать файл в отдельной папке на сервере и дать ему название (к примеру, index). В этом же месте потребуется создать еще одну папку для класса – lessons. Там будет размещен первый файл для PHP ООП класса (Employee).
Разработчику не нужно много раз создавать один и тот же объект, приписывая одинаковые атрибуты и методы. Основы объектно-ориентированного программирования представляют собой перечень принципов, которые формируют данный подход. Иными словами, это правила разработки и применения всех структурных элементов (в т.ч. классов, объектов, методов и т.д.). Класс — это шаблон, в котором описаны все свойства будущего объекта и его методы. При этом если класс воздушного шарика определяет свойство цвет, то сам класс никакого значения цвета не имеет.
Потомок при создании получает все свойства и методы родителя. Класс Car происходит от этих двух классов, и атрибуты colour, mannequin и _voltage теперь являются частью нового класса. Вышеприведенные Основа ООП декораторы дают нам возможность контролировать доступ к атрибутам без использования различных методов. Можно даже сделать атрибут свойством только для чтения (read-only), убрав декорированные функции @.setter и @.deleter.