🗊Презентация Объектно-ориентированное программирование в С+

Категория: Образование
Нажмите для полного просмотра!
/ 35

Содержание

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

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


Слайд 1


Объектно-ориентированное программирование в С+, слайд №1
Описание слайда:

Слайд 2





Структура курса
Описание слайда:
Структура курса

Слайд 3





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

Слайд 4





inline-функции
Компилятор может выполнить  подстановку
тела функции в место её вызова, если
определить функцию как встраиваемую с
помощью ключевого слова inline
	
inline определение_функции
inline  int sum2(int a, int b)
{ return  a+b;}
Описание слайда:
inline-функции Компилятор может выполнить подстановку тела функции в место её вызова, если определить функцию как встраиваемую с помощью ключевого слова inline inline определение_функции inline int sum2(int a, int b) { return a+b;}

Слайд 5





Замечание.
inline-функциями имеет смысл 
определять только небольшие функции, в
частности, без циклов и оператора
switch.
Описание слайда:
Замечание. inline-функциями имеет смысл определять только небольшие функции, в частности, без циклов и оператора switch.

Слайд 6





Область видимости

Операция :: называется операцией определения
области видимости(области действия).
Это двуместная операция  формата
	имя_класса :: имя_ч/функции(ч/данного)
Существует и одноместная операция :: формата
	:: имя_глобальной_переменной
int x = 7; // глобальная переменная
void ff( int y)
{ int x = 1, z;
   z   =  x    + ::x;
}
Описание слайда:
Область видимости Операция :: называется операцией определения области видимости(области действия). Это двуместная операция формата имя_класса :: имя_ч/функции(ч/данного) Существует и одноместная операция :: формата :: имя_глобальной_переменной int x = 7; // глобальная переменная void ff( int y) { int x = 1, z; z = x + ::x; }

Слайд 7





Введение. Принципы ООП
Описание слайда:
Введение. Принципы ООП

Слайд 8


Объектно-ориентированное программирование в С+, слайд №8
Описание слайда:

Слайд 9





ООП базируется на 3-х основных принципах
Описание слайда:
ООП базируется на 3-х основных принципах

Слайд 10





1. Инкапсуляция - сокрытие информации 
Этот принцип предполагает создание пользовательских типов данных, включающих как данные, так и операции и функции,  их обрабатывающие
 Никакие другие данные не могут использовать эти операции и функции и  наоборот
Контроль за санкционированным использованием данных и функций выполняет компилятор
Такие данные называются абстрактными в отличие от стандартных (встроенных) типов данных (int, char,...)
Механизм создания абстрактных типов данных осуществляется через понятие класса.
Описание слайда:
1. Инкапсуляция - сокрытие информации Этот принцип предполагает создание пользовательских типов данных, включающих как данные, так и операции и функции, их обрабатывающие Никакие другие данные не могут использовать эти операции и функции и наоборот Контроль за санкционированным использованием данных и функций выполняет компилятор Такие данные называются абстрактными в отличие от стандартных (встроенных) типов данных (int, char,...) Механизм создания абстрактных типов данных осуществляется через понятие класса.

Слайд 11





2. Наследование – создание иерархии абстрактных типов данных 
Определяется базовый класс,
содержащий общие характеристики
(прародительский класс), а из него по
правилам наследования строятся
порожденные классы, сохраняющие
свойства и методы базового класса и
дополненные своими характерными
свойствами и методами.
Описание слайда:
2. Наследование – создание иерархии абстрактных типов данных Определяется базовый класс, содержащий общие характеристики (прародительский класс), а из него по правилам наследования строятся порожденные классы, сохраняющие свойства и методы базового класса и дополненные своими характерными свойствами и методами.

Слайд 12





3. Полиморфизм - множественность форм
Это принцип использования одинаковых
имен функций и знаков операций для
обозначения однотипных действий
В языке С++ полиморфизм используется в
двух видах:
Описание слайда:
3. Полиморфизм - множественность форм Это принцип использования одинаковых имен функций и знаков операций для обозначения однотипных действий В языке С++ полиморфизм используется в двух видах:

Слайд 13





Язык С++ был создан в лаборатории Bell
Язык С++ был создан в лаборатории Bell
Labs в начале 80-х годов программистом
Бьярном Страуструпом в течение
нескольких месяцев путем добавления к
С аппарата классов. Первый
компиляторы появились в 1985 г.
Описание слайда:
Язык С++ был создан в лаборатории Bell Язык С++ был создан в лаборатории Bell Labs в начале 80-х годов программистом Бьярном Страуструпом в течение нескольких месяцев путем добавления к С аппарата классов. Первый компиляторы появились в 1985 г.

Слайд 14






КЛАССЫ И ОБЪЕКТЫ
Описание слайда:
КЛАССЫ И ОБЪЕКТЫ

Слайд 15





п1. Определение класса. Сокрытие информации
Структура - это комбинированный тип данных,
один элемент которого может включать произвольное
количество данных разных типов, которые называются
полями структуры. 
	Формат определения структуры:  
   
struct   имя_структуры   {поле1;  поле2;...;};
Описание слайда:
п1. Определение класса. Сокрытие информации Структура - это комбинированный тип данных, один элемент которого может включать произвольное количество данных разных типов, которые называются полями структуры. Формат определения структуры: struct имя_структуры {поле1; поле2;...;};

Слайд 16





п1. Определение класса. Сокрытие информации
Например,
 
  struct  anketa 
      {char  fio[25], faclt[10]; int group;};
Определение структуры обычно задается вне функций,
в начале программы, как глобальное.
Определим переменную 

	anketa p; 
       strcpy(p.fio,”Петров”); 
       strcpy(p.faclt,”ФПМК”);
	p.group = 1122;
Описание слайда:
п1. Определение класса. Сокрытие информации Например, struct anketa {char fio[25], faclt[10]; int group;}; Определение структуры обычно задается вне функций, в начале программы, как глобальное. Определим переменную anketa p; strcpy(p.fio,”Петров”); strcpy(p.faclt,”ФПМК”); p.group = 1122;

Слайд 17





Инициализация
Структуру можно инициализировать при
определении переменных
anketa s = { “Шарапов”, ”ЮФ”, 711};
Можно задать указатель на структуру
anketa *t;
t = &s;
t->group = 773;
Описание слайда:
Инициализация Структуру можно инициализировать при определении переменных anketa s = { “Шарапов”, ”ЮФ”, 711}; Можно задать указатель на структуру anketa *t; t = &s; t->group = 773;

Слайд 18





Определение класса базируется на понятии
Определение класса базируется на понятии
структуры и  имеет вид
class имя_класса {тело_класса};

Тело класса содержит определение данных
класса – 
член-данных 
и объявление или определение функций, их
обрабатывающих, – 
член-функций 
По иной терминологии ч/данные - свойства,
ч/функции - методы
Описание слайда:
Определение класса базируется на понятии Определение класса базируется на понятии структуры и имеет вид class имя_класса {тело_класса}; Тело класса содержит определение данных класса – член-данных и объявление или определение функций, их обрабатывающих, – член-функций По иной терминологии ч/данные - свойства, ч/функции - методы

Слайд 19





const int MS = 255;
const int MS = 255;
class String
    { char line[MS];
       int len;
       void  Fill(const char *); 
	    int  Len()   { return len;} 
	    void  Print()  { cout << line; }    	 
       char &  Index(int i); 
    };
Здесь член-данные - line, len; 
член-функции - Fill, Print, Len, Index.
Описание слайда:
const int MS = 255; const int MS = 255; class String { char line[MS]; int len; void Fill(const char *); int Len() { return len;} void Print() { cout << line; } char & Index(int i); }; Здесь член-данные - line, len; член-функции - Fill, Print, Len, Index.

Слайд 20





Член-функции отличаются от обычных
Член-функции отличаются от обычных
функций следующим:
а) они имеют привилегированный доступ к член-данным класса, т.е. используют их непосредственно;
б) область их видимости(действия) - класс, т.е. они могут использоваться только с переменными этого класса через операцию ‘.’(точка);
в) член-данные могут располагаться в любом месте описания класса, они «видны» всем его член-функциям.
Описание слайда:
Член-функции отличаются от обычных Член-функции отличаются от обычных функций следующим: а) они имеют привилегированный доступ к член-данным класса, т.е. используют их непосредственно; б) область их видимости(действия) - класс, т.е. они могут использоваться только с переменными этого класса через операцию ‘.’(точка); в) член-данные могут располагаться в любом месте описания класса, они «видны» всем его член-функциям.

Слайд 21





К сожалению, 
Таким образом определенный класс мы использовать не сможем. Единственное, что мы можем – это определить переменные этого типа  или указатель
Например,
String str1,*str; 
str1.len =10; 
‘String::len’ is not accessible   - 
«Переменная  len из класса String недоступна»
Описание слайда:
К сожалению, Таким образом определенный класс мы использовать не сможем. Единственное, что мы можем – это определить переменные этого типа или указатель Например, String str1,*str; str1.len =10; ‘String::len’ is not accessible - «Переменная len из класса String недоступна»

Слайд 22





Типы доступа
Для того, чтобы работать с классом, для его
член-данных и член-функций надо определить
тип доступа.
Существует 3 типа доступа:
private -  член-данные и член-функции доступны
только член-функциям класса; 
protected - член-данные и член-функции 
доступны член-функциям базового и
порожденного классов (гл. 2);
public - член-данные и член-функции 
общедоступны.
Описание слайда:
Типы доступа Для того, чтобы работать с классом, для его член-данных и член-функций надо определить тип доступа. Существует 3 типа доступа: private - член-данные и член-функции доступны только член-функциям класса; protected - член-данные и член-функции доступны член-функциям базового и порожденного классов (гл. 2); public - член-данные и член-функции общедоступны.

