Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по Леонову, 5семестр.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
503.3 Кб
Скачать

3. Объекты и классы с точки зрения объектно-ориентированного проектирования.

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

Отношения между объектами:

  1. Связь – использование;

  2. Агрегация – включение;

1 и 2 часто могут сочетаться.

Класс – совокупность объектов с одинаковой структурой и поведением.

Состояние объекта характеризуется перечнем всех св-в и текущим значением всех свойств.

Перечень – статический, поведение – динамическое.

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

Операции:

1. Селекторы – организуют считывание состояния, не меняя его.

2. Модификаторы – изменение состояния.

3. Итераторы - организуют доступ к объекту в определённой последовательности.

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

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

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

Идентичность – свойство, позволяющее отличать один объект от другого. (Надо отличать сам объект и указатель на него)

Отношения между классами:

1. Ассоциация или связь, может быть:

  • один к одному,

  • один ко многим,

  • многие ко многим.

Пример – клиент и карточка клиента (один к одному)

2. Наследование

3. Агрегация - включение

4. Использование(развитие ассоциации)

5. Дистанцирование – создание экземпляра шаблонного типа

6. Метакласс – (класс класса) – класс, объектами кот являются другие классы (например генератор классов)

4. Модели и диаграммы, используемые в объектно-ориентированном подходе.

При проектировании используется стандартная нотация.

Статические модели – информационные.

Динамические модели – те, где учитывается поведение системы.

Диаграммы классов – информационная модель, модель состояний, процессов.

5. Техника отладки.

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

Необходимо постоянно поддерживать инвариант – св-во, знающее состояние объекта.

Основные макросы:

ASSERT (booleanExpression) – прерывает выполнение программы, если вычисляемое выражение booleanExpression равно FALSE, и печатает сообщение об ошибке в следующей форме:

Assertion failed in file <имя_файла> in line<номер_строки>, где номер строки - та строка, где произощла ошибка.

VERIFY(booleanExpression) – тоже самое, но программу не завершает.(действует аналогично макросу ASSERT, но для рабочей версии библиотеки)

ASSERT_VALID(pObject) – используется для оценки доступности внутреннего состояния pObject (сначала проверка pObject на NULL, затем вызов его метода AssertValid). Если хотя бы одна проверка приводит к возникновению ошибки, то выводится сообщение аналогичное ASSERT.

ASSERT_KINDOF (класс, указатель) – проверяет является ли тот объект на кот передан указатель, объектом данного класса.

#ifdef

_DEBUG

………

#endif

для виртуальной функции (CObject())

AssertValid – вариант истина или нет

Для борьбы с утечкой памяти:

Вирт ф-я

Dump(CdumpContext &dc)

{ dc<<name;

dc<<age;

}

_GetMemDumpAllObjectsSince(_CrtMemState*) – сбросить все объекты с момента сохранения в памяти.

_CrtMemCheckPoint(_CrtMemState*)

_CrtCheckMemory – проверка памяти

AfxIsValidAdress

_CMemoryState

_CheckPoint() – записать

_DumpAllObjects

_Difference – сравнивает 2 метода state

#define new DEBUG_NEW позволяет запоминать строку программы, где произошла утечка памяти.