Объектно-ориентированное программирование на алгоритмическом языке С++ презентация

Содержание

Слайд 2

Жизненный цикл объекта

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Жизненный цикл объекта МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайд 3

Конструктор копии

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Описание заголовка конструктора копии
«имя класса» (

const «имя класса» & «локальное имя» );
class cl_1 {
int i;
public:
cl_1 ( const cl_1 & ob );
};
cl_1 :: cl_1 ( const cl_1 & ob ) {
i = ob.i;
}
void func ( cl_1 ob_local ) {
. . . .
}
int main ( ) {
cl_1 ob; // Конструктор по умолчанию
func ( ob ); // Конструктор копии
return 0;
}

Конструктор копии МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники Описание заголовка конструктора копии

Слайд 4

Объекты в качестве возвращаемого значения функции

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Пример
class cl_1

{
int i;
public:
cl_1 ( const cl_1 & ob );
};
cl_1 :: cl_1 ( const cl_1 & ob ) {
i = ob.i;
}
cl_1 func () {
cl_1 ob_local;
. . . .
return ob_local;
}
int main ( ) {
cl_1 ob; // Конструктор по умолчанию
ob = func ( );
return 0;
}

Объекты в качестве возвращаемого значения функции МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайд 5

Встраиваемые функции

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

// В заголовочной части
«тип метода» «имя

метода» ( [«параметры»] )
{
// код реализации
}
// В части реализации
inline «тип метода» «имя класса» :: «имя метода» ( [«параметры»] )
{
// код реализации
}

Встраиваемые функции МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники // В заголовочной части

Слайд 6

Пример 1

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

#include
using namespace std;
class cl_1

{
int i;
int k;
public:
int get_i ( ) { return i; }
int get_k ( );
};
inline int cl_1 :: get_k( )
{
return k;
}

Пример 1 МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники #include using namespace std;

Слайд 7

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

Дружественная функция - не является членом класса, но получает доступ к закрытым

элементам объекта класса.
friend «тип функции» «имя функции» ( «параметры» );
#include
using namespace std;
class cl {
// ...
public:
friend void frnd ( cl ob );
// ...
};

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Дружественная функция Дружественная функция - не является членом класса, но получает доступ к

Слайд 8

Предварительное объявление наименования класса

#include
using namespace std;
class myclass;
int sum ( myclass x )
{

return x.a + x.b;
}
class myclass {
int a, b;
public:
myclass ( int i, int j ) { a=i; b=j; }
friend int sum ( myclass x ); // дружественная функция
};
int main()
{
myclass n ( 3, 4 );
cout << sum ( n );
return 0;
}

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Предварительное объявление наименования класса #include using namespace std; class myclass; int sum (

Слайд 9

Дружественный класс

friend «имя дружественного класса»;
#include
using namespace std;
class cl_f;
class cl_1 {
int a,

b;
public:
cl_1 ( int i, int j ) { a=i; b=j; }
friend cl_f; // дружественный класс
};
class cl_f {
public:
void change ( cl_1 & c ) { c.a = c.b; }
};

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Дружественный класс friend «имя дружественного класса»; #include using namespace std; class cl_f; class

Слайд 10

Операторы new и delete

