Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  04:26[Войти] | [Зарегистрироваться]
Обсуждение темы:
Оберон-технология: особенности и перспективы


Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение. 

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 6256 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 2876—2867 | 2866—2857 | 2856—2847 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 340


№ 2866   18-02-2007 11:16 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2752« (Илья Ермаков)
___________________________

Ответ на »сообщение 2751« (AVC)
___________________________
Наследование реализации полезно и используется в "каркасе", т.е. когда разработчику предоставляются заготовки с некоторым поведением, которые он достраивает под себя. В ББ такими заготовками являются базовые графические типы - Views.View, Containers.Container, Controls.Control. Однако заготовки, хотя и имеют некоторые конкретные реализованные процедуры, объявляются как ABSTRACT, и создать их экземпляр невозможно.


Такие типы иногда называются полуабстрактными (semi-abstract).
И правда, я забыл о них сказать, а они иногда играют важную роль (когда разработчик базового класса хочет обеспечить некую базовую функциональность).
Например, с помощью полуабстрактных типов можно формировать расширяемые программные каркасы, а также включить в библиотеку реализацию того или иного паттерна проектирования (почему-то JoS уверен, что это невозможно, но это на его совести).
 AVC


№ 2865   18-02-2007 08:23 Ответить на это сообщение Ответить на это сообщение с цитированием
2 Сергей Перовский

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


№ 2864   18-02-2007 07:47 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2863« (AVC)
___________________________

>>>Поэтому, ИМХО, рано считать тему модульности достаточно хорошо освещенной в литературе.

Конечно, правильнее было сказать: я еще недостаточно знаком с такой литературой. :)
 AVC


№ 2863   18-02-2007 07:31 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2859« (Руслан Богатырев)
___________________________

Спасибо за содержательный ответ.

>>>...было бы лучше, чтобы по возможности участники дискуссии познакомились с материалами по этому направлению (модульное программирование). Можно по соотв. разделу в EuroProg.ru и по списку новых поступлений. Конкретика по языкам модульного программирования Mesa (с которого делалась Modula-2), Cedar (с которого делался Оберон), CLU, Alphard, Euclid появится в ближайшие дни.

Прочту (и другим советую).
На текущий момент я прочитал несколько статей Шиперски и работу Crelier по раздельной компиляции.
Статьи Шиперски достаточно понятны. Он обычно пишет о том, что не все сущности делятся на классы без остатка. Например, глобальные константы и переменные, а также инварианты, относящиеся к взаимодействию двух и более классов. Если же ввести в язык такую конструкцию, как модуль, все встает на свои места.
Это действительно хорошие статьи, но иногда создается впечатление, что они сводятся к разбору патологических случаев ("парад уродов" ООП).
Работа Crelier очень интересна, но носит сугубо технический характер (и правильно).
Поэтому, ИМХО, рано считать тему модульности достаточно хорошо освещенной в литературе.
 AVC


№ 2862   18-02-2007 07:14 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2860« (Руслан Богатырев)
___________________________

>>>Из сказанного вытекает и главная слабость (уязвимость) модульного программирования в подходе Оберонов -- расширение через границы модулей.

Похоже, это именно то, что отталкивает Сергея Перовского.

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


№ 2861   18-02-2007 06:42 Ответить на это сообщение Ответить на это сообщение с цитированием
2 Сергей Перовский

Почему-то подумалось, что хрупкость базовых классов можно проиллюстрировать знаменитым рассказом Бредбери "И грянул гром" (там охотник, попав в прошлое, случайно наступает на бабочку).
 AVC


№ 2860   18-02-2007 06:18 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2859« (Руслан Богатырев)
___________________________

Из сказанного вытекает и главная слабость (уязвимость) модульного программирования в подходе Оберонов -- расширение через границы модулей.


№ 2859   18-02-2007 06:09 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2858« (AVC)
___________________________

Можно ли развить ее подробнее?

Можно и поподробнее. Но было бы лучше, чтобы по возможности участники дискуссии познакомились с материалами по этому направлению (модульное программирование). Можно по соотв. разделу в EuroProg.ru и по списку новых поступлений. Конкретика по языкам модульного программирования Mesa (с которого делалась Modula-2), Cedar (с которого делался Оберон), CLU, Alphard, Euclid появится в ближайшие дни.

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

В отличие от сильных связей между классами слабость этих связей между модулями обусловлена:
1. В модуле может быть размещено несколько классов, а не один (концепция No Paranoia).
2. Совокупность модулей в большей степени стремится к линеаризации (меньшему числу уровней и схемой, близкой к линейной), нежели классы, поскольку основное назначение классов -- иерархия наследования. У модулей такой сверхзадачи нет.
3. Модули более "тупые" в концептуальном смысле, нежели классы. Это просто блоки разбиения системы на компоненты безотносительно наследования свойств.
4. Модули в большей степени соответствуют "железячным" принципам коммутации аппаратуры: четкие разъемы, позволяющие вынуть один и на его место поставить другой, даже по ходу работы системы.
5. Модули не являются типами данных и всегда имеют одного "физического" представителя.
6. Модули (в трактовке Вирта, начиная с Оберона) не допускают вложенности, что упрощает схему управления областями видимости и снимает многие проблемы с программиста.
7. Модули есть средство унификации главных строительных единиц проектирования, спецификации, документирования, кодирования, исполнения, включения/замещения/развертывания(компонент).


№ 2858   18-02-2007 05:41 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2856« (Руслан Богатырев)
___________________________

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

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

Если связь экспорта-импорта слабее наследования, то многое проясняется.
Но так ли это?
Ведь иерархия модулей в некоторых пунктах подобна иерархии классов: обе статичны, обе выглядят как даг и т.п.
Кажется, главное отличие в том, что модули не наследуют друг другу, ограничиваясь отношениями импорта-экспорта.
Кроме того, модуль сам по себе не является типом, в отличие от класса.
В чем главная причина относительной слабости межмодульных связей?
 AVC


№ 2857   18-02-2007 05:25 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2799« (Сергей Перовский)
___________________________

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


А не могли бы Вы пояснить, в чем преимущество реализации ансамбля КА средствами ООП перед модульным программированием? То, что можно оформить в виде класса, я понимаю. Но зачем именно так? Ансамбли КА можно реализовывать в ФП, на Прологе, да много еще на чем. Но интересно обоснование выбора ООП для этого направления.


<<<... | 2876—2867 | 2866—2857 | 2856—2847 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 340


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования