Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопрос-ответ 2013.doc
Скачиваний:
13
Добавлен:
22.02.2020
Размер:
182.78 Кб
Скачать

Вопросы к экзамену по курсу "Объектно-ориентированный анализ и программирование"

специальности БИ (3 курс, 5 семестр)

  1. Определение ооп. Активные данные

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

В основе объектно-ориентированного языка программирования лежат два основных понятия: объект и класс. Основными характеристическими свойствами этих понятий являются:

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

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

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

АКТИВНЫЕ ДАННЫЕ

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

  1. Передача сообщений.

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

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

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

  1. Классы: Порождение экземпляров и наследование.

Рассмотрим три механизма, порождения экземпляров функций это

вложенные функции, анонимные функции и динамические окружения.

Вложенная функция (nested function) – это функция, объявленная внутри другой

функции и имеющая доступ к ее локальным переменным. При создании экземпляра

вложенной функции она параметризуется значениями локальных переменных

объемлющей функции. Это означает, что на основе разных наборов значений локальных

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

функции. В принципе, поддержка вложенных функций – это основной механизм

порождения экземпляров функций.

Анонимная функция (anonymous function) – это вложенная функция, не имеющая

имени. Анонимные функции во всем аналогичны обычным вложенным функциям, но

объявляются внутри некоторых выражений языка.

Окружение (environment) – это отображение множества имен локальных

переменных функции в множество значений этих переменных. Обычно окружения

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

называть автоматическими окружениями.