- •Оглавление
- •1 Основные методы программирования. Лекция №2 5
- •2 Методы объектно-ориентированного программирования. Лекция №6. 15
- •2.4 Вопросы по теме 54
- •3 Объектно-ориентированное проектирование. Лекция №12 55
- •3.4 Вопросы по теме 74
- •Введение. Лекция №1.
- •1Основные методы программирования. Лекция №2
- •1.1Процедурное программирование Методы процедурного программирования
- •Этапы разработки программ. Лекция 3.
- •1.2Объектно-ориентированное программирование Лекция №4
- •Этапы разработки оо программ. Лекция №5
- •Конструкторы и деструкторы. Лекция №7.
- •Друзья класса
- •2.2Наследование. Лекция №8
- •Производный класс
- •Простое наследование
- •Множественное наследование. Лекция №9
- •Виртуальные базовые классы
- •2.3Полиморфизм. Лекция №10
- •Перегрузка операций
- •Преобразования типов, определяемые классом
- •Перегрузка функций.
- •Чистый полиморфизм
- •Виртуальные элементы-функции
- •Абстрактные классы. Лекция №11.
- •Параметрический полиморфизм
- •Шаблоны функций
- •Шаблоны классов
- •2.4Вопросы по теме
- •3Объектно-ориентированное проектирование. Лекция №12
- •3.1Концепция объектно-ориентированного проектирования
- •3.2Проектирование структурной схемы программы Составление начальной иерархии и структуры классов
- •Реорганизация иерархии и структуры классов
- •Организационная структура программы
- •3.3Проектирование файлов интерфейсов классов. Лекция № 13. Файл интерфейса базового класса
- •Файлы интерфейсов производных классов
- •Файл управления
- •3.4Вопросы по теме
- •Общие моменты разработки программы на основе объектно-ориентированного подхода
- •Приложение а
2.4Вопросы по теме
Определение класса. Синтаксис объявления класса.
Дать определение понятию элемент класса.
Определение конструктора, его виды и назначение.
Особенность использования «друзей класса».
Дать определение производного класса.
Схема изменения атрибутов доступа при наследовании.
Варианты проведения наследования.
Возникновение неоднозначности и способы ее устранения.
Назначение и способы использования перегрузки операций.
Дать определение виртуальной элемент-функции.
Назначение абстрактных классов.
Использование шаблонов классов и функций.
3Объектно-ориентированное проектирование. Лекция №12
3.1Концепция объектно-ориентированного проектирования
"Ключ к искусному проектированию можно подобрать, если непосредственно моделировать некоторые аспекты "окружающей действительности", то есть "поймать" понятия из данной прикладной области в виде классов, представить зависимости между классами формальным образом, например, в виде наследования, и проделывать это повторно на разных уровнях абстракции"[2].
Понятия не существуют изолированно, а находятся во взаимосвязи друг с другом, поэтому, и классы разрабатываемой системы должны проектироваться не изолированно, а совместно в виде одной единицы проектирования. Введем термин компонента в качестве единицы проектирования: "Обычно разрабатывается сразу множество взаимосвязанных классов. Такое множество часто называют библиотекой классов, или компонентой"[2].
Что выбрать в качестве компонент, классов-понятий и каковы основные принципы проектирования программ в информационных системах в экономике и управлении? Можно предложить следующую концепцию проектирования.
Информационная система в экономике и управлении, реализованная в виде комплекса информационных рабочих мест управленческого персонала предприятия, решает ряд взаимосвязанных задач с получением документов, позволяющих выполнять функции управления: планирование, учет, контроль и регулирование. В качестве компонент можно выбрать информационные рабочие места управленческого персонала, информационные подсистемы управления различного уровня.
Можно рекомендовать в качестве имен классов компоненты разрабатываемого информационного рабочего места управленческого персонала - названия основных планово-учетных документов, необходимых в разрабатываемой системе. Документы являются элементами системы управления и находятся во взаимосвязи друг с другом, поэтому, и классы разрабатываемой системы должны проектироваться совместно в виде одной единицы проектирования - компоненты.
Разработка компоненты включает следующие этапы:
проектирование структуры компоненты, включающее проектирование структурной схемы программы, представляющей собой иерархию классов компоненты, и интерфейсов классов;
программирование компоненты.
Этап проектирования структуры компоненты представляет собой итерационный процесс и включает следующие подэтапы:
выбор классов компоненты: в качестве имен классов взять названия планово-учетных документов;
определение состава классов: в качестве элементов-данных взять реквизиты документа, в качестве элементов-функций - набор операций (задач) по обработке документа;
составление начальной иерархии классов: выявить взаимозависимость документов и спроектировать структурную схему компоненты, используя наследование и полиморфизм. Структурная схема компоненты может быть представлена ориентированным графом без петель, где узлами являются классы, а дугами - направления наследования. Простое наследование соответствует иерархической декомпозиции понятий. Множественное наследование соответствует решению функциональной задачи, когда из нескольких документов образуется новый документ.
реорганизация иерархии классов, основанная на принципах декомпозиции и локализации: выделить общие элементы нескольких классов в новый базовый класс, разделить класс на несколько новых.
Выбор классов-понятий и иерархии классов компоненты не является тривиальной задачей, требует совместной дискуссии менеджеров различного уровня. Неудачным может оказаться как чрезмерное размножение классов, так и группировка в одном классе многих понятий.
"Постарайтесь запомнить, что цель проектирования заключается в том, чтобы построить не перегруженную ненужными подробностями модель системы, у которой, тем не менее, имеется соответствующее число уровней абстракции. Сохранять равновесие между простотой и общностью - непростая задача"[3].
Этапы разработки программ задач методом объектно-ориентированного программирования рассмотрим на примере системы учета выполнения работ.