«указатель на объект класса» = new «имя класса» [ (

«аргументы» ) ];
delete «указатель на объект класса»;
#include
using namespace std;
int main(} {
int * p;
p = new int; // выделение памяти для целого
if ( ! p ) {
cout << "Ошибка выделения памяти\п";
return 1;
}
* р = 1000;
cout << "Это целое, на которое указывает р: " << * р << "\п";
delete p; // освобождение памяти
return 0;
}

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Операторы new и delete «указатель на объект класса» = new «имя класса» [

Слайд 11

Операторы new и delete

#include
using namespace std;
class samp {
int i, j;


public:
void set_ij ( int a, int b ) { i = a; j = b; }
int get_product() { return i * j; }
};
int main() {
samp * p;
p = new samp; // выделение памяти объекту
if( ! p ) {
cout << "Ошибка выделения памяти\n";
return 1;
}
(*p).set_ij ( 4, 5 );
cout << "Итог равен:" << p -> get_product() << "\n";
delete p;
return 0;
}

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Операторы new и delete #include using namespace std; class samp { int i,

Слайд 12

Операторы new и delete

Для динамически размещаемого одномерного массива используется такая форма оператора new:
«указатель

на массив» = new «имя типа» [ «размер» ];
Для удаления динамически размещенного одномерного массива используется следующая форма оператора delete:
delete [ ] «указатель на массив»;

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Операторы new и delete Для динамически размещаемого одномерного массива используется такая форма оператора

Слайд 13

#include
using namespace std;
class samp {
int i, j;
public:
void set_ij

( int a, int b ) { i = a; j = b; }
int get_product() { return i * j; }
};
int main() {
samp * p;
p = new samp[5]; // выделение памяти массиву объектов
p[2].set_ij ( 4, 5 );
cout << "Итог равен:" << p[2].get_product(} << "\n";
delete []p;
return 0;
}

МИРЭА, Институт Информационных технологий, кафедра вычислительной техники

Операторы new и delete

#include using namespace std; class samp { int i, j; public: void set_ij

Слайд 14

#include
using namespace std;
class samp {
public:
int *m;
};
int main() {
samp

* p;
p = new samp[5]; // выделение памяти объекту
p[2].m = new int[3];
p[2].m[1] = 36;
cout << “1-й элемент 2-го объекта:" << p[2].m[1];
delete [] p[2].m;
delete [] p;
return 0;
}

МИРЭА, Институт Информационных технологий, кафедра вычислительной техники

Операторы new и delete

#include using namespace std; class samp { public: int *m; }; int main()

Слайд 15

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

class «имя производного класса» :
«спецификатор доступа» «имя базового класса»
«спецификатор доступа» —

public | private | protected
Рассмотрим спецификаторы public и private

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Наследование class «имя производного класса» : «спецификатор доступа» «имя базового класса» «спецификатор доступа»

Слайд 16

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

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Производный класс
: public

public:
Открытые
элементы

public:
Открытые
элементы

private:
Закрытые


элементы

Базовый класс

private:
Закрытые
элементы

Производный класс
: private

public:
Открытые
элементы

private:
Закрытые
элементы

Открытые
элементы

Закрытые
элементы

Наследование МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники Производный класс : public public:

Слайд 17

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

#include
using namespace std;
class base {
int x;
public:
void setx (

int n ) { x = n; }
void showx ( ) { cout << x << "\n"; }
class derived: public base // Класс наследуется как открытый
{
int y;
public:
void sety ( int n ) { у = n; }
void showy ( ) { cout << у << "\n"; }
};
int main ( ) {
derived ob;
ob.setx ( 10 ); // доступ к члену базового класса
ob.sety ( 20 ); // доступ к члену производного класса
ob.showx ( ); // доступ к члену базового класса
ob.showy ( ); // доступ к члену производного класса
return 0;
}

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Наследование #include using namespace std; class base { int x; public: void setx

Слайд 18

Защищенные члены класса

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Производный класс
: private

public:
Открытые
элементы

private:
Закрытые


элементы

Закрытые
элементы

Закрытые
элементы

Защищенные члены класса МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники Производный класс :

Слайд 19

Защищенные члены класса

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Производный класс
: protected

public:
Открытые
элементы

private:
Закрытые


элементы

Открытые
элементы

protected:
Защищенные
элементы

Защищенные
элементы

Защищенные члены класса МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники Производный класс :

Слайд 20

Исключение повторного добавления описания класса

#ifndef наименование класса_H
#define наименование класса_H
Описание заголовочной части класса
#endif //

наименование класса_H

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Исключение повторного добавления описания класса #ifndef наименование класса_H #define наименование класса_H Описание заголовочной

Имя файла: Объектно-ориентированное-программирование-на-алгоритмическом-языке-С++.pptx
Количество просмотров: 88
Количество скачиваний: 0