OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 24 Ноябрь, 2017 17:36

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Четверг, 17 Май, 2012 14:36 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7712
Откуда: Троицк, Москва
Про упор на композицию было понято еще в 1997 г., когда появился Компонентный Паскаль как новый диалект.
Одновременно с книжкой Клеменса Шиперского.

Наследование нужно применять там и только там, где непременно нужно расслоить функциональность записи между модулями.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Четверг, 17 Май, 2012 17:14 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 2846
Откуда: Астрахань
Насчет композиции - согласен. Композицию нужно применять везде, где не требуется наследование.
А наследование требуется там, где требуется динамизация типа и вызов процедур по динамическому типу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Четверг, 17 Май, 2012 17:16 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
А что Вы называете упором на композицию?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Четверг, 17 Май, 2012 18:10 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7712
Откуда: Троицк, Москва
Сергей Прохоренко писал(а):
А что Вы называете упором на композицию?
Народ он как. Сказали -- наследование, и сразу огроменные деревья наследования, куда всё запихнуто. Наследование ради наследования.

А надо с тонким пониманием :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Пятница, 18 Май, 2012 11:44 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 2846
Откуда: Астрахань
Сергей Прохоренко писал(а):
А что Вы называете упором на композицию?

Композиция - ЕСТЕСТВЕЕННЫЙ метод реализации многофункциональности в одном классе.
Без всяких дополнительных фич, типа наследования.
ИМХО, множественное наследование скорее вредно, чем полезно.
Одиночное наследование + композиция - это хороший вариант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Пятница, 18 Май, 2012 11:44 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Из объяснений Сергея всё больше впечатление, что он предлагает сборочно-конкретизирующий синтез реально. А не ООП - хотя определение элементов и схем их сборки может базироваться на объектно-ориентированном анализе.
Как мне кажется, важно, чтобы метод анализа-синтеза обеспечивал это:
Валерий Лаптев в viewtopic.php?p=72052#p72052 писал(а):
...
3. Что хорошо: пацаны получают реальный опыт большой разработки. Я там у них с одной стороны - главный идеолог, с другой - программист-юниор... :)
Причем в процессе разработки начинают понимать на практике, что такое хорошая архитектура, а какая - не очень. Сейчас уже у них в башке сидит главный принцип: система должна быть закрыта для модификаций и открыта для расширений. В уже реализованные вещи практически не залезаем, а только дополняем новыми функциями.
...
И вот хорошо бы выйти на то, как анализировать с соблюдением этого.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Пятница, 18 Май, 2012 11:47 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Валерий Лаптев писал(а):
Композиция - ЕСТЕСТВЕЕННЫЙ метод реализации многофункциональности в одном классе.
...
Одиночное наследование + композиция - это хороший вариант.
Т.е. композиция здесь понимается не в смысле структурности - конкатенации структур с одним входом и одним выходом (ну или как в математике - цепочки функций)?.. Или как?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Пятница, 18 Май, 2012 11:48 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 2846
Откуда: Астрахань
То, что предлагает Сергей - это просто накопление в среде реализованных компонент.
Только еще среда должна вести полный учет того, что накоплено.
Кстати, пока ни в одной среде я этого не видал... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Пятница, 18 Май, 2012 11:50 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 2846
Откуда: Астрахань
Владислав Жаринов писал(а):
Валерий Лаптев писал(а):
Композиция - ЕСТЕСТВЕЕННЫЙ метод реализации многофункциональности в одном классе.
...
Одиночное наследование + композиция - это хороший вариант.
Т.е. композиция здесь понимается не в смысле структурности - конкатенации структур с одним входом и одним выходом (ну или как в математике - цепочки функций)?.. Или как?

