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


Тема 4. Объектно-ориентированное программирование. Классы

Содержание

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы2Шевченко А. В.Объектно-ориентированное программированиеИнкапсуляцияПолиморфизмЦель - повышение скорости разработки и качества программза счет лучшей структуризации и повторного использованиякодаНаследованиеКлассы объединяют данныеи методы их обработки, ограничивая доступ

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

Слайд 1Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
1
Тема 4. Объектно-ориентированное

программирование. Классы
Шевченко А. В.

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы1Тема 4. Объектно-ориентированное программирование. КлассыШевченко А. В.

Слайд 2Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
2
Шевченко А. В.
Объектно-ориентированное

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

структуризации и повторного использования
кода

Наследование

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

Создание новых классов на
основе существующих с
дополнением или изменением
их функциональности

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

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы2Шевченко А. В.Объектно-ориентированное программированиеИнкапсуляцияПолиморфизмЦель - повышение скорости разработки и качества

Слайд 3Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
3
Шевченко А. В.
Объектно-ориентированное

программирование и C++
Язык С++ был разработан Бьерном Страуструпом в 1985

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

Бьерн Страуструп

Языки объектно-ориентированного программирования
C#, C++, Java, Delphi, Eiffel, Simula, D, Io, Objective-C, Object Pascal, VB.NET, Visual DataFlex, Perl, Php, PowerBuilder, Python, Scala, ActionScript, JavaScript, JScript.NET, Ruby, Smalltalk, Ada, Xbase++, X++, Vala

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы3Шевченко А. В.Объектно-ориентированное программирование и C++Язык С++ был разработан Бьерном

Слайд 4Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
4
Шевченко А. В.
Отличительные

особенности С и C++
С
Небольшое число элементов языка
Высокая скорость

выполнения программ
Поддержка модульного программирования
Хорошая мобильность наряду с работой на "нижнем уровне"

С++

Простота и надежность использования
Возможность повторного использования программного кода
Хорошая скорость
Ясность и читабельность

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы4Шевченко А. В.Отличительные особенности С и C++С Небольшое число элементов

Слайд 5Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
5
Шевченко А. В.
Эквивалентные

понятия С и C++
С
Тип данных
С++
Класс
Функция
Метод
Переменная

Объект
Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы5Шевченко А. В.Эквивалентные понятия С и C++С Тип данныхС++ Класс

Слайд 6Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
6
Шевченко А. В.
Инкапсуляция
Класс

Закрытая часть
Программа

if(parm->parm.getqinfoparm.gq_mask&IIAPI_GQ_ROW_COUNT)
putrowcount = parm->parm.getqinfoparm.gq_rowCount;

if(repeat and !query_hdl)
{
query_hdl = (unsigned int)parm->parm.getqinfoparm.gq_repeatQueryHandle;

if(RepeatQuery* r = FIND(repeatquery, query_id, query_id))
r->query_hdl = query_hdl;
else
{
repeatquery.New();
repeatquery.tmp.query_id = query_id;
repeatquery.tmp.query_hdl = query_hdl;
repeatquery.Modify();
}

StmtClose();
Query(NULL);
return(true);
}

if(type == INPPAR)
{
if(itype == IIAPI_DTE_TYPE)
{
if(data->dtype() == _TTime)
DateUnixToIng(inp->date[inp->cnt], (unsigned long)*(DTTime*)data);

if(data->dtype() == _TDate)
DTDateToIng(inp->date[inp->cnt], *(DTDate*)data);
}

if(itype == IIAPI_MNY_TYPE)
{
double d = *(DTMoney*)data;
long i = (long)d;

if(d-(double)i > 0.5) i++;

*(DTMoney*)data = (double)i;
}

if(itype == IIAPI_CHA_TYPE and repeat) itype = IIAPI_VCH_TYPE;

DefPar(INPPAR, inp, inp->cnt++, itype, *data);
}
4

Интерфейс

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы6Шевченко А. В.ИнкапсуляцияКласс Закрытая частьПрограмма  if(parm->parm.getqinfoparm.gq_mask&IIAPI_GQ_ROW_COUNT)   putrowcount

Слайд 7Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
7
Шевченко А. В.
Понятие

класса в С++
Класс
Данные
Методы
Классы служат для объединения данных и

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

