Адам, Ева и их дети в ООП
Моим первым языком программирования был Pascal. На нем, за первые годы учебы в вузе, я понаписал кучу всякой лабораторной всячины. Дальше был С, С++, а потом, на несколько лет, по ряду причин, я выпал из студенческой жизни. Вернувшись к высшему образованию после вынужденного перерыва, я начал осваивать другую специальность и забыл о программировании.
Вспомнил про него случайно, когда младшая сестра поступила в институт. Как-то она обратилась ко мне за помощью, нужно было написать лабораторную работу по ООП на C++.
Вытаскивая из памяти заброшенные знания и пытаясь донести их до сестры, я пришел к выводу, что с разбегу объяснить основы ООП не выйдет. Имея навыки «процедурного» программирования, она совсем не понимала сути ООП. Тогда я решил упростить такие понятия, как: объекты, классы, методы классов, свойства классов и пр., и стал представлять их в виде привычных вещей.
Для наглядности, я привожу код на PHP. Конечно, это просто пример, для улучшения восприятия ООП и не более того. Многие функции не описаны полностью, да это и не требуется в данном случае. Подобный подход к объяснению понятных программистам вещей, очень хорошо воспринимается обычными людьми, так как основан на объектах из человеческой жизни, а не на ситуациях из жизни машин и программ. Ну и конечно капелька юмора в коде только улучшает восприятие.
В такой форме, с функциями и переменными названными осмысленными именами, обучение гораздо веселее и понятнее. А сколько всего интересного можно добавить в этот шутливый код!
Например, не хватает некоторых методов для класса ModernWoman:
Простор для творчества огромен. Попробуйте этот подход, если вам понадобится объяснять ООП простым людям. А дети, которые только учатся программировать, просто в восторге от подачи материала в такой форме (конечно без взрослой специфики).
Вспомнил про него случайно, когда младшая сестра поступила в институт. Как-то она обратилась ко мне за помощью, нужно было написать лабораторную работу по ООП на 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'],'Мой папик просто пусик!');
Простор для творчества огромен. Попробуйте этот подход, если вам понадобится объяснять ООП простым людям. А дети, которые только учатся программировать, просто в восторге от подачи материала в такой форме (конечно без взрослой специфики).
0 комментариев