Разделы презентаций


Лекция 4. Классы

Содержание

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

Слайды и текст этой презентации

Слайд 1Лекция 4. Классы

Лекция 4. Классы

Слайд 2Классы и структуры в C++
Обеспечивают механизм создания собственных типов и

определения различных действий над ними.

Обычно используются для описания различных понятий,

фигурирующих в решаемой задаче.

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

Классы и структуры в C++Обеспечивают механизм создания собственных типов и определения различных действий над ними.Обычно используются для

Слайд 3Классы
Класс — это сущность, которая задает общие свойства и общее

поведение для объектов (общий шаблон для создания объектов). По сути

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

Слайд 4Основные элементы объектной модели
Концептуальной базой объектно-ориетированного стиля программирования является объектная

модель, основывающаяся на 4-х главных принципах:

Абстракция
Инкапсуляция

Модульность
Иерархия

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

Слайд 5Абстракция
Выделяет существенные характеристики некоторого объекта, отличающие его от других видов

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

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

Слайд 6Инкапсуляция
Отделяет друг от друга элементы объекта, определяющие его устройство и

поведения.
Изолирует внешний интерфейс (то, что нам нужно знать для работы

с объектом)от внутренней реализации.

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

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

их отношения.

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

Слайд 8Модульность
Позволяет описать систему как набор компонентов с сильными внутренними связями

и более слабыми внешними связями.
Уменьшает сложность системы.
Уровни модульности:
Файлы, каталоги…
Пространства имен,

пакеты…
МодульностьПозволяет описать систему как набор компонентов с сильными внутренними связями и более слабыми внешними связями.Уменьшает сложность системы.Уровни

Слайд 9Класс: от требований к реализации
Определить свойства рассматриваемой сущности, важные для

данной задачи
Определить основные действия
Определить, какой набор данных достаточен для описания

этих свойств
Определить список функций (методов), соответствующих требуемым действиям

Класс: от требований к реализацииОпределить свойства рассматриваемой сущности, важные для данной задачиОпределить основные действияОпределить, какой набор данных