class Rectangle
{
int width;
int height;
int Square();
};

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы7Шевченко А. В.Понятие класса в С++Класс Данные МетодыКлассы служат для

Слайд 8Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
8
Шевченко А. В.
Ограничение

доступа к элементам класса
Класс
Данные + методы
Private
Private - могут

использоваться только методами данного класса или дружественными функциями.
Protected - могут использоваться методами данного и наследуемых классов.
Public - могут использоваться любыми функциями программы.

class Example
{
int a;
int b;
protected:
int c;
public:
int d;
private:
int e;
public:
int f;
};

Данные + методы

Protected

Данные + методы

Public

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы8Шевченко А. В.Ограничение доступа к элементам классаКласс Данные + методы

Слайд 9Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
9
Шевченко А. В.
Определение

методов класса
В рамках класса (inline)
Вне класса
class Rectangle
{
private:
int

w;
int h;
public:
int Square();
};

int Rectangle::Square()
{
return(w*h);
}

class Rectangle
{
private:
int w;
int h;
public:
int Square()
{
return(w*h);
}
};

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы9Шевченко А. В.Определение методов классаВ рамках класса (inline)Вне классаclass Rectangle{private:

Слайд 10Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
10
Шевченко А. В.
class

Rectangle
{
public:
int w;
int h;

int Square();
};

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

Через объект

Rectangle rect;

rect.w = 200;
rect.h = 100;

int s = rect.Square();

Через указатель на объект

Rectangle rect;
Rectangle *r = ▭

r->w = 200;
r->h = 100;

int s = r->Square();

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы10Шевченко А. В.class Rectangle{public:  int  w;  int

Слайд 11Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
11
Шевченко А. В.
class

Rectangle
{
private:
int w;
int h;
public:

int Square();
};

void main()
{
Rectangle r;
r.w = 100;
r.h = 50;
}

Пример ограничения доступа к элементам класса

[C++ Error] test.cpp(50): E2247 'Rectangle::w' is not accessible
[C++ Error] test.cpp(51): E2247 'Rectangle::h' is not accessible

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы11Шевченко А. В.class Rectangle{private:  int  w;  int

Слайд 12Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
12
Шевченко А. В.
class

Rectangle
{
private:
int w;
int h;
public:

Rectangle(int Width, int Height);

int Square();
};

Rectangle::Rectangle(int Width, int Height)
{
w = Width;
h = Height;
}

Специальный метод класса - конструктор

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы12Шевченко А. В.class Rectangle{private:  int  w;  int

Слайд 13Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
13
Шевченко А. В.
1.

Имя конструктора совпадает с именем класса.
2. Конструктор не возвращает никакого

значения.
3. Для класса без конструктора генерируется конструктор по умолчанию.
4. Конструкторы могут быть перегружены.
5. Конструкторы не наследуются.
6. Конструкторы не могут вызываться явно из программы.

Свойства конструктора

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы13Шевченко А. В.1. Имя конструктора совпадает с именем класса.2. Конструктор

Слайд 14Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
14
Шевченко А. В.
Перегрузка

конструктора
class Rectangle
{
private:
int w;
int h;
public:

Rectangle(int Width, int Height);
Rectangle(int Side);

int Square();
};


Rectangle::Rectangle(int Side)
{
w = Side;
h = Side;
}

Rectangle::Rectangle(int Side)
{
Rectangle(Side, Side);
}

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы14Шевченко А. В.Перегрузка конструктораclass Rectangle{private:  int  w;

Слайд 15Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
15
Шевченко А. В.
Конструктор

копирования
class Rectangle
{
private:
int w;
int h;
public:

Rectangle(int Width, int Height);
Rectangle(int Side);
Rectangle(Rectangle &R);

int Square();
};

Rectangle::Rectangle(Rectangle &R)
{
w = R.w;
h = R.h;
}
Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы15Шевченко А. В.Конструктор копированияclass Rectangle{private:  int  w;

Слайд 16Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
16
Шевченко А. В.
Создание

объектов класса
Статическое
void func()
{
Rectangle r1(200, 100), r2(150), r3(r1);

...
}

Динамическое

void func()
{
Rectangle *r1 = new Rectangle(200, 100);
Rectangle *r2 = new Rectangle(150);
Rectangle *r3 = new Rectangle(*r1);
}

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы16Шевченко А. В.Создание объектов классаСтатическоеvoid func(){  Rectangle r1(200, 100),

Слайд 17Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
17
Шевченко А. В.
class

Rectangle
{
private:
int w;
int h;
public:

Rectangle(int Width, int Height);
~Rectangle();

int Square();
};

Rectangle::~Rectangle()
{
ShowMessage("Прямоугольник удален.");
}

Специальный метод класса - деструктор

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы17Шевченко А. В.class Rectangle{private:  int  w;  int

Слайд 18Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
18
Шевченко А. В.
1.

Имя деструктора совпадает с именем класса и предваряется тильдой.
2. Деструктор

не возвращает никакого значения.
3. Для класса без деструктора генерируется деструктор по умолчанию.
4. Деструкторы не наследуются.
5. Деструкторам не могут передаваться аргументы.
6. Деструкторы могут описываться как виртуальные (virtual)
7. Деструкторы могут вызываться явно.

Свойства деструктора

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы18Шевченко А. В.1. Имя деструктора совпадает с именем класса и

Слайд 19Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
19
Шевченко А. В.
Разрушение

объектов класса
Статическое
void func()
{
Rectangle rect(200, 100);
...
}
Динамическое
void func()
{

Rectangle *rect = new Rectangle(200, 100);
...
delete rect;
}

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы19Шевченко А. В.Разрушение объектов классаСтатическоеvoid func(){  Rectangle rect(200, 100);

Слайд 20Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
20
Шевченко А. В.
Работа

с памятью в конструкторах и деструкторах
class Array
{
private:
int *data;
public:

Array(int Number);
~Array();
};

Array::Array(int Number)
{
data = new int[Number];
}

Array::~Array()
{
delete [] data;
}
Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы20Шевченко А. В.Работа с памятью в конструкторах и деструкторахclass Array{private:

Слайд 21Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
21
Шевченко А. В.
Статические

элементы класса
class Rectangle
{
private:
int w;
int

h;
static int count;
public:
Rectangle(int Width, int Height);
Rectangle(int Side);
Rectangle(Rectangle &R);
~Rectangle();

int Square();
static int Count() { return(count); }
};


Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы21Шевченко А. В.Статические элементы классаclass Rectangle{private:  int  w;

Слайд 22Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
22
Шевченко А. В.
Использование

статических элементов в методах класса

int Rectangle::count = 0;

Rectangle::Rectangle(int Width,

int Height)
{
int w = Width;
int h = Height;
count++;
}

Rectangle::~Rectangle()
{
count--;
}


Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы22Шевченко А. В.Использование статических элементов в методах класса int Rectangle::count

Слайд 23Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
23
Шевченко А. В.
Использование

статических элементов класса
void main()
{
Rectangle R1(200, 100);

Rectangle R2(150, 120);
Rectangle R3(160);
int c = Rectangle::Count();
ShowMessage(c);
}

R1

w

h

R2

w

h

R3

w

h

count

count

count

count

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы23Шевченко А. В.Использование статических элементов класса void main(){  Rectangle

Слайд 24Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
24
Шевченко А. В.
Указатель

на текущий объект класса

class Rectangle
{
private:
int w;

int h;
public:
Rectangle& Zoom(float Rate);
};

Rectangle& Rectangle::Zoom(float Rate)
{
w = (float)w*Rate;
h = (float)h*Rate;
return(*this);
}

Rectangle r(300, 200);
int s = r.Zoom(0.25).Square();

Компилятор предоставляет каждому объекту указатель на него самого - this.
Этот указатель может быть использован только внутри методов класса для получения адреса текущего объекта.

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы24Шевченко А. В.Указатель на текущий объект класса class Rectangle{private:

Слайд 25Программирование и основы алгоритмизации
Тема 4. Объектно-ориентированное программирование. Классы
25
Шевченко А. В.
Указатель

на текущий объект класса
void main()
{
Rectangle R1(200, 100);

Rectangle R2(150, 120);
Rectangle R3(160);
R1.Zoom(2);
R2.Zoom(5);
R3.Zoom(0.5);
}

R1

w

h

R2

w

h

R3

w

h

this

Программирование и основы алгоритмизацииТема 4. Объектно-ориентированное программирование. Классы25Шевченко А. В.Указатель на текущий объект класса void main(){

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

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

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

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

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


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

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