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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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


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

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

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

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


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

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

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

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

<<<... | 2766—2757 | 2756—2747 | 2746—2737 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 351


№ 2756   16-02-2007 04:39 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2740« (Trurl)
___________________________
>>>Записи Оберона соответстсвуют скорее записям, а не объектам Дельфи.
Однако с их помощью реализуется объектный подход. Сторонники Оберона утверждают, что это делается просто и естественно. Скептики считают, что слишком много общих механизмов приходится реализовывать повторно.
В данном случае я со скептиками: конструкторы - весьма удобный и полезный инструмент.


№ 2755   16-02-2007 04:38 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2739« (Jack Of Shadows)
___________________________

Ответ на »сообщение 2738« (AVC)
___________________________
И кстати это тоже показывает ограниченность ОО как инструмента.

Да, ОО в распространившемся понимании ограничено и часто приводит к большим проблемам в развитии систем. Именно поэтому полезен выход за "мейнстримовские" нормы реализации ООП, потому что это принуждает мыслить по-другому и грамотно строить систему. Нет конструкторов - программист просто ОБЯЗАН, обязан всей идеологией, всеми нормами, всеми примерами, которые видит, использовать гомогенные иерархии с четким выделением абстрактных интерфейсов и объектами-фабриками (в ББ называемыми "каталогами"). И сам же потом говорит за это спасибо, потому что получает расширяемую, гибкую систему, с четким разбиением на интерфейсы и реализацию, лего разделяемую на подсистемы, взаимодействующие через "узкие горла".

А в плане средств статического контроля правильности ООП - ни в одном языке они так не продуманы, как в Компонентном Паскале - для того и пачка модификаторов ABSTRACT, EXTENSIBLE, LIMITED, NEW...


№ 2754   16-02-2007 04:35 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2737« (AVC)
___________________________
>>>Как насчет единицы инкапсуляции (разделение интерфейса и реализации)?
>>>Вообще, формулу класс = тип + модуль не я придумал (а Б.Мейер).
Не важно, кто придумал, цитируете - отвечайте :)
Насчет единицы инкапсуляции боюсь опять увязнем в терминологии.
Точное определение инкапсуляции приведете?
Record под него не попадет?


№ 2753   16-02-2007 04:32 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2736« (Jack Of Shadows)
___________________________
>>>ТО есть каждый раз создавать тот самый механизм от которого отказались :))
Ровно это я и пытался сказать, видимо не очень четко :)


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


№ 2751   16-02-2007 04:12 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2742« (Антон Григорьев)
___________________________

И прошу не оставлять без внимания такой вопрос (его уже озвучил Jack of Shadows): можно ли в Обероне создать такой тип, что его экземпляры можно будет создавать только через фабрику, но при этом другие модули не потеряют возможности создавать расширения этого типа?

В КП существует два способа обязать клиентов создавать объекты только через фабрику: (1) LIMITED типы, (2) ABSTRACT типы + скрытая конкретная реализация.
Ни в одном из этих случаев клиент не может сам расширить конкретные типы. Для того, собственно, и созданы LIMITED типы и скрытые реализации.
Я хочу подчеркнуть, что это сделано специально.
Ведь Оберон создавался с прицелом на расширяющее и компонентное программирование, а наследование реализации не слишком с этим сочетается (проблема хрупких классов и т.п.).

Расширение типа обычно требуется для изменения поведения и введения дополнительной функциональности. Т.к. в указанных случаях расширение типа невозможно, то надо будет использовать делегирование.
 AVC


№ 2750   16-02-2007 04:08 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2742« (Антон Григорьев)
___________________________

Ответ на »сообщение 2734« (AVC)
___________________________
Почему ж не способен? От реализации зависит. В Delphi, например, конструкторы могут быть виртуальными, и на этой особенности вся библиотека VCL построена.
Кстати, хотелось бы увидеть пример, как фабрика может заменить виртуальный конструктор вот в таком случае:
Есть модуль A. В нём объявлен тип A.B. И в этом же модуле есть некоторая процедура A.X, которая для своих внутренних нужд может создать экземпляр любого типа, являющегося расширением A.B. Какого именно типа - это передаётся процедуре A.X извне через её параметры. Модули, в которых определяются расширения типа A.B, а также осуществляются вызовы A.X, на момент компиляции модуля A ещё не существуют. В Delphi через виртуальные конструкторы и указатели на классы это делается элементарно. А в Обероне?

Все делается точно также, только используется не процедура-фабрика, а объект-фабрика. Вместо "указателя на класс" процедуре передается указатель на фабрику.

В С++ есть конструкторы, однако в ряде книг рекомендуется использовать именно описанный мной поход с фабрикой - и гомогенные иерархии наследования - когда наследуются и используются в клиентском коде только абстрактные интерфейсы, а конкретные реализации скрываются. Именно гомогенные иерархии наследования считаются "хорошим тоном" и признаком грамотного проектирования в системном программировании на С++.


№ 2749   16-02-2007 03:52 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2742« (Антон Григорьев)
___________________________

Почему ж не способен? От реализации зависит. В Delphi, например, конструкторы могут быть виртуальными, и на этой особенности вся библиотека VCL построена.

Антон, не могли бы Вы сказать пару слов о реализации виртуальных конструкторов в Дельфи?
Я перестал использовать Object Pascal до появления в нем виртуальных конструкторов и динамических методов, поэтому, к сожалению, не в курсе.
Когда я говорю о конструкторе, то ориентируюсь прежде всего на Си++, где конструктор жестко привязан к конкретному классу. "Виртуальный конструктор" (в моем понимании) -- способ создавать объект, класс которого заранее не известен (а иногда даже специально скрыт).
 AVC


№ 2748   16-02-2007 03:38 Ответить на это сообщение Ответить на это сообщение с цитированием
в дополнение на »сообщение 2747« ()
___________________________
Вы неправы и правы оба одновременно.
Другими словами - само проведение подобных "контрольных замеров" в ОС с названием "Windows*" совершенно лишено всякого смысла... Либо вы будете получать "в среднем по палате"...
Сообщение не подписано


№ 2747   16-02-2007 03:34 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2745« (info21)
___________________________
Обязательная проверка границ массива снижает быстродействие программы в среднем на 5%.
Неправда. В мало-мальски реалистичных случаях это скорее 1-2%, когда вообще удается измерить.

Вы неправы и правы оба одновременно.
И 5%, и ваши 1-2% - просто результат каличности винды, в которой механизмы параллельности писались или в сильнейшем пьяном угаре, или студентом-недоучкой. Вы просто в переделах "погрешности" оба.
Сообщение не подписано


<<<... | 2766—2757 | 2756—2747 | 2746—2737 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 351


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

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

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

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

Перейти на конкретную страницу по номеру
  
Время на сайте: 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» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

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