Слайд 10Модель данных
class Rational
{
// Числитель
int numer;

// Знаменатель (>=1)
int denom;

public:


Rational();
Rational(int n, int d);
int getNumer();
int getDenom();
};
Модель данныхclass Rational{  // Числитель  int numer;  // Знаменатель (>=1)  int denom;

Слайд 11Конструкторы
Конструктор — это метод класса который всегда вызывается при создании

экземпляра класса (объекта). Конструкторы предназначены для создания объектов класса, и

для инициализации атрибутов объекта.

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

Слайд 12Конструкторы
Rational::Rational()
{
std::cout

numer = 0;
denom = 1;
}

Rational::Rational(int n, int

d)
{
std::cout << "Call constructor with parameters" << std::endl;
numer = n;
denom = d;
}


int main()
{
Rational r;
Rational r2(2, 3);
}
КонструкторыRational::Rational(){  std::cout

Слайд 13Деструкторы
Деструктор — это метод класса который предназначен для

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

объектах класса (например освобождение памяти).

Деструктор не принимает параметров и не может возвращать значение.
Класс может иметь только один деструктор.
Имя деструктора начинается символом «~»
Деструкторы не могут перегружаться.
Деструкторы невозможно вызвать, они вызываются автоматически.
Если в классе не объявлен деструктор, то компилятор предоставит деструктор по умолчанию (стандартный деструктор). Стандартный деструктор не выполняет никаких действий.
Деструктор всегда вызывается при выходе объекта за пределы области видимости
Деструкторы  Деструктор — это метод класса который предназначен для уничтожения экземпляров класса, а также для освобождения

Слайд 14Деструкторы
Rational::~Rational()
{
std::cout

Rational r;
Rational r2(2, 3);
}

ДеструкторыRational::~Rational(){  std::cout

Слайд 15Уровни доступа к членам класса
Для поддержки принципа инкапсуляции, существуют три

основных уровня доступа к членам класса. Приведем их в порядке

открытости для внешних абстракций:
Открытый(public) доступ – члены с этим уровнем доступа видимы всем клиентам класса.
Защищенный(protected) доступ – члены этого уровня видимы самому классу, его подклассам, и абстракциям.
Закрытый(private) доступ – члены этого уровня видимы только изнутри самого класса.
Уровни доступа к членам класса		Для поддержки принципа инкапсуляции, существуют три основных уровня доступа к членам класса. Приведем

Слайд 16Открытый(public) доступ

Открытый(public) доступ

Слайд 17Защищенный(protected) доступ

Защищенный(protected) доступ

Слайд 18Защищенный(protected) доступ

Защищенный(protected) доступ

Слайд 19Закрытый(private) доступ

Закрытый(private) доступ

Слайд 20Конструктор копирования

Конструктор копирования

Слайд 21Конструктор копирования

Конструктор копирования

Слайд 22Конструктор копирования

Конструктор копирования

Слайд 23“public”-наследование
Если класс объявлен как базовый для другого класса со спецификатором

доступа «public»:
«public»-члены базового класса — доступны как «public»-члены производного класса;
«protected»-члены

базового класса — доступны как «protected»-члены производного класса;

“public”-наследование	Если класс объявлен как базовый для другого класса со спецификатором доступа «public»:«public»-члены базового класса — доступны как

Слайд 24“public”-наследование

“public”-наследование

Слайд 25“private”-наследование
«public»- и «protected»- члены базового класса – доступны как «private»-члены

производного класса.

“private”-наследование	«public»- и «protected»- члены базового класса – доступны как «private»-члены производного класса.

Слайд 26“private”-наследование

“private”-наследование

Слайд 27“protected”-наследование
«public» и «protected» - члены базового класса -

доступны как «protected»-члены производного класса;

“protected”-наследование  «public» и «protected» - члены базового класса - доступны как «protected»-члены производного класса;

Слайд 28“protected”-наследование

“protected”-наследование

Слайд 30Абстрактный класс
Абстрактный класс в ООП  — базовый

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

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

Слайд 31Абстрактный класс

Абстрактный класс

Слайд 32Абстрактный класс
переменных и данных членов;
типов аргументов;
типов возвращаемых функциями значений;
типов явных

преобразований.
Ограничения на использование абстрактных классов
Абстрактные классы невозможно использовать для

следующих элементов:
Абстрактный класспеременных и данных членов;типов аргументов;типов возвращаемых функциями значений;типов явных преобразований. Ограничения на использование абстрактных классовАбстрактные классы

Слайд 33Виртуальные методы
Виртуальный метод (виртуальная функция) — в ООП  метод

(функция) класса , который может быть переопределён в классах-наследниках так, что конкретная

реализация метода для вызова будет определяться во время исполнения. Таким образом, программисту необязательно знать точный тип объекта для работы с ним через виртуальные методы: достаточно лишь знать, что объект принадлежит классу или наследнику класса, в котором метод объявлен.
Виртуальные методы    Виртуальный метод (виртуальная функция) — в ООП  метод (функция) класса , который может быть переопределён в

Слайд 34Виртуальные методы
Виртуальные методы  позволяют создавать общий

код, который может работать как с объектами базового класса, так

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

Слайд 35Виртуальные методы

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

Слайд 36Виртуальные методы

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

Слайд 37Виртуальные методы

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

Слайд 38Виртуальные методы

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

Слайд 39Виртуальный деструктор

Виртуальный деструктор

Слайд 40Виртуальный деструктор

Виртуальный деструктор

Слайд 41Виртуальный деструктор
Если деструктор объявлен как виртуальный,

то при вызове его через указатель на объект базового класса

(через delete) будет вызван вначале деструктор производного класса, а затем деструктор базового класса.

Виртуальный деструктор    Если деструктор объявлен как виртуальный, то при вызове его через указатель на

Слайд 42Приведение типов const_cast
Снимает cv qualifiers —

const и volatile, то есть константность и отказ от оптимизации

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

Синтаксис: TYPE const_cast (object);
Приведение типов const_cast     Снимает cv qualifiers — const и volatile, то есть константность

Слайд 43Приведение типов const_cast

Приведение типов const_cast

Слайд 44Приведение типов static_cast
Преобразует выражения одного статического типа в объекты

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

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

Синтаксис:  TYPE static_cast (object);

Приведение типов static_cast	  Преобразует выражения одного статического типа в объекты и значения другого статического типа. Поддерживается

Слайд 45Приведение типов dynamic_cast
Используется для динамического приведения типов во время выполнения. В

случае неправильного приведения типов для ссылок вызывается исключительная ситуация std::bad_cast,

а для указателей будет возвращен 0. Использует систему RTTI (Runtime Type Information). Безопасное приведение типов по иерархии наследования, в том числе для виртуального наследования. 

Синтаксис:
TYPE& dynamic_cast (object);
TYPE* dynamic_cast (object);
Приведение типов dynamic_cast		Используется для динамического приведения типов во время выполнения. В случае неправильного приведения типов для ссылок

Слайд 46Приведение типов reinterpret_cast
Приведение типов без проверки. reinterpret_cast — непосредственное указание компилятору.

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

Не снимает константность и volatile. применяется для приведения указателя к указателю, указателя к целому и наоборот.

Синтаксис: TYPE reinterpret_cast (object);
Приведение типов reinterpret_cast		Приведение типов без проверки. reinterpret_cast — непосредственное указание компилятору. Применяется только в случае полной уверенности

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика