Основные принципы объектно-ориентированного программирования (ООП)

В предыдущей статье мы рассмотрели основные преимущества ООП, в этой представлены основные принципы объектно-ориентированного программирования и рассматривается, как они взаимодействуют.

Для начала необходимо определить, основу ООП, что такое классы и объекты.

Классы — «чертежи» для объекта и фактический код, который определяет свойства и методы.

class Person { }

Объекты — использование экземпляров класса, которые содержат все внутренние данные и информацию о состоянии необходимого для работы вашего приложения.

$objPerson = new Person();

Итак, основные принципы ООП:

1. Наследование — способность определять класс одного вида как подтип другого типа класса (почти так же, как квадрат является своего рода прямоугольником).

2. Полиморфизм — позволяет определить класс как сущность более чем одной категории класса (так же, как автомобиль — «вещь с двигателем» и «вещь с колесами»).

Многие утверждают, что в php отсутствует классическое понятие полиморфизма, возможно это и так, но для реализации данного принципа используются интерфейсы — способ указать, что сущность способна делать, что-то без определения, как это должно быть сделано, например, собака и человек — это «вещи, которые ходят», но они делают это очень по-разному :).

interface iAlive    
{
      public function iCanWalk();
}
class Person implements iAlive     
{
      public function iCanWalk();
      public function iCanSay();
}
class Dog implements iAlive     
{
      public function iCanWalk();
      public function iCanBark();
}
$objPerson = new Person();
$objDog = new Dog();  

3. Инкапсуляция — способность объекта защищать доступ к его внутренним данным.
На ранних стадиях работы многие программисты не задумываются над темой сокрытия данных посредством присвоения области видимости методам и свойствам private и protected, в основном пишут public, но со временем, понимают необходимость такого механизма, но это приходит с практикой.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *