Page 56 - 4636
P. 56

транспортних засобів класи автомобіля і велосипеда. Поняття підкласу, похідного класу та дочірнього
        класу є синонімами. Точно так само є синонімами поняття суперкласу і батьківського класу.
           Завдяки спадкуванню ви можете створювати надбудови та доповнення до існуючих класів. У міру
        необхідності  з  простого  базового  класу  ви  можете отримати  більш  складні  і  спеціалізовані  похідні
        класи. Ця можливість робить код більш придатним для багаторазового використання, що є одним з
        найбільш  важливих  переваг  об'єктно-орієнтованого  підходу.  Використання  успадкування  дозволяє
        зменшити обсяг виконуваної роботи, якщо операції можна реалізовувати лише один раз в суперкласі
        замість багаторазового їх створення в окремих підкласах. Спадкування також дозволяє більш точно
        моделювати відносини, що існують в реальному світі. Якщо до двох класів можна застосувати вислів
        “є”, то цілком імовірно, що в цьому випадку спадкування можливо. Вираз “автомобіль є транспортним
        засобом”  має  сенс,  однак  у  виразі  “транспортний  засіб  є  автомобілем”  сенсу  мало, оскільки  не  всі
        транспортні  засоби  являють  собою  автомобілі.  Отже,  автомобіль  може  бути  успадкований  від
        транспортного засобу.
           Створення класів, атрибутів і операцій у РНР
           Досі ми розглядали класи на досить таки високому рівні абстракції. Для створення класу  в РНР
        призначене ключове слово class.
           Структура класу
           Мінімальний  варіант  визначення  класу  має  такий  вигляд:class  classname()  Щоб  від  класів
        була хоч яка-небудь користь, вони повинні мати атрибути та операції. Атрибути створюють шляхом
        оголошення  змінних  усередині  визначення  класу  за  допомогою  ключових  слів:  public,  private  або
        protected. Вони будуть розглянуті нижче в даній лекції. Наступний код створює клас classname з двома
        загальнодоступними атрибутами $attributel і $attribute2:
           class classname {
           var $attributel;
           var $attribute2;}
           Операції створюються завдяки оголошенню функцій  усередині визначення класу. Наступний код
        створює  клас  classname  з  двома операціями,  які  не  виконують  ніяких  дій.  Операція  operation1()  не
        приймає ніяких параметрів, а операція operation2 () приймає два параметри:
           class classname {
           function operation1() { }
           function operation2($paraml, $param2) { }}

           Конструктори
           У  більшості  класів  є  спеціальний  тип  операції,  що  отримав  назву  конструктора.  Конструктор
        (constructor) викликається в тих випадках, коли потрібно створити об'єкт; зазвичай він виконує такі
        корисні  завдання  з  ініціалізації,  як  встановлення  розумних  початкових  значень  атрибутів  або
        створення інших об'єктів, необхідних для даного об'єкта. Конструктор оголошується так само, як інші
        операції, має  спеціальне  ім'я construct (). Хоча конструктор можна викликати вручну, основне його
        значення полягає в тому, що він автоматично викликається в момент створення об'єкта. Наступний код
        оголошує клас з конструктором:
           classclassname {
           function __construct($param) {
           echo "Конструктор викликаний з параметром ".$param."<br />";
           }
           }
           PHP підтримує перевантаження функцій, тобто можна визначати більше однієї функції з одним і
        тим самим ім'ям і різною кількістю або типами параметрів. (Ця властивість характерна для багатьох
        об'єктно-орієнтованих мов.).
           Деструктори
           Деструктор  (destructor)  являє  собою  протилежність  конструктору.  Вони  дозволяють  виконувати
        певні  дії  безпосередньо  перед  знищенням  об'єкта.  Деструктор  викликається  автоматично,  коли  всі
        посилання  на  клас  видаляються  або  виходять  за  межі  області  видимості.  Подібно  до  імен
                                                            53
   51   52   53   54   55   56   57   58   59   60   61