The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Опубликован новый международный стандарт для языка Си (C1X/C..."
Отправлено Ваня, 24-Дек-11 00:21 
Я не знаю что пишете вы, но рассмотрим напр. математическую формулу.

class Операция
- наследний линейная: +-*
- наследник /
- наследник скобки
...

class Формула {Операция оп;}

Отрисовка в ООП:
формула.Нарисовать();

Отрисовка в функциональном программировании:
Нарисовать(&формула);

Видите разницу? Или ещё не дошло?

Реализация для функционального:

Нарисовать(формула)
{
если тип=линейная тогда
   НарисоватьЛинейную(ОперацияЛинейная(формула));
иначеесли тип=делить тогда
   НарисоватьДелить(ОперацияДеления(формула));
....
}

И для ООП:

Нарисовать()
{
  ptr=НайтиПоТипу();
  ptr->Нарисовать()
}

НайтиПоТипу()
{
если тип=линейная тогда
   возврат ОперацияЛинейная(this); // преобразование типа ссылки из родителя в детей
иначеесли тип=делить тогда
   возврат ОперацияДеление(this);
....
}

Остальные функции будут аналогичны функции Нарисовать(). Заметно что для ООП код на порядок красивее и логичнее, мы лишних ссылок не передаёт, мы преобразование к нужному типу делаем в коде один единственный раз в функции НайтиПоТипу, соотв. добавлять новые операции можно элементарно.

И чем больше и сложнее проект, тем явнее ООП будет дрючить функциональное. Есть исключения.

Странно что я вообще это объясняю, это проходят на 2-ом курсе профильного ВУЗа, всего курсов 6 :).

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру