Четыре мира программной разработки
Четыре мира программной разработки
Из предшествующей дискуссии следует, что когда мы говорим об ОО-разработке, следует различать четыре отдельных мира:
[x]. Моделируемую систему, - внешнюю по отношению к программной системе, описываемую типами объектов и их абстрактными отношениями.
[x]. Частную конкретизацию внешней системы, состоящую из объектов с фиксированными отношениями.
[x]. Программную систему, состоящую из классов, связанных ОО-отношениями ("быть клиентом", "быть наследником").
[x]. Объектную структуру в том виде, в котором она существует в процессе выполнения программной системы, то есть множество программных объектов, связанных ссылками.
Соотношения между этими мирами представлены на рис.8.9.
Рис. 8.9. Формы и их экземпляры
И на программном и на внешнем уровне (нижняя и верхняя части рисунка) важно разграничить общие понятия и их конкретные реализации (классы и абстрактные отношения слева, объекты и отношения экземпляров справа). Данный момент уже обсуждался в дискуссии о сравнительной роли классов и объектов в предыдущей лекции. Применительно к отношениям необходимо отличать абстрактные отношения loved_one от множества связей loved_one, существующих между элементами конкретного множества объектов.
Это различие невыразимо ни в стандартных математических определениях понятия "отношение", ни в программистской терминологии, например в теории реляционных баз данных. Если ограничиться бинарными отношениями, то и в математике и в теории баз данных отношение определяется как множество пар в форме <x, y>, где x и y являются элементами заданных множеств TX и TY. В терминах программирования все x относятся к типу TX, а все y - к типу TY. Будучи пригодными для математиков, эти определения не подходят для целей моделирования, поскольку не позволяют различать абстрактные отношения и отношения конкретных экземпляров. При моделировании системы отношение "любит" имеет свои общие и абстрактные свойства, совершенно не зависящие от записи того, кто кого любит в конкретной группе людей в некоторый момент времени.
Это обсуждение будет продолжено в лекции 11, когда будут рассматриваться преобразования между абстрактными и конкретными объектами, и будет дано имя вертикальным стрелкам предыдущего рисунка - функция абстракции. (См. "Функции абстракции", лекция 11)Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
10.1 ВЗАИМОДЕЙСТВИЕ ДРАЙВЕРОВ С ПРОГРАММНОЙ И АППАРАТНОЙ СРЕДОЙ
10.1 ВЗАИМОДЕЙСТВИЕ ДРАЙВЕРОВ С ПРОГРАММНОЙ И АППАРАТНОЙ СРЕДОЙ В системе UNIX имеется два типа устройств — устройства ввода/вывода блоками и устройства неструктурированного или посимвольного ввода-вывода. Как уже говорилось в главе 2, устройства ввода-вывода блоками,
Пример программной реализации трехмерной операции
Пример программной реализации трехмерной операции Рассмотрим выполнение трехмерной формообразующей операции вручную (то есть в самом КОМПАС) и с помощью воображаемого подключаемого модуля. В качестве примера выберем обычную операцию выдавливания на основе несложного
5 ФУНКЦИИ ПРОГРАММНОЙ ДОКУМЕНТАЦИИ
5 ФУНКЦИИ ПРОГРАММНОЙ ДОКУМЕНТАЦИИ Для эффективного управления документированием программного обеспечения, важно осознавать различные функции, выполняемые документацией.Программную документацию можно рассматривать как имеющую шесть основных функций:1) информация
Интуиция (Дзен) и искусство программной надежности: больше гарантий и меньше проверок
Интуиция (Дзен) и искусство программной надежности: больше гарантий и меньше проверок Возможно, вы не заметили, что контракт противоречит мудрости, бытующей в программной инженерии. Поначалу это шокирует, но контракт - один из главных вкладов в надежность ПО.Правило
Роль инвариантов класса в программной инженерии
Роль инвариантов класса в программной инженерии Свойство (2) правила инвариантов показывает, что неявно их можно рассматривать как добавления к предусловиям и постусловиям каждой экспортируемой программы класса. Посему принципиально понятие инварианта класса
6.1. ПОНЯТИЕ АРХИТЕКТУРЫ ПРОГРАММНОЙ СИСТЕМЫ
6.1. ПОНЯТИЕ АРХИТЕКТУРЫ ПРОГРАММНОЙ СИСТЕМЫ Разработка архитектуры системы — это процесс разбиения большой системы на более мелкие части. Для обозначения этих частей придумано множество названий: программы, компоненты, подсистемы…Процесс разработки архитектуры —
ОГОРОД КОЗЛОВСКОГО: Четыре мега за четыре гига
ОГОРОД КОЗЛОВСКОГО: Четыре мега за четыре гига Автор: Козловский ЕвгенийЗаканчивая прошлый "Огород", "Убивца", я пообещал детектив. Выполняю обещание.Итак, набив до отказа привычными программами описанный в "Убивце" x600, я начал с ним жить. Жизнь была нормальная, к
ГОЛУБЯТНЯ: Четыре Жэ в кумаре
ГОЛУБЯТНЯ: Четыре Жэ в кумаре Автор: Сергей ГолубицкийВ "Плановом снижении градуса" старый пень проговорился: помянул в контексте настроек GPRS мобильного оператора IDEA HTC Max 4G! А ведь так хотелось, чтобы вышло сюрпризом! Ну коли не срослось, расколюсь ранее положенного
ОГОРОД КОЗЛОВСКОГО: По четыре
ОГОРОД КОЗЛОВСКОГО: По четыре Автор: Козловский ЕвгенийИтак, продолжаю (почти заканчиваю) свою историю с полным переходом на Высокую Четкость. Я уже рассказывал про то, что, во-первых, мой референсный многоканальный усилитель VSA-AX10Ai от Pioneer, купленный в более тучные
Глава 4. Четыре переменные
Глава 4. Четыре переменные В наших проектах мы пытаемся контролировать четыре переменные – затраты, время, качество и объем работ. Из всех этих переменных наиболее удобной для контроля является объем работ.В данной главе я расскажу вам о модели разработки программного
Глава 7. Четыре ценности
Глава 7. Четыре ценности Мы сможем успешно решить стоящую перед нами проблему, если сформулируем стиль, который направлен на прославление каждой из согласующегося набора ценностей, которые служат как человеческим, так и коммерческим требованиям: коммуникация, простота,