Как стать автором
Поиск
Написать публикацию
Обновить

Адам, Ева и их дети в ООП

Моим первым языком программирования был Pascal. На нем, за первые годы учебы в вузе, я понаписал кучу всякой лабораторной всячины. Дальше был С, С++, а потом, на несколько лет, по ряду причин, я выпал из студенческой жизни. Вернувшись к высшему образованию после вынужденного перерыва, я начал осваивать другую специальность и забыл о программировании.

Вспомнил про него случайно, когда младшая сестра поступила в институт. Как-то она обратилась ко мне за помощью, нужно было написать лабораторную работу по ООП на C++.

Вытаскивая из памяти заброшенные знания и пытаясь донести их до сестры, я пришел к выводу, что с разбегу объяснить основы ООП не выйдет. Имея навыки «процедурного» программирования, она совсем не понимала сути ООП. Тогда я решил упростить такие понятия, как: объекты, классы, методы классов, свойства классов и пр., и стал представлять их в виде привычных вещей.


Для наглядности, я привожу код на PHP. Конечно, это просто пример, для улучшения восприятия ООП и не более того. Многие функции не описаны полностью, да это и не требуется в данном случае. Подобный подход к объяснению понятных программистам вещей, очень хорошо воспринимается обычными людьми, так как основан на объектах из человеческой жизни, а не на ситуациях из жизни машин и программ. Ну и конечно капелька юмора в коде только улучшает восприятие.

//абстрактный человек
abstract class human {
abstract function nutrition(); //функция питания
abstract function reproduction(); //функция размножения
abstract function survival(); //функция выживания
}

//первый человек, мужчина
class Adam extends human {

function reproduction() {
while (!$tired):
$anyFemale=findFemale();
sex($anyFemale);
endwhile;
}

function survival() {
while ($warning==true):
saveSelfBalls(2);
endwhile;
}

function nutrition() {
while (!foodSearch()):
$foods=foodSearch();
endwhile;
feedSelf($foods['meat']);}
}

//интерфейс для создания женщины
interface rib {
public function makeFemaleFromRib();
}

//первая женщина - из ребра Адама
class Eva extends Adam implements rib {

public function makeFemaleFromRib() {
return true;}

function reproduction() {
while (!Child()) :
$bestMale=findMale();
sex($bestMale);
endwhile;
}

function survival() {
while ($warning) :
saveChildren($childCount);
endwhile;
}

function nutrition() {
while (!foodSearch()) :
$foods=foodSearch();
endwhile;
feedChildren($foods['bestFood']);
feedSelf($foods['otherFood']);
}

}

//современная женщина
class ModernWoman extends Eva {

function nutrition() {
if ($richHusband){
goToRestourant($restorants['bestRestourant']);
eat($food['bestFood']);}
elseif (!$richHusband()) {
$products=buyFood($shops['kopeika']);
$food=makeFood($products['anyFood']);
eat($food);}
}

function findHusband($selfAge){
if ($selfAge<25) {
return tryFindRichMan();}
elseif ($selfAge>25&&$selfAge<35){
return tryFindSportsMan();}
elseif ($selfAge>35&&$selfAge<40){
return tryFindAnyMan();}
else return findRandomMan();
}

function reproduction() {
while (!married()):
$man=findHusband($selfAge);
tryToMarriage($man);
endwhile;
if (!$lifeProblems&&!$moneyProblems&&!healthProblems&&!anyProblems){
while (!Child($childCount)):
sex($man);
endwhile;
}
else safeSex($man);
}

function survival() {
while ($warning) :
save($things[‘anyThings’]);
endwhile;
}

}

//соврменный мужчина
class ModerMan extends Adam{

function nutrition() {
if (!$marriage()&&!$liveTogeatherMother){
$food=buySausage($shops['anyShop']);
eat($food);}
elseif ($marriage||$liveTogeatherMother){
$food=askFood($foods['tasty']);
eat($food);}
elseif ($programmer){
$food=orderPizza();
eat($food);}
}

function findGirl ($boobsSize,$hairColor,$anyParams){
return $allWorldGirls[$boobsSize][$hairColor][$anyParams];}

function reproduction(){
if (!$gay&&!$marriage){
$female=findGirl('3 or more','blonde','best world girl');
while (!$tried):
sex($female);
endwhile;}
elseif ($marriage){
while (!$football&&!$tv&&!$beer):
sex($wife);
sleepAfterSex($sleepAfterSexInterval);
endwhile;
}
else return false;
}

function survival() {
if (!$gay){
while ($warning==true):
saveSelfBalls(2);
endwhile;}
elseif ($gay){
hardAnalWork();}
else return false;
}
}
?>


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

function writeSocialMessage($socialNetwork,$message) {
if (postMessage($socialNetwork,$message)) {
return true;}
else return false;
}

postSocialMessage($socialNetworks['twitter'],'Мой папик просто пусик!');


Простор для творчества огромен. Попробуйте этот подход, если вам понадобится объяснять ООП простым людям. А дети, которые только учатся программировать, просто в восторге от подачи материала в такой форме (конечно без взрослой специфики).
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.