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


Объектно-ориентированный подход в программировании

Содержание

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

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

Слайд 1Информатика. Спецглавы
Направление: Инфокоммуникационные технологии и системы связи
2012 год
Лекция 2

Информатика. СпецглавыНаправление: Инфокоммуникационные технологии и системы связи2012 годЛекция 2

Слайд 2Объектно-ориентированный подход в программировании
Объектная декомпозиция задачи
Объект имеет:
имя
набор свойств
состояние
модель поведения
Объекты взаимодействуют

между собой с помощью своих интерфейсов

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

Слайд 3Понятия объектно-ориентированного программирования (ООП)
Объект (object)
Класс (class)
Свойство (property)
не изменяющиеся в течение

времени
изменяющиеся в течение времени (переменные состояния)
Метод (method)
Состояние (state)
переходы между состояниями
Сообщение

(message)
Понятия объектно-ориентированного программирования (ООП)Объект (object)Класс (class)Свойство (property)не изменяющиеся в течение времениизменяющиеся в течение времени (переменные состояния)Метод (method)Состояние

Слайд 4Принципы ООП
Инкапсуляция
Полиморфизм
Наследование

Принципы ООПИнкапсуляцияПолиморфизмНаследование

Слайд 5Инкапсуляция

Свойства
Методы
Другие объекты

ИнкапсуляцияСвойстваМетодыДругие объекты

Слайд 6Класс в C++
Объявление класса
class MyClass
{
public:
// доступно всем
private:
// доступно только данному

классу
protected:
//доступно классу и его наследникам
};

Создание объекта
MyClass MyObject;

