Solit 2014, ООП, Соловей Василий

431 views

Published on

Василий Соловей, Солигорск. PHP-разработчик в в «Электронном Солигорске».

«Минусы ООП на примере языка PHP». Development секция. Для разработчиков (начальный и средний уровень).
1. Что есть ООП (легкое повторение уже знакомого)
2. Лучше доверять авторитету мнения, чем мнению авторитета (во всем нужно разбираться основательно, а в ООП тем более)
3. Неизменная скупость в похвалах — верный признак посредственного ума (плюсы ООП)
4. Не все то солнышко, что блестит (основная часть доклада – минусы ООП)
5. Кто владеет информацией, тот владеет ситуацией (пояснение сути доклада:
доклад не принижает и не умоляет достоинств ООП он создан расширить кругозор)
«Начинать никогда не поздно!». Мотивационное выступление. На личном примере, я могу рассказать, что начинать никогда не поздно, и если есть желание – нет повода себе отказывать.
1. Путь в тысячу миль начинается с одного шага (с чего начать)
2. И на верном пути повстречаются распутья (как не сбиться с дороги начав)
3. Кто ты программист? (мой взгляд на программирование)
4. Успех – дитя настойчивости

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
431
On SlideShare
0
From Embeds
0
Number of Embeds
33
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Solit 2014, ООП, Соловей Василий

  1. 1. ООП  Что же такое ООП?   ООП — это методология программирования, в основеве которой лежит принцип  описания сущносте проектируемой системы и методов взаимодействия между ними.  При описании сущности испольется такие понятия как класс и объект.    Основные понятия  Класс   Под понятие «Класс» принято понимать нейкий шаблон с описанием  свойств(переменнных) и методов(функций), которыми может обладать нейкая  сущность в системе.     Объект    Сущность в адресном пространстве вычислительной системы, появляющаяся при  создании экземпляра класса или копирования прототипа (например, после запуска  результатов компиляции и связывания исходного кода на выполнение).   Абстракция    Абстрагирование — это способ выделить набор значимых характеристик объекта,  исключая из рассмотрения незначимые. Соответственно, абстракция — это  набор всех таких характеристик.  Инкапсуляция    Инкапсуляция — это свойство системы, позволяющее объединить данные и  методы, работающие с ними в классе, и скрыть детали реализации от  пользователя.  Наследование    Наследование — это свойство системы, позволяющее описать новый класс на  основе уже существующего с частично или полностью заимствующейся  функциональностью. Класс, от которого производится наследование, называется  базовым, родительским или суперклассом. Новый класс — потомком,  наследником или производным классом.   Полиморфизм   Полиморфизм — это свойство системы использовать объекты с одинаковым  интерфейсом без информации о типе и внутренней структуре объекта.    Реализация ООП в PHP    Описание классов в PHP начинаются служебным словом class:  class Имя_класса {  // описание членов класса ­ данных и методов для их обработки  }  Для объявления объекта необходимо использовать оператор new:  Объект = new Имя_класса;  Данные описываются с помощью служебного слова var. Метод описывается так же, как  и обыкновенная функция. Методу также можно передавать параметры.   Пример класса на PHP: 
  2. 2. <?php  // Создаем новый класс Coor:  class Coor {  // данные (свойства):  public $name;  protected $addr;    // методы:   function Name() {   echo "<h3>John</h3>";   }    }    // Создаем объект класса Coor:  $object = new Coor;  ?>  Доступ к классам и объектам в PHP  Мы рассмотрели, каким образом описываются классы и создаются объекты. Теперь  нам необходимо получить доступ к членам класса, для этого в PHP предназначен  оператор ­>. Приведем пример:  <?php  // Создаем новый класс Coor:  class Coor {  // данные (свойства):  public $name;    // методы:   function Getname() {   echo "<h3>John</h3>";   }    }    // Создаем объект класса Coor:  $object = new Coor;  // Получаем доступ к членам класса:  $object­>name = "Alex";  echo $object­>name;  // Выводит 'Alex'  // А теперь получим доступ к методу класса (фактически, к функции внутри клас са):  $object­>Getname();  // Выводит 'John' заглавными буквами  ?>  Чтобы получить доступ к членам класса внутри класса, необходимо использовать  указатель $this, который всегда относится к текущему объекту. Модифицированный  метод Getname():  function Getname() { 
  3. 3. echo $this­>name;  }  Таким же образом, можно написать метод Setname():  function Setname($name) {  $this­>name = $name;  }  Теперь для изменения имени можно использовать метод Setname():  $object­>Setname("Peter");   $object­>Getname();  А вот и полный листинг кода:  <?php  // Создаем новый класс Coor:  class Coor {  // данные (свойства):  public $name;    // методы:   function Getname() {   echo $this­>name;   }     function Setname($name) {   $this­>name = $name;   }    }    // Создаем объект класса Coor:  $object = new Coor;  // Теперь для изменения имени используем метод Setname():  $object­>Setname("Nick");  // А для доступа, как и прежде, Getname():  $object­>Getname();  // Сценарий выводит 'Nick'  ?>  Указатель $this можно также использовать для доступа к методам, а не только для  доступа к данным:  function Setname($name) {  $this­>name = $name;  $this­>Getname();  }     Наследование и полиморфизм классов в PHP  Наследование классов в PHP  Наследование ­ это не просто создание точной копии  существующего класса, чтобы  потомок мог выполнять такойже функционал, плюс какие­нибудь новые, характерные 
  4. 4. только ему функции. Рассмотрим конкретный пример на PHP:  <?php  class Parent {  function parent_funct() { echo "<h1>Это родительская функция</h1>"; }  function test () { echo "<h1>Это родительский класс</h1>"; }  }    class Child extends Parent {  function child_funct() { echo "<h2>Это дочерняя функция</h2>"; }  function test () { echo "<h2>Это дочерний класс</h2>"; }  }    $object = new Parent;  $object = new Child;    $object­>parent_funct(); // Выводит 'Это родительская функция'  $object­>child_funct(); // Выводит 'Это дочерняя функция'  $object­>test(); // Выводит 'Это дочерний класс'  ?>  Ключевое слово extends (см. пример) говорит о том, что дочерний класс Child  наследует все методы и свойства класса Parent. Родительский класс обычно называют  базовым классом или суперклассом, а дочерний класс Child ­ производным или  подклассом.  Полиморфизм классов в PHP  Полиморфизм ­ это свойство базового класса использовать функции производных  классов. Практический пример, показывающий свойство класса ­ полиморфизм:  <?php  class Base {   function funct() {   echo "<h2>Функция базового класса</h2>";   }   function base_funct() {   $this­>funct();   }  }    class Derivative extends Base {   function funct() {   echo "<h3>Функция производного класса</h3>";   }  }    $b = new Base();  $d = new Derivative();    $b­>base_funct();  $d­>funct();  $d­>base_funct();  // Скрипт выводит: 
  5. 5.   // Функция базового класса  // Функция производного класса  // Функция производного класса  ?>  В рассмотренном примере функция base_funct() класса Base была перезаписана  одноименной функцией класса Derivative. Функция, переопределенная таким образом,  называется виртуальной.  Все минусы и плюсы более подробно будут описаны в перзентации  Плюсы ООП   считаю, что основными и ярко вырвженными плюсами являются:  1. Класс универсален для создаваемых  объектов и их может быть большое  количество.  2. Инкапсуция  3. Наследование      Минусы:  1. Сложность пониманиия.  2. Избытачность кода — приложение на ООП как правило больше  3. Нреобретение ненужного функционала классами наследниками при расширении  родительского класса.  4. Если допустить ошибку на этапе разработке архитектуры приложения потом сложно  «вклинится» и что то поменять. Если уже возведен n­й этаж сложно сделать подвал с  автомобильной парковкой)  5. Проектирование класса требует большого опыта. Это итеративный процесс, где  приходится учиться на своих же ошибках.   + несколько вырезок из статьи: http://blogerator.ru/page/oop_why­objects­have­failed  В презентации каждый из пунктов будет раскрыт подробно  и с примерами 

×