Разбираюсь в основах ООП на php

Столкнулся с тем, что до сих пор не знаю основных понятий ООП.  Поэтому попробую разобраться.

Объектно-ориентированное программирование основано на следующих понятиях:

  • Инкапсуляции;
  • Полиморфизм;
  • Наследовании.

Инкапсуляция — возможность использования объектов не зная как они работают внутри. (Т.е. можно ездить на авто и не знать устройства двигателя). Данное скрытие достигается использование следующих ключевых слов:

  • public – методы и свойства доступны извне объекта
  • private – закрытые методы могут быть вызваны только в классе, где они были объявлены ( к ним нельзя обратиться из производных классов).
  • protected – защищённые методы могут вызываться только из того же класса или его производных классов.

Полиморфизм (многоформенность) — (возможность объектов с одинаковой спецификацией иметь различную реализацию) это способность обьекта использовать методы производного класса, который не существует на момент создания базового.

Данные возможности можно увидеть на следующем примере:

<?php
class A {
    // Выводит, функция какого класса была вызвана
    function Test() { echo "Test from A\n"; }
    // Тестовая функция — просто переадресует на Test()
    function Call() { Test(); }
}
class B extends A {
    // Функция Test() для класса B
    function Test() { echo "Test from B\n"; }
}
$a=new A();
$b=new B();
$a->Call(); // выводит "Test from A"
$b->Test(); // выводит "Test from B"
$b->Call(); // Внимание! Выводит "Test from B"!
?>

Подробнее тут: http://habrahabr.ru/blogs/php/37610/

Абстрактный класс (класс шаблон)  —  это класс который создается с  помощью ключевого слова abstract, в нем реализовано только частичная функциональность, остальное дополняется в производных классах.  (Нельзя создавать объекты данного класса.)

<?php
abstract class MyClass {
    protected $data;
    function __construct( $data ) {
        $this->data = $data;
        $this->testFunction( $condition_s );
    }
    /* делаем возможность получить protected-атрибут data */
    public function getData() {
        return $this->data;
    }
    abstract protected function testFunction( $condition_s );
    abstract function Do( $response_s );
}
?> 

 

Интерфейс – это абстрактный класс, который содержит только абстрактные методы и не имеет никаких свойств.   Создается с помощью ключевого слова interface.


<?php
interface Inter1 {
function fn1();
}class MyClass implements Inter1 {
public function fn1() {
echo 1;
}
}
?>

Подробнее тут: http://phpclub.ru/detail/article/oop_classes

 

Наследование — позволяет описать новый класс на основании старого класса. Определяется с помощью ключевого слова extends.

<?
class Student {
}
class GraduateStudent extends Student {
}
?>

Разбираюсь в основах ООП на php: 1 комментарий

  1. Петр

    Инкапсуляция — возможность использования объектов не зная как они работают внутри.
    Лучшее объяснение что я встречал ))

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

Ваш адрес email не будет опубликован.