Класс в C++Объявление классаclass MyClass{public:// доступно всемprivate:// доступно только данному классу protected://доступно классу и его наследникам};Создание объектаMyClass

Слайд 7Объявление класса
class Person
{
public:
Person();

std::string GetName();
void SetName(std::string val);

int GetYear();
void SetYear(int val);
private:
std::string Name;
int Year;
};
Объявление классаclass Person{  public:    Person();    std::string GetName();

Слайд 8Реализация функций-членов класса
Person::Person()
{
//Конструктор по умолчанию
}
void Person::SetName(std::string Nval)
{

Name = Nval;
}
void Person::SetYear(int val)
{
Year = val;
}

Реализация функций-членов классаPerson::Person(){  //Конструктор по умолчанию}void Person::SetName(std::string Nval){  Name = Nval;}void Person::SetYear(int val){  Year

Слайд 9Реализация функций-членов класса (2)
std::string Person::GetName()
{
return Name;
}

int

Person::GetYear()
{
return Year;
}

Реализация функций-членов класса (2)std::string Person::GetName(){    return Name;}int Person::GetYear(){    return Year;}

Слайд 10Программа с использованием объекта
int main(int argc, char** argv)
{
Person

P; // Вызов конструктора по умолчанию
P.SetName("Anita");
P.SetYear(1978);

cout << P.GetName() <<" "<< P.GetYear()<< endl;
return 0;
}
Программа с использованием объектаint main(int argc, char** argv){  Person P; // Вызов конструктора по умолчанию

Слайд 11Конструирование класса, моделирующего работу устройства
Переменные, определяющие состояние устройства:
наличие электропитания (да,нет)
наличие

бумаги (да, нет)
выполнение задания на печать (да, нет)
Методы:
включить/выключить
добавить бумагу
убрать бумагу
отправить

задание на печать
остановить печать
просмотреть текущее состояние принтера

Устройство: принтер

Конструирование класса, моделирующего работу устройстваПеременные, определяющие состояние устройства:наличие электропитания (да,нет)наличие бумаги (да, нет)выполнение задания на печать (да,

Слайд 12Таблица состояний принтера

Таблица состояний принтера

Слайд 13Объявление класса Printer (Printer.h)
class Printer
{
public:

Printer();
virtual ~Printer();
void

on_off();
void set_print();
void stop_print();
void paper_out();
void put_paper();
void show();
private:
int is_on;
int is_print;
int has_paper;
};
Объявление класса Printer (Printer.h) class Printer{ public:    Printer();    virtual ~Printer();

Слайд 14Реализация методов класса Printer (1) (Printer.cpp)
#include "Printer.h"
#include

using namespace std;

Printer::Printer():

is_on(0), is_print(0), has_paper(0)
{

}

Printer::~Printer()
{

}

Реализация методов класса Printer (1) (Printer.cpp)#include

Слайд 15Реализация методов класса Printer (2)
void Printer::on_off()
{
is_on = !is_on;

is_print = 0;
}
void Printer::set_print()
{
if (is_on&&has_paper) is_print=1;
}
void Printer::stop_print()
{

is_print=0;
}
Реализация методов класса Printer (2)void Printer::on_off(){  is_on = !is_on;  is_print = 0;}void Printer::set_print(){  if

Слайд 16Реализация методов класса Printer (3)
void Printer::paper_out()
{
has_paper=0; is_print=0;
}
void Printer::put_paper()
{

has_paper=1;
}
void Printer::show()
{
if(!is_on) cout

else
if(!has_paper) cout <<"No paper!" << endl;
else
if (is_print) cout <<"Printing"< else cout << "Ready!" <}
Реализация методов класса Printer (3)void Printer::paper_out(){  has_paper=0; is_print=0;}void Printer::put_paper(){  has_paper=1;}void Printer::show(){  if(!is_on) cout

Слайд 17Главная функция (main.cpp)
#include
#include "Printer.h"

using namespace std;

int main()
{
Printer

Pr;
int command, end=1;
Pr.show();

Главная функция (main.cpp)#include #include

Слайд 18Главная функция (продолжение)
while (end)
{
cout

' ;
cin

>> command;
switch (command)
{
case 1: Pr.on_off(); Pr.show(); break;
case 2: Pr.set_print(); Pr.show(); break;
case 3: Pr.stop_print(); Pr.show(); break;
case 4: Pr.paper_out(); Pr.show(); break;
case 5: Pr.put_paper(); Pr.show();break;
default: end=0;
}
}
return 0;
}
Главная функция (продолжение)  while (end)  {  cout ' ;    cin >>

Слайд 19Диаграмма файлов (компонентов) проекта


Диаграмма файлов (компонентов) проекта

Слайд 20Перегрузка функций
Пример – стандартная математическая функция возведения в степень pow()

long

double pow(long double,int);
long double pow(long double,long double);
float pow(float,int);
float pow(float,float);
double pow(double,int);
double

pow(double,double);
Перегрузка функцийПример – стандартная математическая функция возведения в степень pow()long double pow(long double,int);long double pow(long double,long double);float

Слайд 21Перегрузка методов класса
Пример – класс «Графический редактор»
Объявление класса
class Draw
{
char* message;
public:
Draw

();
~Draw ();
void Paint (); // Рисует текст
void Paint (int, int,int,int);

// Рисует
// прямоугольник
void Paint (int, int, int); // Рисует окружность
} ;

Перегрузка методов классаПример – класс «Графический редактор»Объявление классаclass Draw{char* message;public:Draw ();~Draw ();void Paint (); // Рисует текстvoid

Слайд 22Пример – класс «Графический редактор»
Реализация методов (1)
Draw::Draw ()
{
message = new

char [10];
strcpy (message, “text”);
}
Draw::~Draw ()
{
delete[ ] message;
// message = NULL;
}


Пример – класс «Графический редактор»Реализация методов (1)Draw::Draw (){message = new char [10];strcpy (message, “text”);}Draw::~Draw (){delete[ ] message;//

Слайд 23Пример – класс «Графический редактор»

Реализация методов (2)

void Draw::Paint ()
{
std::cout

message

int cy2)
{
std::cout << “Рисуем прямоугольник” << std::endl;
}
void Draw::Paint (int cx1, int cy1, int r)
{
std::cout << “Рисуем окружность” << std::endl;
}
Пример – класс «Графический редактор»Реализация методов (2)void Draw::Paint (){std::cout

Слайд 24Пример – класс «Графический редактор»
Функция main ()

int main ()
{
Draw draw;
draw.Paint

(); // Рисует текст
draw.Paint (1,1,10,15); // Прямоугольник
draw.Paint (5,5,10); // Окружность
return

0;
}
Пример – класс «Графический редактор»Функция main ()int main (){Draw draw;draw.Paint (); // Рисует текстdraw.Paint (1,1,10,15); // Прямоугольникdraw.Paint

Слайд 25Виды конструкторов
Конструктор по умолчанию
Конструктор с параметрами
Копирующий конструктор
class Person
{
char* Name;
int Year;
public:
Person

(); // Конструктор по умолчанию
Person (char*, int); // Конструктор
// с

параметрами
Person (const Person&); // Копирующий
// конструктор
~Person (); // Деструктор
// Другие методы
} ;
Виды конструкторовКонструктор по умолчаниюКонструктор с параметрамиКопирующий конструкторclass Person{char* Name;int Year;public:Person (); // Конструктор по умолчаниюPerson (char*, int);

Слайд 26Конструктор по умолчанию
Реализация
Person::Person ()
{
}
или
Person::Person ()
{
Name = new char[7];
strcpy(Name,”Noname”);
Year = 0;
}
Вызов

конструктора по умолчанию
Person MyPerson;

Конструктор по умолчаниюРеализацияPerson::Person (){}илиPerson::Person (){Name = new char[7];strcpy(Name,”Noname”);Year = 0;}Вызов конструктора по умолчаниюPerson MyPerson;

Слайд 27Конструктор с параметрами
Реализация

Person::Person (char* N, int Y)
{
Name = new char[strlen(N)+1];
strcpy

(Name, N);
Year = Y;
}

Вызов конструктора с параметрами
Person MyPerson(“Ann”,1990);

Конструктор с параметрамиРеализацияPerson::Person (char* N, int Y){Name = new char[strlen(N)+1];strcpy (Name, N);Year = Y;}Вызов конструктора с параметрамиPerson

Слайд 28Конструктор с параметрами по умолчанию
Реализация конструктора
Person::Person (
char* N=“Noname”, int Y=0)
{
Name

= new char[strlen(N)+1];
strcpy (Name, N);
Year = Y;
}
Вызов конструктора
Person MyPerson (“Ann”,1990);

// или
Person MyPerson;
Конструктор с параметрами по умолчаниюРеализация конструктораPerson::Person (char* N=“Noname”, int Y=0){Name = new char[strlen(N)+1];strcpy (Name, N);Year = Y;}Вызов

Слайд 29Конструктор со списком инициализации
Реализация конструктора
Person::Person (
char* N, int Y): Name(new

char[strlen(N)+1]),Year(Y)
{ //Если свойство Name - указатель
strcpy(Name,N);
}

Вызов конструктора
Person MyPerson (“Ann”,1990);

Конструктор со списком инициализацииРеализация конструктораPerson::Person (char* N, int Y): Name(new char[strlen(N)+1]),Year(Y){ //Если свойство Name - указательstrcpy(Name,N);}Вызов конструктораPerson

Слайд 30Копирующий конструктор
Реализация
Person::Person (const Person& P)
{
Name = new char[strlen(P.Name)+1];
strcpy (Name, P.Name);
Year

= P.Year;
}
Вызов копирующего конструктора
Person MyPerson(“Ann”,1990);
Person NewPerson(MyPerson);

Копирующий конструкторРеализацияPerson::Person (const Person& P){Name = new char[strlen(P.Name)+1];strcpy (Name, P.Name);Year = P.Year;}Вызов копирующего конструктораPerson MyPerson(“Ann”,1990);Person NewPerson(MyPerson);

Слайд 31Деструктор
Реализация
// по умолчанию
Person::~Person ()
{
}
// для рассматриваемого примера
Person::~Person ()
{

delete[ ] Name;
}

Вызов деструктора – явный вызов не требуется.

ДеструкторРеализация // по умолчаниюPerson::~Person (){}// для рассматриваемого примераPerson::~Person (){  delete[ ] Name;}Вызов деструктора – явный вызов

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

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

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

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

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


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

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