🗊 Презентация Агрегированные классы

Категория: Образование
Нажмите для полного просмотра!
Агрегированные классы, слайд №1 Агрегированные классы, слайд №2 Агрегированные классы, слайд №3 Агрегированные классы, слайд №4 Агрегированные классы, слайд №5 Агрегированные классы, слайд №6 Агрегированные классы, слайд №7 Агрегированные классы, слайд №8 Агрегированные классы, слайд №9 Агрегированные классы, слайд №10 Агрегированные классы, слайд №11 Агрегированные классы, слайд №12 Агрегированные классы, слайд №13 Агрегированные классы, слайд №14 Агрегированные классы, слайд №15 Агрегированные классы, слайд №16 Агрегированные классы, слайд №17 Агрегированные классы, слайд №18 Агрегированные классы, слайд №19 Агрегированные классы, слайд №20 Агрегированные классы, слайд №21 Агрегированные классы, слайд №22 Агрегированные классы, слайд №23 Агрегированные классы, слайд №24 Агрегированные классы, слайд №25 Агрегированные классы, слайд №26 Агрегированные классы, слайд №27 Агрегированные классы, слайд №28 Агрегированные классы, слайд №29 Агрегированные классы, слайд №30 Агрегированные классы, слайд №31

Содержание

Вы можете ознакомиться и скачать презентацию на тему Агрегированные классы. Доклад-сообщение содержит 31 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

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


Слайд 1


п11. Член-данные класса - объекты другого класса: агрегированные классы Член-данное какого-либо класса может быть переменной или указателем, тип...
Описание слайда:
п11. Член-данные класса - объекты другого класса: агрегированные классы Член-данное какого-либо класса может быть переменной или указателем, тип которых - другой известный на данный момент класс. Такой класс называется агрегированным.

Слайд 2