Композиция - это прямо в лоб: объект уже реализованного класса включается как поле в новом классе. Тем самым новый класс получает всю функциональность реализованного класса. Только не по наследству, а через объект реализованного класса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Пятница, 18 Май, 2012 11:53 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Вообще это странно... :) Т.е. нигде невозможно, скажем, вывести что-то типа каталога графит-областей, какие есть в базе?.. Когда я предлагал это - думал, что уже было как-то реализовано...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Пятница, 18 Май, 2012 14:36 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 2846
Откуда: Астрахань
Владислав Жаринов писал(а):
Вообще это странно... :) Т.е. нигде невозможно, скажем, вывести что-то типа каталога графит-областей, какие есть в базе?.. Когда я предлагал это - думал, что уже было как-то реализовано...
Если я правильно понимаю, то вы говорите о метаинформации. Это реализуется посредством рефлексии, то есть получения на этапе выполнения некоей информации о живущих объектах. В том числе и об их типе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Суббота, 19 Май, 2012 10:23 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Валерий Лаптев писал(а):
То, что предлагает Сергей - это просто накопление в среде реализованных компонент.

Плюс раннее связывание, благодаря которому устраняется проблема совместимости версий фреймворков.
Плюс визуализация - табличная форма представления.


Последний раз редактировалось Сергей Прохоренко Суббота, 19 Май, 2012 12:03, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Суббота, 19 Май, 2012 10:26 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Валерий Лаптев писал(а):
Владислав Жаринов писал(а):
Вообще это странно... :) Т.е. нигде невозможно, скажем, вывести что-то типа каталога графит-областей, какие есть в базе?.. Когда я предлагал это - думал, что уже было как-то реализовано...
Если я правильно понимаю, то вы говорите о метаинформации. Это реализуется посредством рефлексии, то есть получения на этапе выполнения некоей информации о живущих объектах. В том числе и об их типе.
Не, я о "времени сочинения". :) Т.е. какие вещи, определяемые в среде как "сборочные единицы", доступны для использования в проектах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Суббота, 19 Май, 2012 15:29 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Исходя из конструктивной идеи этой ветки:
Info21 в viewtopic.php?p=72009#p72009 писал(а):
... нет уголка с табличкой, куда ткнуть любого желающего. (Или я уже забыл?)
...
- возникают некоторые вопросы. Как-то:

1. Эта формулировка:
Info21 в viewtopic.php?p=72601#p72601 писал(а):
В обсуждении WITH созрело некое, вроде бы, подтверждение (моего любимого) тезиса, что интерпретация ООП в Оберонах выявляет фундаментальный смысл ООП как способа расслоения функциональности между модулями в настоящей модульной системе.

Когда управление списком -- в одном модуле, а наполнение элементов списка конкретным смыслом -- в других.
...
- означает ли, что ООП используется в ситуациях, как задача "Гетерогенная очередь" у Свердлова? И что должно использоваться всегда именно так? Или можно сформулировать "строчки для таблички" вида: "если анализ даёт такую-то структуру сущностей задачи - используй расслоение такое-то (как у Свердлова)"; "если этакую - используй расслоение эдакое (скажем, с каким-то множественным наследованием - или его эмуляцией через одиночное)". Причём способы эмуляции д.б. рассмотрены где-то рядом с табличкой...
И также - как она соотносится с этим:
Сергей Прохоренко в viewtopic.php?p=72597#p72597 писал(а):
...
Например, возможен такой вариант. В каждом модуле должна быть создана сводная для всех классов интерактивная таблица виртуальных методов, в которой программист непосредственно и в явном виде указывает связи между классами и методами. При внесении изменений в эту таблицу происходит автоматический рефакторинг всего кода модуля, при котором имена абстрактных методов заменяются на имена реализаций методов. Необходимость в позднем связывании отпадает.
- противоречит? альтернативно?

2. Альтернативная организация, как сформулирована здесь:
Валерий Лаптев в viewtopic.php?p=72716#p72716 писал(а):
Владислав Жаринов писал(а):
Валерий Лаптев писал(а):
Композиция - ЕСТЕСТВЕЕННЫЙ метод реализации многофункциональности в одном классе.
...
Одиночное наследование + композиция - это хороший вариант.
Т.е. композиция здесь понимается не в смысле структурности - конкатенации структур с одним входом и одним выходом (ну или как в математике - цепочки функций)?.. Или как?

