На базарной площади довольно часто можно слышать высказывания об
Обероне. Мне кажется, что на базарной площади пора появиться ветке об
этой системе и языке, что-то вроде "Мысли об Обероне". Что это такое, перспективы
этой системы, что
полезного можно извлечь из него для программирования на Дельфи
(например) и др.
Ivan
Всего в теме 4531 сообщение
Ссылки по теме "Оберон" и "Компонентный паскаль"
Отслеживать это обсуждение
- Free Pascal, Oberon, BlackBox
- Разработка препроцессора gpre для delphi\freepascal.
- Component Pascal и среда разработки BlackBox
- FreePascal: реальная альтернатива или OpenSource — блажь?
№ 4111 23-12-2005 08:40 | |
Ответ на »сообщение 4108« (Сергей Губанов)
___________________________
И это говорите Вы - только что предложив наследовать класс "Почтальон" от класса "Человек"...
Спасибо, значит хоть в чём-то я с Бучем сравнялся... :)
№ 4110 Удалено модератором | |
№ 4109 23-12-2005 08:30 | |
Ответ на »сообщение 4084« (Владимир Лось)
___________________________
Вообще-то, "ПРИ СЛОЖИВШИХСЯ ПОДХОДАХ" имена функций ни при чём, всё делается с помощью процедурного типа, либо указателей на функции. С помощью интерфейсов всё делается ещё проще. Класс, который хочет, чтобы его экземпляры сравнивались, реализует специальный интерфейс Comparable (как в Java, например).
То есть в описании конкретной функции не важно К КАКОМУ АТД принадлежит обрабатываемый объект. Главное, что бы в этом типе была затребованная функциональность.
Насколько я понимаю концепцию АТД, тип данных определяет именно данные, а не функциональность. Функциональность определяется производимыми над переменными этого типа операциями.
Требование обязательной принадлежности к какому либо классу ("в глобали") там снято.
Именно концепция интерфейсов позволяет нам абстрагироваться от классов и сосредоточиться на требуемой функциональности.
№ 4108 23-12-2005 08:19 | |
Ответ на »сообщение 4106« (hugi)
Не стоит называть Буча недалёким.
И это говорите Вы - только что предложив наследовать класс "Почтальон" от класса "Человек"...
№ 4107 23-12-2005 08:15 | |
Ответ на »сообщение 4104« (hugi)
В каком? -- который наследует от класса Homo Sapiens.
Нет конечно. Тип "Почтальон" является расширением типа "Роль". Объект типа "Человек" имеет (агрегирует) список объектов-ролей. Человек не является почтальном по рождению, а приобретает такую роль динамически. Просто в список ролей объекта "человек" добавляется объект "роль-почтальона".
№ 4106 23-12-2005 08:13 | |
Ответ на »сообщение 4081« (ASU)
___________________________
Фи... "Виноград зелен" - сказала лиса, не сумев дотянуться до гроздьев. (Эзоп).
Не стоит называть Буча недалёким. Если Вы забыли, позволю себе напомнить Вам, что под отсутствием "хорошей" классификации подразумевается зависимость её от целей, поставленных перед исследователем. В самом деле, объединение объектов в классы возможно разными способами по нескольким критериям, -- выбор тех или иных диктуется предназначением классификации. В подтверждение своих слов Буч приводит эксперимент в картинкой, на которой изображены паровозики, составленные из разной формы вагончиков. Эксперимент заключался в том, что люди, которым предлагали классифицировать паровозики с картинки, делали это по-разному, причём невозможно было выделить среди данных классификаций одну, по каким-либо критериям превосходящую остальные.
№ 4105 23-12-2005 08:07 | |
Ответ на »сообщение 4099« (hugi)
Да, для этих X, Y, действительно, не осуществима. Но Вы, видимо, забыли, что операция деления X/Y определена для X in R и Y in R\{0}. Т.е. для X и Y определены множества допустимых значений, именно это (определение множества допустимых значений) и является предназначением типов данных.
Нет, не забыл. Просто я не склонен считать R и R\{0} разными типами данных. :-)
Иначе придется признать таковыми любые множества.
№ 4104 23-12-2005 07:53 | |
Ответ на »сообщение 4080« (ASU)
___________________________
Если посмотреть на объектную иерархию у Т. Бадда, то у него как раз роли, в которых может выступать объект, перепутаны с наследованием. Почтальон или садовник - это не субклассы (потомки) класса Homo Sapiens, но его роли.
Если посмотреть работу Шлаера и Меллора, ссылка на которую приводится у того же Буча, то можно узнать, что, по их мнению, роли являются кандидатами в классы и объекты.
И вообще, непосредственно Homo Sapiens не умеет исполнять обязанности ни почтальона, ни садовника, -- его прежде нужно обучить. Как обучить? -- реализовать функциональность. Где реализовать? -- в классе. В каком? -- который наследует от класса Homo Sapiens. Без этого объект "освоить новую роль" не сможет. В терминах интерфейсов это выражается: "Класс-наследник от Homo Sapiens реализует интерфейс Почтальон (или Садовник)".
Статическое (псевдо-динамическое) изменение функциональности
Судя из вашего описания не изменяет функциональности. Ведь, если в агрегате заменить один объект на другой, функциональность (список заявленных возможностей) не изменится -- изменится её реализация.
№ 4103 23-12-2005 07:34 | |
Из общего курса программирования известно... что модуль - это программа, рассчитанная на многократное использование в различных контекстах (и для этого соответствующим образом оформленная).
№ 4102 23-12-2005 07:18 | |
Ответ на »сообщение 4098« (hugi)
___________________________
... когда объявляется переменная некоторого типа ... , то констатируется факт принадлежности любого значения переменной, полученного ей во время существования, к множеству допустимых, определённому соответствующим типом данных.
Это частичное и не полное определение.
Вы идёте от "структурного наполнения" типа, а надо - от функциональности, которой обладает (предоставляет наружу) данный тип.
В данном случае, следует говорить, что
когда объявляется переменная некоторого типа, то констатируется тот факт, что значения в определённой области памяти, отводимой для целей отображения понятия "данный тип" (например "целый"), не будут "смущать" операции, оперирующие над этим участком памяти.
Но это - внутреннее представление. Когда вы в динамике (напрмер, за счёт присвоения значения), ненароком или специально, изменили тип переменной, то это всего лишь констатация вашего намерения получения новой функциональности от этой переменной.
Отслеживать это обсуждение
Дополнительная навигация: |
|