Слайд 23





Умолчание
Для классов по умолчанию считается
доступ - private (поэтому в нашем
примере оказался тип доступа private для
всех член-данных и член-функций, т.е.
всё мы «спрятали в капсулу». Отюда
термин “инкапсуляция”), 
для структур, наоборот, - public.
Описание слайда:
Умолчание Для классов по умолчанию считается доступ - private (поэтому в нашем примере оказался тип доступа private для всех член-данных и член-функций, т.е. всё мы «спрятали в капсулу». Отюда термин “инкапсуляция”), для структур, наоборот, - public.

Слайд 24





const int MS = 255;
const int MS = 255;
class String
    { char line[MS];
       int len;
       void  Fill(const char *); 
	    int  Len()   { return len;} 
	    void  Print()  { cout << line; }    	 
       char &  Index(int i); 
    };
Описание слайда:
const int MS = 255; const int MS = 255; class String { char line[MS]; int len; void Fill(const char *); int Len() { return len;} void Print() { cout << line; } char & Index(int i); };

Слайд 25





Член-функции и операция ::
Вернемся к член-функциям: 
две из них определены в классе(Len  и Print),
две объявлены(Fill и Index)
Определить объявленные функции можно вне
класса, используя операцию ‘::’
Формат определения:
тип_возвращаемого_значения имя_класса ::
имя_функции (список_аргументов)
{тело_функции}
Описание слайда:
Член-функции и операция :: Вернемся к член-функциям: две из них определены в классе(Len и Print), две объявлены(Fill и Index) Определить объявленные функции можно вне класса, используя операцию ‘::’ Формат определения: тип_возвращаемого_значения имя_класса :: имя_функции (список_аргументов) {тело_функции}

Слайд 26





Определим вне класса функции,
Определим вне класса функции,
объявленные в нём:
void String:: Fill ( const char *s)
 { for( len = 0; line[len] != ‘\0’; len++) 
              line[len] = s[len]; }
char & String:: Index( int i )
 { return line[i]; // функция возвращает i-ый   	                // элемент строки
}
Описание слайда:
Определим вне класса функции, Определим вне класса функции, объявленные в нём: void String:: Fill ( const char *s) { for( len = 0; line[len] != ‘\0’; len++) line[len] = s[len]; } char & String:: Index( int i ) { return line[i]; // функция возвращает i-ый // элемент строки }

Слайд 27





?
Чем же отличаются член-
функции, определенные в теле
класса и вне его?
Описание слайда:
? Чем же отличаются член- функции, определенные в теле класса и вне его?

Слайд 28





При определении в теле класса они получают неявно статус inline 
При определении в теле класса они получают неявно статус inline 
(поэтому, если функция определена
в классе и содержит операторы цикла,
то компилятор может выдать предупреждение о
возможной неэффективности).
Функциям, определенным вне класса, также
можно присвоить статус inline явно первым
словом
	inline char & String:: Index(...){...}
Описание слайда:
При определении в теле класса они получают неявно статус inline При определении в теле класса они получают неявно статус inline (поэтому, если функция определена в классе и содержит операторы цикла, то компилятор может выдать предупреждение о возможной неэффективности). Функциям, определенным вне класса, также можно присвоить статус inline явно первым словом inline char & String:: Index(...){...}

Слайд 29





п2. Объект
Класс - это тип данных, а не объект 
Определение.Объект - это переменная, тип
которой – класс, и определяется он обычным
образом  
void main()
{ String s1, s2, *s3; // s1, s2 - объекты, 	             	                      // s3 - указатель на объект.
}
Говорят также, что s1, s2 - экземпляры класса.
Для каждого из них будет отведена память по
255 + 4 байтов.
Описание слайда:
п2. Объект Класс - это тип данных, а не объект Определение.Объект - это переменная, тип которой – класс, и определяется он обычным образом void main() { String s1, s2, *s3; // s1, s2 - объекты, // s3 - указатель на объект. } Говорят также, что s1, s2 - экземпляры класса. Для каждого из них будет отведена память по 255 + 4 байтов.

Слайд 30





Размещение в памяти
Описание слайда:
Размещение в памяти

Слайд 31





Работа с объектами
Описание слайда:
Работа с объектами

Слайд 32





Заменим маленькую ‘о’ на большую в объекте s1
s1[0] = ’O’;  
s1.line[0] = ‘O’;
Описание слайда:
Заменим маленькую ‘о’ на большую в объекте s1 s1[0] = ’O’; s1.line[0] = ‘O’;

Слайд 33


Объектно-ориентированное программирование в С+, слайд №33
Описание слайда:

Слайд 34


Объектно-ориентированное программирование в С+, слайд №34
Описание слайда:

Слайд 35





Динамический объект
Описание слайда:
Динамический объект



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