Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Летняя практика КОНСПЕКТ ПО ТМиЯП 2 курс.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
8 Мб
Скачать
☆

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

Структура классов отображается, часто, с помощью нотации языка UML.

В UML класс обозначается как:

«+» - открытые

«-» - инкапсулированные (закрытые)

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

Тема №3 «Отношения между классами»

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

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

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

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

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

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

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

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

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

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

  • Количество классов, не должно быть большим (порядка 10);

  • Число связей стараются минимизировать;

  • Однородность предполагает, что система состоит из одинаковых (очень похожих) элементов.

  • Регулярность заключается в том, что элементы и связи образуют повторяющиеся геометрические структуры.

  • Устойчивость к изменениям задачи. Неустойчивость считается объектная модель, в которой новая функциональность требует изменение существующих классов. Устойчивой считается та, в которой новая функциональность реализуется как дополнение.

  • Повторное использование. Если классы или объектные модели в целом сконструированы разумно, то они могут быть применены повторно при разработке других систем. Чаще всего это является следствием абстрагирования.

Интерфейс и реализация класса.

Описание класса на многих языках программирования состоит из интерфейса и реализации.

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

На С++ интерфейс, чаще всего, записывается в файлах с расширением .h.

Реализация класса состоит из программного кода методов.

На С++ реализацию помещают в файлы с расширением .cpp.

Если в классе имеются функции без реализации, то класс называется абстрактным.

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

Методы объявленные в базовых наполняются реализацией в произвольных классах.

Тема №4 «Конструктор и деструкторы»

Среди методов класса особую роль играют два типа методов: конструкторы и деструкторы.

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

В классе может быть произвольное число конструкторов. Один из них является конструктором по умолчанию. Этот конструктор не содержит параметров и не имеет возвращаемого значения. Все конструкторы именуются также как классы.

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

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

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

На языке С++ деструктор называется также как класс, но с символом тильда (~).