Композиция - это прямо в лоб: объект уже реализованного класса включается как поле в новом классе. Тем самым новый класс получает всю функциональность реализованного класса. Только не по наследству, а через объект реализованного класса.
- как делается практически? каковы закономерности отображения структуры сущностей задачи в эту схему? В общем опять же - как будут выглядеть "строчки в табличке"?.. :)

3. Инициирующий пост ветки вроде бы располагает поставить и такой вопрос - не дать ли также закономерности отображения ООП-1 на ООП-0 ("фантазийных схем" в базис реализации). Но тут возможен ещё путь, коего уже коснулся: viewtopic.php?p=72010#p72010.
Теперь уточню. Не нужно ли на математической стадии формализации задачи уже заботиться об ограничении фантазий? Т.е. чтобы уже спецификация, как правило, соответствовала ООП-0?
    О такой возможности задумывался в связи с "графитизацией" Оберонов "как положеноо" (в "базисе трёх абстракций" Кауфмана - ну или четырёх по Вирту-Бадду). Т.е. с выделением структур всех компонент базиса - а не только потока управления с "притыканием" остальных к нему. И окончательно это оформилось после знакомства в "АиСД-Оберон" с мыслями Вирта о соответствии сущностей структур данных и управления.
А отсюда такая мысль появилась. В теории структур данных, как известно, определены закономерности нормализации. Не значит ли такое соответствие, что пора искать аналогичные закономерности и для структур управления?.. И не это ли д.б. приоритетным предметом здесь:
Евгений Темиргалеев в viewtopic.php?p=72041#p72041 писал(а):
Валерий Лаптев писал(а):
Налицо необходимость конкретного исследования.
Хорошо бы фундаментального, лет на 20-30. И чтобы исследователь попался не просто теоретик, но и практик...

viewtopic.php?p=71865#p71865
...
Возмоожно, природа сама подскажет нам, как получать естественное для конкретного аналитического выражения задачи отображение на уровень реализации (с непременным учётом "абстракции исполнения" - в форме хоть "связывания" у Кауфмана, хоть "систематического представления об архитектуре" у Вирта) - вместо того, чтобы пытаться обманывать природу исполнителя?.. :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Суббота, 19 Май, 2012 18:53 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Нашел ссылку, разъясняющую, что такое композиция в ООП.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Воскресенье, 20 Май, 2012 12:36 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Возможно, Ваши мысли также иллюстрируют делегирование и обобщённое программирование?..
В любом случае есть вопрос с оптимальным представлением создаваемых структур. Его ставил (в несколько иной плоскости - от исполнения) Илья: viewtopic.php?p=43186#p43186. Я потому и возвращаюсь к схемам и их топологиям. Что всё, что в тексте, должно иметь изоморфное представление как размеченного графа (ну и таблицы, как Вы для ряда случаев рекомендуете).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Воскресенье, 20 Май, 2012 13:11 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Владислав Жаринов писал(а):
всё, что в тексте, должно иметь изоморфное представление как размеченного графа


Я надеюсь, что дерево классов - это не то, к чему Вы стремитесь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Воскресенье, 20 Май, 2012 14:48 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Да в том-то и дело, что нет... скорее, как уже сказал, "схемы сборки" из кубиков. Но д.б. и законы, по которым собирать... вот в ГРАФКОНТе-то этим озаботились...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Воскресенье, 20 Май, 2012 21:51 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Владислав Жаринов писал(а):
Да в том-то и дело, что нет... скорее, как уже сказал, "схемы сборки" из кубиков. Но д.б. и законы, по которым собирать... вот в ГРАФКОНТе-то этим озаботились...


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смысл ООП
СообщениеДобавлено: Понедельник, 21 Май, 2012 21:22 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Да, согласен. Потому и сказано о схемах сборки. Т.е. соединений/подключений - в данном случае областей и отдельных вершин. Кстати, и таблицу спецификации давно мыслил как одну из форм представления - см. опять же эту задачу...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2017, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB