Объектно
Объектно-ориентированное программирование для блондинки.
На примере php. Подразумевается, что самые азы программирования блондинка
знает.
Действующие лица:
- Преподаватель (П.)
- Блондинка (Б.)
Диалог
П.: Сейчас я тебе объясню принцип объектно-ориентированного
программирования
Б.: Ну даю… ой… хи-хи, то есть дааавате, объясняйте.
П.: Ну так вот. Представь себе, что ты пошла в какой-нибудь
магазин…
Б.: Ещё б скааазали “гастраааном”. (скривила лицо) Я в
бутики толька хааажу.
П.: Ну хорошо, зашла ты в бутик. И увидела там шубу.
Б.: норкаваю!
П.: Да, норковую! И захотела купить. Шуба - это объект, который
ты хочешь купить. А вообще Шубы - это класс объектов. В этом классе могут быть
различного вида шубы от искуственного меха до соболя. В коде это можно написать:
class Shubi {
public $tip;
}
, где public означает, что кто угодно может узнать какой тип шубы ты купила.
Б.: Кто угодна? И даже Танька Синявская?
П.: Ну если Танька Синявская приедет и увидит твою шубу, то да.
Значит ты хочешь купить объект, т.е. шубу, которая принадлежит классу “Шубы”.
Чтобы это было так, нужно написать:
var $shuba1 = new Shubi();
- var - это типа “ХАЧУ”;
- new - это типа “купить новую”
Б.: А пачиму shuba1?
П.: Ну а ты разве одну шубу только купишь?
Б.: А, ну дааа… (делает вид, что понимает) А, что, я
так вот сразу куплю шубу без примерки?
П.: Конечно нет. Всё верно. У шубы есть свойства, например,
размер. Добавим в класс Shubi это свойство, а
потом укажем, какой размер у этой шубы. В итоге код у нас получается такой:
class Shubi{
public $tip;
public $razmer;
}
$shuba1 = new Shubi;
$shuba1->tip = "norka";
$shuba1->razmer = 53;
Б.: Я что толстая тааакая? У меня Соракдивяяятый рааазмер!
П.: Ну хорошо, хорошо. Размер 49. Дальше: Купив шубу, задали её
размер. А размер - это свойство объекта. И для расчётов можем его получить
написав:
$razmer_shubi = $shuba1->razmer;
т.е. если мы хотим узнать, чему равно какое-нибудь свойство, то нам нужно
написать имя объекта, добавить такую стрелочку “->” и написать свойство объекта.
Б.: Ну паняла, не дура я. (надулась)
П.: Замечательно! Ну, а после того как ты купила шубу, что ты
сделаешь?
Б.: Нааадену и паеду пааадружкам хвастать.
П.: Ага, значит оденешь. Значит совершишь действие. Значит это
мы напишем так:
$shuba1->odetj();
Что означает, что ты одела шубу. Это называется метод и
записывается этот метод в классе в виде функции:
class Shubi{
public $tip;
public $razmer;
function odetj(){
return true;
}
}
Б.: А зааачем odetj со скобочкамиии?
П.: А в скобочки записываются параметры действия. Вдруг ты
захочешь одеть её задом на перёд.
Б.: Я что, дура что лиии?
П.: Да.
Б.: Чтооо? (в глазах ярость, рука воинственно поднялась,
сверкнув ногтями)
П.: Ой, в смысле, да нет, конечно. Например, ты не захочешь
застёгивать её совсем, а оставить пару пуговичек растёгнутыми.
Б.: Ааа, ну ладно. Ааа, как это записать?
П.: ну, например, так:
$shuba->odetj(2);
Б.: Что значит “напримееер”? Может быть подругомууу?
П.: Может. Это зависит от того как описать класс Shubi.
Б.: Бааалин, ещё это в Shubi записывать!
П.: Ну да, смотри:
class Shubi{
public $tip;
public $razmer;
function odetj($pugovici){
return $pugovici;
}
}
у всех шуб, есть каие-то определённые свойства: размер, цвет…
Б.: Цвет может быть разный.
П.: Конечно, но совсем никакого цвета не бывает. Хоть какой-то
цвет будет. Значит свойство “цвет” будет у каждой шубы. Вот как узнать какой
цвет у твоей шубы.
Б.: Пасмааатреть на неё.
П.: нет, я и мею в виду в коде.
Б.: Ааааа… ну, наверна, так:
$cvet_shubi = $shuba1->cvet;
П.: Умничка! (Блондинка сияет) Только
предварительно нужно добавить это свойство в класс Shubi. Как?
Б.: Наверна, так:
class Shubi{
public $tip;
public $razmer;
public $cvet;
function odetj($pugovici){
$rasstegnutie_pugovici = $pugovici;
return $rasstegnutie_pugovici;
}
}
П.: Только прежде, чем получить цвет у шубы, нужно задать
этот цвет. Это можно сделать либо в классе Shubi, тогда все
создаваемые шубы будут одного цвета, хотя не проблема их перекрасить. Либо, ты
можешь получить шубу без определённого цвета и сама назначить её любой цвет.
Б.: Ага, вот чтоб тааак в жизни было. Одела шубу и скааазала
“хачу белую, нет, хачу чёрную”…
П.: Дааа… программировать и создавать, практически синонимы.
Ну и ещё объекты имеют методы, т. е. действия которые можно совершить с шубой.
Теперь сними шубу.
Б.: Ага. Выключите свет.
П.: Что?
Б.: Ой, хи-хи… в смысле написааать?
П.: Ну конечно!
Б.: Снимаю (пошлый смешок):
class Shubi{
public $tip;
public $razmer;
public $cvet;
function odetj($pugovici){
$rasstegnutie_pugovici = $pugovici;
return $rasstegnutie_pugovici;
}
function snjatj(){
return true;
}
}
$shuba1->snjatj();
П.: Великолепно! Ну хватит с тебя на сегодня.
Б.: Пабииигу, по бутикам пока не закрыыылись!
Источник:
http://www.seleckis.lv
|