Классы. Низкоуровневое устройство.

Ссылки.Перегрузки функций.

Ссылку можно рассматривать как еще одно имя объекта. В основном ссылки используются для

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

Запись X& обозначает ссылку на X. после инициализации значение ссылки не может быть

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

значение своего параметра.

Перегрузки позволяют использовать собственные типы данных так же, как стандартные. Собственных обозначений вводить нельзя, но можно перегружать любые операции, существующие в С++ (кроме . .* ?: :: # ## sizeof)

Правила перегрузки:

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

· Для стандартных типов данных переопределять операции нельзя.

· Функции-операции не могут иметь аргументов по умолчанию.

· Функции-операции наследуются (кроме =)

· Функции операции не могут определяться как static.

Способы определения:

· Метод класса

· Дружественная функция класса

· Обычная функция.

Синтаксис:

Тип operatorоперация (список аргументов) {тело функции}

ООП:базовые принципы.

Объектно-ориентированное, или объектное, программирование — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.

Основные понятия:

· Абстракция. Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

· Инкапсуляция. Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.

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

· Полиморфизм. Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

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

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

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

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

Классы. Наследование.

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

classимя: [private | public | protected] базовыйкласс {тело класса};

Если базовых классов несколько, они перечисляются через запятую. Ключ доступа может стоять перед каждым классом. По умолчанию используется private.

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

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

Множественное наследование означает, что класс имеет несколько базовых классов.

Классы. Виртуальные методы.

Для определения виртуального метода используется идентификатор virtual. Виртуальным называется метод, ссылка на который разрешается на этапе выполнения программы.

Виртуальные методы наследуются. Служебное слово virtual (виртуальная) показывает, что функция может иметь разные версии в разных производных классах, а выбор нужной версии при вызове - это задача транслятора. Тип функции указывается в базовом классе и не может быть переопределен в производном классе. Определение виртуальной функции должно даваться для того класса, в котором она была впервые

описана.

Чисто виртуальный метод содержит признак =0 вместо тела.

Исключения.

Исключение – это возникновение непредвиденного или аварийного события. Исключения позволяют логически разделить вычислительный процесс на 2 части – обнаружение аварийной ситуации и её обработка.

Синтаксис:

try{} – обозначение контролируемого блока – кода, в котором может генерироваться исключение.

throw[выражение]; - генерация исключения. Тип выражения определяет тип исключения.

catch (тип имя | тип | …) {} обработчик исключений, находится непосредственно после try.

Шаблоны.

Шаблоны — средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию).

В C++ возможно создание шаблонов функций и классов.

Шаблоны позволяют создавать параметризованные классы и функции. Параметром может быть любой тип или значение одного из допустимых типов (целое число, enum, указатель на любой объект с глобально доступным именем). Шаблон функции начинается с ключевого слова template, за которым в угловых скобках следует список параметров. Затем следует объявление функции:

template<class T >

Вместо T допустим любой другой идентификатор.

12.

Ссылки.Перегрузки функций.

Ссылку можно рассматривать как еще одно имя объекта. В основном ссылки используются для

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

Запись X& обозначает ссылку на X. после инициализации значение ссылки не может быть

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

значение своего параметра.

Перегрузки позволяют использовать собственные типы данных так же, как стандартные. Собственных обозначений вводить нельзя, но можно перегружать любые операции, существующие в С++ (кроме . .* ?: :: # ## sizeof)

Правила перегрузки:

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

· Для стандартных типов данных переопределять операции нельзя.

· Функции-операции не могут иметь аргументов по умолчанию.

· Функции-операции наследуются (кроме =)

· Функции операции не могут определяться как static.

Способы определения:

· Метод класса

· Дружественная функция класса

· Обычная функция.

Синтаксис:

Тип operatorоперация (список аргументов) {тело функции}

ООП:базовые принципы.

Объектно-ориентированное, или объектное, программирование — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.

Основные понятия:

· Абстракция. Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

· Инкапсуляция. Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.

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

· Полиморфизм. Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

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

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

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

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

Классы. Низкоуровневое устройство.

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

class<имя>{

[private:]

<описание скрытых элементов>

public:

<описание доступных элементов>

};

Поля класса:

· Могут иметь любой тип, кроме типа этого же класса (но могут быть указателями или ссылками на этот класс).

· Могут быть описаны с модификатором const, при этом они инициализируются только один раз с помощью конструктора.

· Могут быть описаны с модификатором static.

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

· Конструктор не возвращает значения, на него нельзя получить указатель.

· Класс может иметь несколько конструкторов.

· Конструкторы не наследуются.

· имя_классаимя_объекта (список параметров)

Наши рекомендации