Как объяснить блондинке объектно-ориентированное программирование?

На примере 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();

П.: Великолепно! Ну хватит с тебя на сегодня.
Б.: Пабииигу, по бутикам пока не закрыыылись!

Дата: 18.09.2007
»
Категории: PHP | Развлекуха
Google     

]]> Sam ]]>

Отлично!

»

]]> Danaki ]]>

Из цикла Как “Петя Бейсиков Тоню Соображалкину программировать учил”

»

]]> Никита ]]>

Что-то вроде. Примерно так я объясняю на курсах, только вместо шубы – стол класса Столы, со свойствами: цвет, ширина, длина и т.д.; методами: поднять, развернуть, перетащить, перевернуть и т.д.; и внутренними объектами: ножка1, ножка 2… :)

»

]]> Игорь ]]>

А нам рассказывали про мясо и мясорубку. Если используются функции, то ты говоришь: “Мясорубка, моли!” и передаешь мясо, как параметр. В случае с ООП ты говоришь мясу: “Молись!” и оно молит себя само :)

»

]]> Никита ]]>

Молись, мясо! Пришёл твой конец! :)

»

]]> Aktuba Blog » Как объяснить блондинке объектно-ориентированное программирование? ]]>

[...] Источник: http://www.seleckis.lv [...]

»

]]> German ]]>

А продолжение будет? Очень понравилось!

А если без класса, на функциях писать, то нужно будет создавать шубу, и для каждой шубы создавать размер, цвет и пуговицы.

А с классами, один раз создаёшь и потом переопределяешь. Я правильно понимаю?!

»

]]> PHP ]]>

[...]

»

]]> Никита ]]>

Продолжение будет, но попозже

»

]]> Lexa ]]>

прекольно, и сам немного понял. Зафрендил ;)

»

]]> Особь ]]>

Показал немцам (http://www.it-ru.de/forum/viewtopic.php?t=116270) эту страницу…
Они порезвились.
Женщинам и слабонервным – не смотреть!

»

]]> Никита ]]>

Блондинка выступает в роли движка php – интерпретатор. Единственный объект – шуба. А метод Odetj только лишь возвращает true или false.

»

]]> Ипотечный брокер ]]>

Почитал комменты немцев, валялся…

»

]]> Дмитрий ]]>

Прикольно! Жаль раньше об этом блоге не слышал…учил по книгам ООП.

»

Напишите комментарий