Похожие презентации:
Лекция 1 Понятие ООП
1. Концепции ООП. Понятие класса, конструкторы и деструкторы
Васильева Лидия Николаевнадоцент кафедры автоматики и управления
в технических системах
2. Объектно-ориентированное программирование (ООП)
• ООП — это одна из парадигм разработки.• Парадигма - набор правил и критериев, которые используют при
написании кода , стандартизирует его.
• Программы, написанные с применением ООП, состоят из
объектов.
• Объект — это определённая сущность со своими данными и
набором доступных действий.
3. Схема программы в парадигме ООП
4. Понятия ООП
• Объект. Часть кода, которая описывает элемент с конкретнымихарактеристиками и функциями.
• Класс. Шаблон, на базе которого можно построить объект.
• Метод. Функция внутри объекта или класса, которая позволяет
взаимодействовать с ним или другой частью кода.
• Атрибут. Характеристики объекта в программировании.
5. Структура ООП
6. КЛЮЧЕВЫЕ ПОНЯТИЯ
Абстрагирование – это способ выделить набор значимыххарактеристик
объекта,
исключая
из
рассмотрения
незначимые.
Абстракция
–
это
набор
всех
таких
характеристик.
6
7.
ПАРАДИГМЫ ООП1. Инкапсуляция – механизм, объединяющий данные и функции
обрабатывающие их и защищающий и то, и другое от внешнего
вмешательства или неправильного использования. При таком
объединении создается объект, который можно рассматривать
как составную переменную.
2. Полиморфизм – свойство, позволяющие одно имя использовать
для решения двух или более схожих, но технически разных задач.
Цель полиморфизма-использование одного имени для задания
общих для класса действий. Выполнение конкретного действия
определяется типом данных.
3. Наследование – процесс, посредством которого один объект
приобретает свойства другого, добавляя к ним черты, характерные
только для него. Наследование позволяет поддерживать иерархию
классов и управлять большими потоками информации.
8. ИНКАПСУЛЯЦИЯ
Инкапсуляция - свойство системы, позволяющее объединитьданные и методы, работающие с ними, в классе и скрыть
детали реализации от пользователя.
In_A
In_B
In_C
Out_D
Внутренние переменные
Счетчики
Таймеры
Указатели и т.д.
Out_E
Out_F
8
9. НАСЛЕДОВАНИЕ
Наследование - свойство системы, позволяющее описать новыйкласс на основе уже существующего с частично или полностью
заимствующейся функциональностью.
Clas
s
Frui
t
string
color;
int mass;
void
БАЗОВЫЙ
cut();
КЛАСС
Class
Apple:
Fruit
string
color;
int mass;
void
ПРОИЗВОДНЫЙ
cut();
КЛАСС
void
peal();
9
10. ПОЛИМОРФИЗМ
Полиморфизм - возможность объектов с одинаковой спецификациейиметь различную реализацию.
«Один интерфейс, множество реализаций»
** Задача вычисления площади прямоугольника
S=a*b
a
b
double area(double a,
double b)
{
return (a*b);
}
int area(int a, int
b)
{
return (a*b);
}
10
11. Объявление класса
Класс предназначен для описания типа.Объявление класса:
class имя{
private:
//закрытые элементы
public:
//открытые элементы
} объекты;
12.
Объявление метода и объекта классатип_метода Имя_класса:: имя_метода (параметры)
{
// тело функции
}
Если тело метода короткое, то его можно
включить в класс.
Для определения объекта, имя класса
используют в качестве спецификатора типа
данных:
имя_класса имя_объекта;
13. Доступ к компонентам класса
Доступ к компонентам класса осуществляется через имяобъекта этого класса и оператор точка.
имя_объекта.метод_класса;
имя_объекта.переменная;
На объекты классов, как и на объекты других типов, можно
определять указатели.
Для доступа к членам класса через указатель применяется
стрелка (->):
Имя_класса * указатель_на объект;
указатель_на объект->переменная;
указатель_на объект->метод;
14. Пример создания класса и объекта
#include <iostream>class Kub{
private:
int a;
public:
void set_a(int num);
int vol();
};
void Kub::set_a(int num) {a=num;}
int Kub::vol() {return a*a*a;}
int main(){
Kub ob;
ob.set_a(10) ;
std::cout << ob.vol() << "\n";
return 0;
}
15. Указатели на объекты
Арифметика указателей на объект аналогичнаарифметике указателей на данные любого
другого типа.
Если указатель на объект инкрементируется, то он
начинает указывать на следующий объект, если
декрементируется, то на предыдущий.
16. Пример работы с указателем
#include <iostream>using namespace std;
class kub{
int a;
public:
void set_a(int num) {a=num;}
int vol(){return a*a*a;}
};
int main()
{Kub ob, *p;
ob.set_a(10) ;
p=&ob;
cout << p->vol();
return 0;
}
17. Указатель this
В C++ имеется специальный указатель this. Онавтоматически передается членам класса.
При помощи this можно обращаться к
компонентам класса
18. Пример с указателем this
#include <iostream>#include <cstring>
using namespace std;
class inventory {
string item ;//название
double cost; // цена
public:
void set (string i, double c)
{this->item=i; // доступ к члену
this->cost = c; // через указатель this
}
void show () ;
};
19. Пример использования указателя this
void inventory::show(){
cout << this->item<<endl;
cout << this->cost;
}
int main()
{
inventory ob;
ob.set("kniga", 295);
ob.show();
return 0;
}
20. Конструкторы и деструкторы
Функция-конструктор включается в описание класса ислужит для инициализации объектов. Конструктор
вызывается при создании объекта класса, и
инициализация выполняется автоматически. Для
локальных объектов конструктор вызывается при
объявлении переменной. Для глобальных объектов – в
начале программы.
Имя конструктора совпадает с названием класса и он
не имеет возвращаемого значения.
Деструктор – функция, обратная конструктору, которая
вызывается при удалении объекта. Например, если при
создании объекта выделяется память, при удалении
деструктор ее освобождает. Имя деструктора совпадает
с именем класса, но с символом ~ (тильда) в начале.
21.
Класс с конструктором и деструктором#include <iostream>
using namespace std;
class kub{
int a;
public:
kub();
~kub();
int vol();
};
kub::kub()
{a=10;}
int kub::vol()
{return a*a*a;}
kub::~kub()
{cout<<"destructor"<<endl;}
int main()
{kub ob1;
cout << ob1.vol() <<endl;
return 0;
}
22.
• Локальные объекты удаляются при выходе из области видимости, аглобальные при завершении программы.
• Адреса конструктора и деструктора получить нельзя.
• Конструктору можно передавать аргументы. Для этого следует
добавить необходимые параметры в объявление и определение
конструктора.
• В классе может быть несколько конструкторов. Если не задать свой
конструктор, то используется конструктор по умолчанию. Деструктор не
может иметь параметров.
• Деструктор не может иметь параметров.
23. Конструкторы с параметрами
#include <iostream>using namespace std;
class myclass {
int a;
public:
myclass(int x); // конструктор
void show() ;
};
myclass::myclass(int x)
{cout << "В конструкторе\n";a = x;}
void myclass::show()
{cout << a <<"\n";}
int main()
{myclass ob(4);
ob. show();
return 0;}
24.
Пример#include <iostream>
#include <cstdlib>
using namespace std;
class strtype {
char *p;
int len;
public:
strtype(char *ptr);
~strtype ();
void show();};
strtype::strtype(char *ptr)
{len = strlen(ptr); p = (char *) malloc(len + 1 );
if (!p){cout << "Ошибка выделения памяти\n";exit (1);}
strcpy(p, ptr);}
strtype:: ~strtype()
{cout << "Освобождение памяти по адресу р\n";free(p);}
void strtype::show()
{cout << p << "- длина: " << len; cout << "\n";}
int main()
{strtype s1("Это проверка"), s2("работы программы");
s1.show();s2. show () ;return 0;}
Программирование