Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
63
Добавлен:
21.01.2014
Размер:
65.02 Кб
Скачать

Лекция 19 (2 часа)

19. Технология программирования. Объектно-ориентированное программирование.

Объектно-ориентированное программирование

Базовые элементы объектно-ориентированного программирования

Идеология объектно-ориентированного программирования

Проектирование программных объектов

19.1. Объектно-ориентированное программирование

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

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

В объектно-ориентированной технологии пользователь имеет дело с .тремя базовыми элементами: объектами, сообщениями и классами.

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

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

Для связи между объектами используются сообщения, состоящие из трех частей: идентификатора объекта-адресата, имени метода (процедуры), который должен выполняться в искомом объекте, а также любой дополнительной информации (фактических значений для формальных параметров), необходимой для настройки режима выполнения выбранного метода. Использование сообщений позволяет вводить четкую систему протоколов для взаимодействия объектов в системе, не акцентируя внимания на их внутренней организации. Данный подход не только защищает (скрывает} внутреннюю структуру объекта, но и позволяет легко изменять ее при условии, что новый объект будет воспринимать те же сообщения, что и предыдущий. Это позволяет весьма гибко изменять структурную организацию сложных многомодульных систем, не изменяя общего алгоритма их функционирования.

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

Первый включает обширные библиотеки классов объектов, которые легко доступны пользователю.

Второй для некоторых предметных областей создает функционально-структурные модели, на основе которых можно реализовывать любое количество конкретных приложений в данной области. Такой подход позволяет повышать степень используемости классов объектов, разрабатываемых для данных приложений.

Третьим подходом является быстрое макетирование, при котором проектировщики и программисты работают совместно над проектом, доводя его до окончательного вида, пригодного к использованию. Данные принципы рекомендуется применять на каждом уровне процесса разработки проекта, начиная с низшего уровня классов объектов, через промежуточные макеты (модели) к окончательному проекту.

Идеология объектно-ориентированного программирования (ООП) восходит к 60-м годам в связи с исследованиями по ИИ-проблематике. Понятие программных объектов впервые было введено в языке Simula-67, выросшем из Algol-60 и ориентированном на создание ПС, предназначенных для имитации принятия решений в условиях управляемого множества обстоятельств. Существенным импульсом развитию ООП-технологии в массе пользователей послужило расширение пакета Turbo-Pascal 5.5, поддерживающее все основные аспекты ООП. Такой подход (являясь более простым, чем создание нового ООП-языка) вместе с тем позволил более естественно ввести пользователя в круг методики и методологии ООП.

При ООП-подходе понятия процедуры и данных, используемые в обычных СП, заменяются понятиями объект и сообщение; объект это пакет информации вместе с алгоритмом ее обработки, а сообщение — это спецификация условий одной из операций обработки объекта. В отличие от процедуры, которая описывает алгоритм обработки, сообщение только определяет, что хочет выполнить его отправитель, а получатель точно определяет как это сделать. Таким образом, в среде ООП-языка ЭВМ условно делится на объекты, к которым можно обращаться персонально и которые связываются друг с другом на основе сообщений.

Методология ООП, являясь дальнейшим естественным развитием традиционного программирования, предполагает большую степень структурированности (чем в структурном программировании), модульности и абстрактности (чем предыдущие попытки абстрагирования Данных и сокрытия деталей) ПС. Новая методология определяется тремя функциональными характеристиками ООП:

инкапсуляция: объединение записей с процедурами и функциями, что превращает их в новый тип данных — объекты. Объекты сохраняют структуру, значение и поведение структуры данных, допуская намного более завершенную абстракцию и модульность в программировании;

наследование: определение объекта с последующим использованием его для построения иерархии порожденных объектов с наследованием доступа каждого из порожденных объектов к процедурам и данным своего предка;

полиморфизм: присвоение единого имени процедуре, которая передается вверх и вниз по иерархии объектов, с выполнением этой процедуры способом, соответствующим каждому объекту в иерархии.

Так как ООТ представляет собой множество идей, то ее методологию лучше всего осваивать на двух уровнях: общем (ему посвящена значительная часть раздела) и конкретном (на основе конкретного ООП-языка, например Turbo-Pascal). По философии объектов Turbo-Pascal ближе к языку C++, чем к языку SmallTalk: Turbo-Pascal является языком программирования компилирующего типа, тогда как SmallTalk является интерпретатором и создавался как средство исследования программных средств.

19.2. Проектирование программных объектов

Принципиальная структура простого объекта, состоящего из четырех областей, имеет вид:

(1) область заголовка объекта;

(2) область полей данных объекта;

(3) область методов объекта;

(4) область идентификации конца объекта. элементами наполнения которых являются следующие программные конструкции:

1 <Имя объекта> = ОВЦЕСТ[(Имя объекта-предка)]

2 Список идентификаторов Тип 1,

Список идентификаторов Тип N

3 CONSTRUCTOR [<Имя объекта> ] <Имя метода>(Параметры), PROCEDURE <Имя>[(Параметры)] [ Virtual], FUNCTION <Имя>[(Параметры)] Тип данных, DESTRUCTOR [<Имя объекта> ] <Имя метода>[(Параметры)] [ Virtual],

4 END

В области (1) указывается идентификатор (имя) объекта, тип OBJECT и в круглых скобках необязательное имя объекта-предка, от которого данный объект может наследовать компоненты (в дальнейшем все необязательные конструкции заключаются в квадратные скобки).

Область (2) описывает поля данных объекта и должна быть полностью определена перед первым использованием методов объекта. Элементами данной области являются списки идентификаторов (имен) полей данных с приписанными им типами.

Область (3) содержит набор всех методов объекта (процедуры, функции, конструкторы и деструкторы}; метод объявляется внутри объекта и тесно с ним связан Само определение метода производится вне определения объекта посредством отдельной процедуры, функции, конструктора или деструктора.

Само тело конструктора/деструктора подобно процедуре определяется вне объекта. Во многих случаях для простых объектов структура области (3) методов принимает следующий вид:

CONSTRUCTOR — Инициализация объекта;

PROCEDURE AGN — Процедуры и/или функции,

FUNCTION Art определяющие алгоритмы выполнения объекта;

DESTRUCTOR Done — Удаление объекта.

Наконец, область (4) завершения определения объекта содержит только одно управляющее END-предложение языка Turbo-Pascal.

Деструктор представляет собой специальный тип метода, предназначенного для удаления динамически размещенных объектов. Он сочетает освобождение памяти с рядом других функций, необходимых для данного объекта.

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

Пользовательским интерфейсом в программе называется визуализированная часть программы, позволяющая представлять информацию пользователю и принимать ее от него. Существует множество типов пользовательского интерфейса.

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

Кроме интерфейса в программе должен присутствовать код, реально делающий программу рабочим инструментом.

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

Для создание качественного продукта необходимо сделать следующие вещи:

  1. определить, какие задачи должна решать ваша программа (и каким образом);

  2. разработать интерфейс к вашей программе;

  3. подобрать средства для создания программы;

  4. создать отдельные части программы;

  5. собрать эти части вместе в единую программу;

  6. отладить программу;

  7. устранить все возникшие проблемы;

  8. написать документацию.

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

Соседние файлы в папке Конспект лекций по информатике для студентов 1 курса каф. ТМС (Илюхин А.Ю.)