Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абстрактные классы.rtf
Скачиваний:
6
Добавлен:
10.07.2019
Размер:
2.25 Mб
Скачать

1.5. Приложения с наследованием классов

Понятие наследования класса имеет важное применение в программировании графического пользовательского интерфейса (grafical user interface – GUI) и системах баз данных. Графические приложения фокусируют внимание на окнах, меню, диалоговых окнах и так далее. Базовое окно – это структура данных с данными и операциями, являющимися общими для всех типов окон. Операции включают открытие окна, создание или изменение заголовка окна, установку линеек прокрутки и областей перетаскивания и т.д. Приложения GUI состоят из классов диалога, классов меню, классов текстовых окон и так далее, которые наследуют базовую структуру и операции от базового класса окна. Например, следующая иерархия класса включает класс Dialog и класс TextEdit, порожденные от класса Window.

Класс Window

Класс Dialog

Класс TextEdit

Этот пример класса Window показывает одиночное наследование, в котором производный класс имеет только один базовый класс. Однако при множественном наследовании (multiple inheritance) класс порождается от двух или более базовых классов. Некоторые приложения GUI используют это свойство. Программа текстового процессора объединяет редактор (editor) с менеджером просмотра (view manager) для пролистывания текста в некотором окне. Редактор читает строку символов и вносит изменения, вставляя и удаляя строки, и вводя информацию форматирования. Менеджер просмотра отвечает за копирование текста на экран с использованием информации о шрифте и окне. Редактор экрана может быть определен как производный класс, использующий класс Editor (редактора) и класс View (менеджера просмотра) в качестве базовых классов.

Множественное наследование

Класс View

Класс Editor

Класс Screen Editor

1.6. Разработка объектно-ориентированных программ

Большие программные системы становятся все более сложными и требуют новых подходов к разработке. Традиционная разработка использует модель управления, которая предполагает наличие администратора верхнего уровня (top administrator), понимающего систему и поручающего задачи менеджерам. Такая нисходящая программная разработка (top-down program design) рассматривает систему как набор подпрограмм, состоящий из нескольких слоев.

Главная программа

Подпрограмма2

Подпрограмма3

Подпрограмма1

На верхнем уровне главная программа управляет работой системы, выполняя последовательность вызовов подпрограмм, которые производят вычисления и возвращают информацию. Эти подпрограммы могут далее поручать выполнение некоторых задач другим подпрограммам. Элементы нисходящей программной разработки необходимы для всех систем. Однако, когда задача становится слишком большой, этот подход может оказаться неудачным, поскольку его сложность подавляет способность отдельного человека управлять такой иерархией подпрограмм. Кроме того, простые структурные изменения в подпрограммах около вершины иерархии могут потребовать дорогих и занимающих длительное время изменений в алгоритмах для подпрограмм, находящихся в нижней части диаграммы.

Объектно-ориентированное программирование использует другую модель системной разработки. Оно рассматривает большую систему как набор объектов (агентов), которые взаимодействуют для выполнения задач. Каждый объект имеет методы, управляющие его данными.

Целью программной разработки является создание читабельной и поддерживаемой архитектуры, которая может быть расширена, как диктует необходимость. Хорошо организованные системы легче понимать, разрабатывать и отлаживать. Все философии разработки пытаются преодолеть сложность программной системы с помощью принципа разделения и подчинения. Нисходящая программная разработка рассматривает систему как набор функциональных модулей, состоящий из слоев. Объектно-ориентированное программирование использует объекты как основу разработки. Не существует единственного способа программной разработки и строго определенного процесса, которому необходимо следовать. Разработка программ – это вид деятельности человека, который должен включать творческую свободу и гибкость. В этой книге мы обсуждаем общий подход, определяющий методологию разработки программного продукта (software development methodology). Этот подход включает отдельные фазы разработки программного продукта, среди которых анализ задачи и определение программы, разработка объекта и процесса, кодирование, тестирование и поддержка (сопровождение).