Полностью ли php поддерживает принципы ооп

17) Объектно-ориентированное программирование

Объектно-ориентированный — это подход к разработке программного обеспечения, который моделирует приложение вокруг объектов реального мира, таких как сотрудники, автомобили, банковские счета и т. Д. Класс определяет свойства и методы объекта реального мира. Объект — это вхождение класса.

Три основных компонента ориентации объекта:

  • Объектно-ориентированный анализ — функциональность системы
  • Объектно-ориентированное проектирование — архитектура системы
  • Объектно-ориентированное программирование — реализация приложения

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

Три основных принципа ООП являются;

  • Инкапсуляция — это связано с сокрытием деталей реализации и раскрытием только методов. Основное назначение инкапсуляции состоит в том, чтобы:
    • Уменьшите сложность разработки программного обеспечения — за счет сокрытия деталей реализации и только разоблачения операций использование класса становится простым.
    • Защита внутреннего состояния объекта — доступ к переменным класса осуществляется с помощью таких методов, как get и set, что делает класс гибким и простым в обслуживании.
    • Внутренняя реализация класса может быть изменена, не беспокоясь о нарушении кода, который использует класс.
    • Возможность повторного использования — количество детей может наследоваться от одного и того же родителя. Это очень полезно, когда мы должны предоставить общие функции, такие как добавление, обновление и удаление данных из базы данных.
    • Упростите поддержку приложений и сделайте их более расширяемыми.

    Концепции ООП в PHP

    PHP является объектно-ориентированным скриптовым языком; он поддерживает все вышеперечисленные принципы. Вышеуказанные принципы достигаются с помощью;

    • Инкапсуляция — с использованием методов «get», «set» и т. Д.
    • Наследование — с помощью ключевого слова extends
    • Полиморфизм — с помощью ключевого слова Implements

    Теперь, когда у нас есть базовые знания о ООП и о том, как он поддерживается в PHP, давайте рассмотрим примеры, которые реализуют вышеуказанные принципы

    Что такое UML?

    Унифицированный язык моделирования UML — это методика, используемая для проектирования и документирования объектно-ориентированных систем.

    UML создает множество документов, но мы рассмотрим диаграмму классов, которая очень важна для объектно-ориентированного программирования php.

    Пример диаграммы классов

    PHP объектно-ориентированное программирование (ООП)

    Ключ диаграммы классов

    • Окно Верхнего содержит имя класса
    • Среднее поле содержит переменные класса
    • Ниже окно содержит методы класса
    • Знак минус (-) означает частную область видимости
    • Знак плюс (+) означает общедоступную область
    • Знак хеша (#) означает защищенную область

    Как создать класс в PHP

    Ключевое слово class используется для определения класса в PHP. Ниже приведены правила создания класса в PHP.

    • Имя класса должно начинаться с буквы
    • Имя класса не может быть зарезервированным словом PHP
    • Имя класса не может содержать пробелы

    Допустим, мы хотим создать класс для представления животных.

    Мы начнем с определения характеристик, которые являются общими для всех животных.

    • Все животные принадлежат к семье, такой как травоядное животное, карнавал и т. Д.
    • Все животные едят пищу

    Диаграмма ниже показывает диаграмму для животного

    PHP объектно-ориентированное программирование (ООП)

    Давайте теперь код нашего класса животных

    family = $family; $this->food = $food; > public function get_family() < return $this->family; > public function set_family($family) < $this->family = $family; > public function get_food() < return $this->food; > public function set_food($food) < $this->food = $food; > > ?>
    • «Private $ family, $ food» означает, что переменные не могут быть доступны непосредственно вне класса (Encapsulation).
    • Public function __construct ($ family…) — это метод конструктора php. Эта функция вызывается всякий раз, когда создается экземпляр класса. В этом случае мы устанавливаем семью и еду.
    • «Public function get… ()» — это метод, используемый для доступа к семейной или пищевой ценности (инкапсуляция)
    • «Public function set… ()» — это метод, используемый для установки значения семьи или питания (инкапсуляция)

    Как реализовать наследование в PHP

    Мы будем работать с коровой и львом. И корова, и лев унаследованы от класса животных.

    Диаграмма классов ниже показывает отношения.

    PHP объектно-ориентированное программирование (ООП)

    Обратите внимание, что корова наследует от класса животных и определяет свою собственную переменную и методы тоже.

    Давайте теперь кодировать класс Корова

     public function set_owner($owner) < $this->owner = $owner; > public function get_owner() < return $this->owner; > > ?>

    Давайте теперь кодировать класс Lion

    • «Class… extends Animal» заставляет корову и льва использовать методы из класса Animal (Наследование).

    Как создать объект класса

    Для простоты все классы Animal, Cow и Lion должны находиться в одном каталоге.

    Давайте теперь создадим приложение, которое использует наши классы.

    Cow Object 
    '; echo 'The Cow belongs to the ' . $cow->get_family() . ' family and eats ' . $cow->get_food() . '

    '; echo 'Lion Object
    '; echo 'The Lion belongs to the ' . $lion->get_family() . ' family and eats ' . $lion->get_food(); ?>

    Тестирование нашего приложения

    Давайте теперь посмотрим наше приложение в веб-браузере

    Фантастическое право! Давайте теперь посмотрим на третий принцип ООП, полиморфизм.

    Допустим, мы хотим разработать приложение, которое подключается к различным механизмам баз данных, таким как MySQL и SQL Server, но использует один и тот же унифицированный интерфейс.

    Мы можем создать интерфейс, который определяет стандартные методы, и абстрактный класс, который реализует общие методы.

    • Интерфейс — это похоже на класс. Он определяет только методы и параметры.
    • Абстрактный класс — это класс, который нельзя использовать для непосредственного создания объекта. Его целью является предоставление частичной или полной реализации общих методов.

    Диаграмма классов ниже иллюстрирует отношения между нашим абстрактным классом, интерфейсом и классами реализации.

    PHP объектно-ориентированное программирование (ООП)

    Давайте теперь создадим наш абстрактный класс

    host = $host; $this->db = $db; $this->uid = $uid; $this->password = $password; > > ?>
    • «Абстрактный класс» означает, что класс нельзя использовать напрямую для создания объекта php
    • $ Host, $ db… — это переменные класса, общие для всех реализаций
    • «Function __construct (…)» — это метод конструктора класса php, который устанавливает значения общих переменных при инициализации

    Давайте теперь создадим интерфейс, который содержит стандартные методы, которые будут реализованы по-разному в зависимости от механизма базы данных.

    • «Интерфейс» — это ключевое слово для создания интерфейсов
    • «Публичная функция… (…)» — это стандартные методы, которые должны быть реализованы

    Давайте теперь создадим конкретные классы, которые будут расширять класс DBCommonMethods и расширять интерфейс DBInterface. MySQLDriver.php

     public function db_connect() < //connect code goes here >public function delete($where) < //delete code goes here >public function insert($data) < //insert code goes here >public function read($where) < //read code goes here >public function update($where) < //update code goes here >> ?>
     public function db_connect() < //connect code goes here >public function delete($where) < //delete code goes here >public function insert($data) < //insert code goes here >public function read($where) < //read code goes here >public function update($where) < //update code goes here >> ?>
    • «Класс… расширяет DBCommonMethods» использует методы из DBCommonMethods
    • «… Реализует DBInterface» гарантирует, что класс предоставляет стандартные методы независимо от используемого драйвера базы данных.

    Использование приведенного выше кода Код, использующий приведенный выше класс, будет выглядеть следующим образом

    Остальная часть кода будет одинаковой для обоих драйверов, таких как;

    Резюме

Оцените статью