Итак, что такое Объектно ориентированное программирование. Вам скорее всего известно, что часто повторяющиеся участки кода, которые приходится выполнять могократно с различными параметрами, очень удобно оформить в виде функции. А теперь представьте себе, что вы, скажем, моделируете движение автомобилей по дороге. Каждый автомобиль движется, обладает своими характеристиками, изменяющимися в каждый момент времени. Без применения ООП, вы бы создали отдельные массивы свойств, применяли бы к ним свои функции. Терпимо. И вдруг на горизонте появляется грузовик. У него, в отличие от других, есть кузов. А вон старенький Запорожец. У него нет магнитолы. Таким образом, мы уже не можем сказать, что первый элемент каждого массива относится к первой машине, второй - ко второй и так далее. Где-то что-то своё. Да, еще и память же надо подо всё это выделить, хотя, в PHP нет этой проблемы. Мы можем придумать различные ухищрения, организовать еще кучу массивов и добиться результата, но получатеся сложно и изменения отслеживать и вносить в такой код будет неприятно и сложно. Нам гораздо удебнее сделать все эти автомобили объектами. Объет - это переменная особого типа. Этот тип называтся класом. Класс включает в себя войства (цвет, вес) и методы (передвинуться, побибикать). Свойства - это переменные; методы - функции.
Собрав свойства и методы объекта в одну структуру данных, нам не только будет удобно обслуживать такой код, мы сможем использовать наш класс и в других проектах. Но и это еще не всё. Как пишут в учебниках, ООП основано на трёх слонах: инкапсуляция, наследование и полиморфизм.
Прежде, чем дать определения, пора уже начинать четко представлять, о чем пойдет речь, поэтому пример.
PHP:
скопировать код в буфер обмена
<?PHP
class my_first {
public $prop;
function set_prop($value) {$this->prop = $value;}
}
$obj = new my_first;
$obj->set_prop('123');
echo $obj->prop;
?>
Здесь мы описали класс my_first. В нем свойтсво "prop" и метод set_prop, который задает значение свойству. Чтобы создать объект, в PHP используется оператор new. Из кода видно и как работает метод, и как обратиться к свойтсву. Внутри класса используется переменная $this. Через нее мы обращаемся к свойствам и методам конкретного объекта.
Интересное cлово public. Кроме него есть еще private и protected. Эти слова мы можем использовать перед описанием свойтва или метода, и означают они следующее:
- свойство (или метод) доступен только классу и его наследникам (об этом чуть позже).
Если ни одно из этих слов не указано, то по умолчанию уровень доступа будет public.