Рассмотрим пример class A { int x, y; public: A(int xx = 0){ x = y = xx; } // конструктор с аргументом по умолчанию A( int xx, int yy){ x = xx; y =...
Описание слайда:
Рассмотрим пример class A { int x, y; public: A(int xx = 0){ x = y = xx; } // конструктор с аргументом по умолчанию A( int xx, int yy){ x = xx; y = yy;} void Print(){cout

Слайд 3


class B{ // агрегированный класс class B{ // агрегированный класс A a; // объект класса A int z; public: B(){ z = 0;} B(int, int, int ); void...
Описание слайда:
class B{ // агрегированный класс class B{ // агрегированный класс A a; // объект класса A int z; public: B(){ z = 0;} B(int, int, int ); void Print(); };

Слайд 4


Конструктор класса B Определяется он так: B(int b, int c, int d) : a(b, c), z(d) { } Собственные член-данные можно инициализировать и внутри { }...
Описание слайда:
Конструктор класса B Определяется он так: B(int b, int c, int d) : a(b, c), z(d) { } Собственные член-данные можно инициализировать и внутри { } B(int b, int c, int d) : a(b, c) { z = d;}

Слайд 5


Конструкторы по умолчанию Заметим, что если в классе A есть конструктор по умолчанию, то он будет работать, даже если он явно не указан в списке...
Описание слайда:
Конструкторы по умолчанию Заметим, что если в классе A есть конструктор по умолчанию, то он будет работать, даже если он явно не указан в списке инициализации конструктора класса B. В нашем примере при работе конструктора B() { z = 0;} будет работать и конструктор A( int xx = 0).

Слайд 6


Порядок работы конструкторов при объявлении объекта класса B: сначала в A, затем в B.
Описание слайда:
Порядок работы конструкторов при объявлении объекта класса B: сначала в A, затем в B.

Слайд 7


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

Слайд 8


Рассмотрим на примере, как в этом Рассмотрим на примере, как в этом случае можно определить конструктор агрегированного класса.
Описание слайда:
Рассмотрим на примере, как в этом Рассмотрим на примере, как в этом случае можно определить конструктор агрегированного класса.

Слайд 9


Пусть имеется класс Array – числовой массив. Пусть имеется класс Array – числовой массив. class Array { int *a, n; public: Array(int nn = 1, int t =0...
Описание слайда:
Пусть имеется класс Array – числовой массив. Пусть имеется класс Array – числовой массив. class Array { int *a, n; public: Array(int nn = 1, int t =0 ); /* nn - размер, t!=0 – инициализировать массив случайными числами */ int & operator [ ](int); friend ostream & operator

Слайд 10


class Matrix class Matrix { Array *b; int m, n; public: Matrix(int m1 = 1, int n1 = 1, int t = 0); /* t !=0 – создание элементов матрицы случайным...
Описание слайда:
class Matrix class Matrix { Array *b; int m, n; public: Matrix(int m1 = 1, int n1 = 1, int t = 0); /* t !=0 – создание элементов матрицы случайным образом */ Array & operator [ ](int i) // возвращает ссылку на i-ую строку матрицы { if ( i=m) throw ”Номер строки неверен!”; return a[i]; } void Show(); // вывод матрицы ... };

Слайд 11


Конструктор Matrix :: Matrix(int m1, int n1, int t) { b = new Array[ m = m1]; /* Так как в этом случае используется только конструктор по умолчанию...
Описание слайда:
Конструктор Matrix :: Matrix(int m1, int n1, int t) { b = new Array[ m = m1]; /* Так как в этом случае используется только конструктор по умолчанию класса Array, то такая инициализация строк может не подойти. Поэтому определить строки длиной n можно таким образом: */ n = n1; for ( int i = 0; i

Слайд 12


Конструктор b = new Array[ m = m1]; n = n1; for ( int i = 0; i
Описание слайда:
Конструктор b = new Array[ m = m1]; n = n1; for ( int i = 0; i

Слайд 13


Пример использования void main() { Matrix c(4, 5,1); c.Show(); c[1][1] =100; /* Работают две перегруженные операции [ ]: первая – в классе Matrix,...
Описание слайда:
Пример использования void main() { Matrix c(4, 5,1); c.Show(); c[1][1] =100; /* Работают две перегруженные операции [ ]: первая – в классе Matrix, вторая – в классе Array */ cout

Слайд 14


Задача Сдвинуть строки матрицы вверх на одну циклически. void main() { Matrix M(5,6,1); Array b; M.Show(); b = M[0]; for ( int i =1; i
Описание слайда:
Задача Сдвинуть строки матрицы вверх на одну циклически. void main() { Matrix M(5,6,1); Array b; M.Show(); b = M[0]; for ( int i =1; i

Слайд 15


Задача Matrix M(5,6,1); Array b; b = M[0]; for ( int i =1; i
Описание слайда:
Задача Matrix M(5,6,1); Array b; b = M[0]; for ( int i =1; i

Слайд 16


Пример решения этой задачи со «сдвигом» адресов строк int *& Array::Geta(){ return a;}
Описание слайда:
Пример решения этой задачи со «сдвигом» адресов строк int *& Array::Geta(){ return a;}

Слайд 17


void Matrix:: operator
Описание слайда:
void Matrix:: operator

Слайд 18


Вернемся к классам A и B Разберемся, как в классе B можно использовать член-данные х и у из класса A Определим функцию вывода в классе B: void B ::...
Описание слайда:
Вернемся к классам A и B Разберемся, как в классе B можно использовать член-данные х и у из класса A Определим функцию вывода в классе B: void B :: Print() (1) { cout

Слайд 19


Способы выхода из положения Использовать a.x и a.y непосредственно в член-функциях класса B станет возможным, если объявить класс B дружественным...
Описание слайда:
Способы выхода из положения Использовать a.x и a.y непосредственно в член-функциях класса B станет возможным, если объявить класс B дружественным классу A. class B; class A{ friend class B; ... }; 2. Использовать x и y через член-функции класса A из части public: void B :: Print() { a.Print(); cout

Слайд 20


3. В некоторых случаях приходится 3. В некоторых случаях приходится специально задавать функции, которые возвращают то или иное значение из части...
Описание слайда:
3. В некоторых случаях приходится 3. В некоторых случаях приходится специально задавать функции, которые возвращают то или иное значение из части private используемого класса. Например, в классе A - ч/функции Getx(), Gety().

Слайд 21


Функция Print() в классе B в этом случае Функция Print() в классе B в этом случае может быть определена таким образом void B :: Print() { cout
Описание слайда:
Функция Print() в классе B в этом случае Функция Print() в классе B в этом случае может быть определена таким образом void B :: Print() { cout

Слайд 22


Пример использования агрегированных классов void main() { A a1, a2(7,8); // работают оба конструктора класса A B b1; /* работают конструкторы по...
Описание слайда:
Пример использования агрегированных классов void main() { A a1, a2(7,8); // работают оба конструктора класса A B b1; /* работают конструкторы по умолчанию классов A и B: b1.a.x = b1.a.y = b1.z = 0; */ B b2(1, 2, 3); /* работают конструкторы с аргументом сначала A, потом B: b2.a.x =1; b2.a.y = 2; b2.z = 3; */ B *b3= new B(7,8,9); // b3->a.x = 7, b3->a.y = 8, b3->z = 9 a1. Print(); a2. Print(); // функция A :: Print() b1.Print(); b2.Print(); // функция B:: Print() b3->Print(); // B::Print() }

Слайд 23


Графический пример агрегированного класса Определим 3 класса: Bar – прямоугольник, Circ – круг, CircOnBar – круг на прямоугольнике
Описание слайда:
Графический пример агрегированного класса Определим 3 класса: Bar – прямоугольник, Circ – круг, CircOnBar – круг на прямоугольнике

Слайд 24


Агрегированные классы, слайд №24
Описание слайда:

Слайд 25


Агрегированные классы, слайд №25
Описание слайда:

Слайд 26


Агрегированные классы, слайд №26
Описание слайда:

Слайд 27


Агрегированные классы, слайд №27
Описание слайда:

Слайд 28


Агрегированный класс
Описание слайда:
Агрегированный класс

Слайд 29


Агрегированные классы, слайд №29
Описание слайда:

Слайд 30


Агрегированные классы, слайд №30
Описание слайда:

Слайд 31


Агрегированные классы, слайд №31
Описание слайда:



Похожие презентации
Mypresentation.ru
Загрузить презентацию