Prev Home Next

А.Г. Пискунов, С.М.Петренко

Формализация ООП: ТИПЫ, МНОЖЕСТВА И КЛАССЫ

В работе собраны и, надеюсь, систематизированы вопросы связанные с определениями как таких терминов как тип и класс, так и с некоторыми другими, такими как типизация, уточнен принцип подстановки Лисков, обращено внимание на желательность неизменения домена класса при наследовании.




версия 0.99 от 05/11/2010 - картинка первой иерархии, взаимосвязь типов и классов;
версия 0.97 от 04/11/2010 - текст завершен;
версия 0.94 от 02/11/2010 - ссылка на Теорию объектов Абади, Карделли; ссылка на анализ примера Мартина. Цепочка множество натуральных, полугруппа натуральных, группа целых, кольцо целых, поле рациональных. Преобразование принципа подстановки Лисков в критерий подстановки.
версия 0.90 от 21/10/2010 - ссылка на Кришнамурти, добавлена аксиоматика Пеано, текст вчерне завершен за исключением Пирса ;
версия 0.13 от 02/08/2010 - типы Харрисона, типы Карделли, ссылка на подтип - идеал Скотта ;
версия 0.12 от 14/07/2010 - тип - сумма из Пирса;

А.Г. Пискунов, С.М.Петренко

Об одном примере нарушения принципа подстановки Лисков

В статье используется прием RAISE Development Method-а, от группы авторов называемой далее RDG (RAISE Development Group), для анализа примера Роберта Мартина, иллюстрирующего принцип подстановки (или иначе принцип замещения) Барбары Лисков. Данный технический прием алгебраического проектирования (впервые упомянутый Гуттагом) позволил уточнить понятие тип, выделение подтипа и взаимосвязь выделения подтипа и наследования.



версия 1.01 от 04/01/2012 - после доклада на семинаре кафедры Теории Программирования КГУ устранено большое количество описок и неточностей.
версия 1.00.16 от 08/09/2011 - статья еще раз вычитана перед докладом на семинаре кафедры Теории Программирования КГУ;

А.Г. Пискунов, С.М.Петренко

Формализация парадигмы ООП: НАСЛЕДОВАНИЕ АБСТРАКТНЫХ АВТОМАТОВ

В работе термин наследование обобщается на абстрактные автоматы Мили, что позволяет использовать термин автомат как синоним термина класс. Таким образом, такие основные понятия объектно - ориентированного программирования как абстрактный тип данных, класс, объект, процесс, наследование удается формально определить через прямые произведения, отношения на множествах, функции и абстрактные автоматы. Предлагаемая формализация понятий ООП существенно отличается от формализации Люка Карделли, которую можно считать общепринятой. Кроме того, представляется правильным, что хотя бы функциональные языки программирования должны иметь операцию диагонального произведения отображений (так же называемую соединение) из набора Черча, равно как операции проекции и композиции. Версия на английском языке.




версия 1.03.06 от 30/04/2010 - Ссылку на файл с теорией множеств неизвестного автора, заменил на ссылку на книгу Успенского Лекции о вычислимых функциях, 1960. В ней же упоминается ассоциативность прямого произведения;
версия 1.03.04 от 11/04/2010 - Закончено вычитывание английской и русской версии; `
версия 0.07 от 24/11/2007 - Исправлены ошибки в индексах формул LaTexa (нашел Е.В.Панкратьев); `
версия 0.05 от 17/10/2007 - Утверждение 2.4 и определение наследования обобщены на абстрактные автоматы Мили;

ФОРМАЛИЗАЦИЯ ПАРАДИГМЫ ОБЬЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ: КРИТИКА ОПРЕДЕЛЕНИЯ ГРАДИ БУЧА

Документ (версия 0.95 от 21/04/2007) представляет собой попытку формализовать основные понятия обьектно - ориентированного программирования. Даются определения основным понятиям ООП: класс, объект, наследование, инкапсуляция, полиморфизм через математические термины: множество, отношение, функция, абстрактный автомат. Строго различаются понятия тип (множество состояний абстрактного автомата) и класс (абстрактный автомат).

Д. Гильберт

Никто не может изгнать нас из рая, который создал Кантор.

Краткая версия(0.95) статьи. Полная версия (0.94) статьи. Примеры из статьи А.И.Легалова Разнорукое программирование

Rambler's Top100


версия 0.95 от 11/10/2007 - удлинена цепочка вывода равенства в Утверждении 2.3; изменен пример полифоморфизма; добавлены операторы наследования функций состояния и выхода.
версия 0.94 от 21/04/2007 - переписано определение полиморфизма; Работа выложена на сайте realcoding.net
версия 0.93 от 30/03/2007 - добавлены ссылки на Graeme Paul Smith, Зыков С., Thomas Studer von Werthenstein, Luca Cardelli (М.Николаев).
версия 0.92.1 от 03/03/2007 - спасибо М.Николаеву за статью "The Quarks Object-Oriented Development" Deborah J. Armstrong.
версия 0.91 от 25/02/2007 - добавлены схемы наследования для функций состояния и выходов, предложенные О.Головко.
версия 0.23 от 05/02/2007 - устранена ошибка в определении наследования автоматов, замеченная О.Головко.

Prev Up Next
обьектно ориентированное, для лучшего поиска в гугле.