Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАММНАЯ ИНЖЕНЕРИЯ.docx
Скачиваний:
115
Добавлен:
09.09.2018
Размер:
2.83 Mб
Скачать

1.2 Понятие класса

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

предметной области, имеющих общие свойства и поведение. Компоненты, использованные при определении класса, называются его членами (members). Класс может содержать несколько членов, а может и не иметь ни одного члена. Таким образом, простейшее описание класса может выглядеть так:

class Demo {}

Рассмотрим пример:

Class X {

Public:

int m; // данные-члены

int mf (int v) { int old = m; m=v; return old; } // функция-член

};

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

назьюать методами. Для доступа к членам класса используется синтаксическая конструкция вида объект.член. Например:

X var; // var – переменная типа Х

Var.m = 7: // присваиваем значение члену m обьекта var

Int x = var.mf (9); // вызываем функцию-член mf() обьекта var

Как правило, класс имеет интерфейс и реализацию. Интерфейс – это часть объявления класса, к которой пользователь имеет прямой доступ. Реализация – это часть объявления, доступ к которой пользователь может получить только с помощью интерфейса. Открытый интерфейс идентифицируется с меткой public:, а реализация – меткой private:. Так же существуют компоненты класса, объявленные в секции protected,, которые называются

защищенными. Они доступны компонентным функциям не только данного

класса, но и его потомков. При отсутствии наследования ~ интерпретируются

как внутренние. Таким образом, класс описывается следующим образом:

class <имя класса>

{ private: <внутренние (недоступные) компоненты класса>;

protected: <защищенные компоненты класса>;

public: <общие (доступные) компоненты класса>;

};

Поля класса всегда описьгоаются внутри класса. В отличие от полей,

компонентные функции могут быть описаны как внутри, так и вне определения

класса. В последнем случае определение класса должно содержать прототипы

этих функций, а заголовок функции должен включать описатель видимости,

который состоит из имени класса и знака «::». Таким способом компилятору

сообщается, что определяемой функции доступны внутренние поля класса:

<тип функции> <имя класса>:: <имя функции>(<список параметров>)

{<тело компонентной функции>}

1.3 Понятие объекта

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

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

Гради Буч дает следующее определение объекта:

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

Каждый объект, получая сообщения, должен определенным образом

«реагировать» на них, выполняя заранее определенные для каждого типа

сообщения действия.

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

Состояние

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

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

Поведение объектов, как уже говорилось выше, характеризуется

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

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

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

Свойства объекта, которые отличают его от всех других объектов группы,

составляют его индивидуальность. Так каждая колонка может иметь

собственную пропускную способность.

Если объект может обладать некоторым состоянием, то, соответственно,

может возникнуть необходимость в получении информации об этом состоянии.

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

информацию. В таких случаях говорят, что над объектом выполнена операция

селекции. Обращение к объекту для изменения его состояния по всем или

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

Отправитель сообщения-команды, реакцией на которую должна быть

модификация объекта, может ожидать завершения операции, а может

продолжить выполнение своей программы. Второй вариант обработки

называется асинхронным, и его реализация требует использования (или

моделирования) параллельной обработки.

Если объект содержит несколько однотипных компонент, например,

массив чисел, то операция, требующая последовательной обработки этих

компонент, называется итерацией. Поэлементно могут выполняться как

операции селекции, так и операции модификации.

Полный список возможных операций над объектами выглядит

следующим образом (рис. 1.14):

создание объекта;

уничтожение объекта;

модификация - изменение состояния объекта;

селекция - доступ для определения состояния;

итерация - доступ к содержимому объекта по частям в определенной

последовательности (используется при наличии в объекте некоторых

однотипных компонент).