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

Применимость

  • Однократное использование инвариантной части алгоритма, с оставлением изменяющейся части на усмотрение наследникам.

  • Локализация и вычленение общего для нескольких классов кода для избегания дублирования.

  • Разрешение расширения кода наследниками только в определенных местах.

30 Принцип инверсии управления в проектировании классов (IoC – Inversion of Control):

Инверсия управления (Inversion of Control, IoC) — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах.

Принцип:

  1. Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба типа модулей должны зависеть от абстракций;

  2. Абстракция не должна зависеть от реализации. Реализация должна зависеть от абстракции.

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

31. Параметрический полиморфизм. Параметризованные классы в С++. Примеры.

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

Пример:

См лекц

32. Параметрический полиморфизм. Полная специализация шаблонов в С++. Примеры.

Определяет частные случаи применения шаблонна на основе явных аргументов.

Пример:

См лекц

33. Параметрический полиморфизм. Частичная специализация шаблонов в С++. Примеры.

Частичная специализация. Даёт возможность компилятору определить наиболее подходящий (match) шаблон на основе аргументов.

Пример:

См лекц

  1. Понятие класса в С++. Отличия класса от структуры. Понятие объекта класса. Синтаксис. Пример.

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

TCustomer = Record     firstName : string[20];     lastName  : string[20];     address1  : string[100];     address2  : string[100];     address3  : string[100];     city      : string[20];     postCode  : string[8];   end;

  1. Управление доступом к членам класса. Члены-данные и члены-функции класса. Доступ к элементам класса. Синтаксис. Пример.

Доступ к элементам класса.

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

published (публикуемый) содержит открытые свойства, которые появляются в процессе проектирования на странице свойств Инспектора Объектов и которые следовательно, пользователь может устанавливать в процессе проектирования.

private (закрытый доступ) элементы данных и элементы-функции, размещенные под ним, доступны только функциям-элементам данного класса.

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

Члены-данные – это такие же составные части класса. Стоит добавить следующее:

- Они могут быть перечислениями, битовыми полями, а также объектами ранее объявленных классов.

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

- Элемент данных класса может быть указателем или ссылкой на сам класс.

Члены-функции принадлежат своему классу, как и члены-данные. Они оперируют переменными-членами и определяют функциональные возможности класса. Функция-элемент класса объявляется внутри определения класса. Там же может быть расположено и оределение тела функции. В этом случае функцию-элемент называют встроенной и компилятор будет генерировать ее встроенное расширение на месте вызова. Если определение функции располагается вне тела класса, то к ее имени добавляется префикс, состоящий из имени класса и операции разрешения области действия. В этом случае функцию-элемент также можно определить как встроенную с помощью ключевого слова inline. Класс Point вместе с его реализацией:

Point = class

private

x,y:integer;

public:

function GetX:integer;

function GetY:integer;

Procedure SetPoint(k1,k2:integer);

Begin

X:=k1;

Y:=k2;

End;

End;

Function Point.GetX:integer;

Begin

Result:=x;

End;

Здесь функци SetPoint() определена как встроенные, а функции Get() определяются вне тела класса и не является встроенной.

Доступ к элементам класса можно получить с помощью оператора прямого доступа “.” Car.Color = “Green”; Car.Sell();

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]