Конструкторы и деструкторы

Автор работы: Пользователь скрыл имя, 22 Ноября 2011 в 22:05, курсовая работа

Краткое описание

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

Содержание работы

Введение 2 стр.
Конструкторы в С++ 4 стр.
Создание простого конструктора 4 стр.
Представление о конструкторе 7 стр.
Конструкторы и параметры по умолчанию 7 стр.
Перегрузка конструкторов 8 стр.
Деструкторы в С++ 11 стр.
Представление о деструкторе 11 стр.
Деструкторы 15 стр.
Заключение 15 стр.
Практическая часть 16 стр.
Список использованой литературы 19 .стр.

Содержимое работы - 1 файл

курсовая по ООП.docx

— 36.22 Кб (Скачать файл)

     Деструктор  автоматически запускается каждый раз, когда программа уничтожает объект. Чтобы создать такие динамические списки, программа для хранения объектов распределяет память динамически. К настоящему моменту можно создавать и уничтожать объекты в процессе выполнения программы. В таких случаях имеет смысл применение деструкторов.

     Каждая  из созданных до сих пор программ создавала объекты в самом  начале своего выполнения, просто объявляя их. При завершении программ C++ уничтожал  объекты. Если определяется деструктор внутри своей программы, C++ будет  автоматически вызывать деструктор для каждого объекта, когда программа  завершается (т.е. когда объекты уничтожаются). Подобно конструктору, деструктор имеет  такое же имя, как и класс объекта. Однако в случае деструктора предваряется его имя символом тильды (~), как  показано ниже:

~class_name (void) //----------->указывает деструктор

{  
// Операторы деструктора  
}

     В отличие от конструктора нельзя передавать параметры деструктору. Следующая программа DESTRUCT.CPP определяет деструктор для класса employee:

void employee::-employee(void)

{  
   cout << "Уничтожение объекта для " << name << endl;  
}

     В данном случае деструктор просто выводит  на экран сообщение о том, что C++ уничтожает объект. Когда программа  завершается, C++ автоматически вызывает деструктор для каждого объекта. Ниже приведена реализация программы DESTRUCT.CPP:

#include <iostream.h>

#include <string.h>

class employee

{  
public:  
   employee(char *, long, float);  
   ~employee(void);  
   void show_employee(void);  
   int change_salary(float);  
   long get_id(void);  
private:  
   char name [64] ;  
   long employee_id;  
   float salary;  
};

employee::employee(char *name, long employee_id, float salary)

{  
   strcpy(employee::name, name) ;  
   employee::employee_id = employee_id;  
   if (salary < 50000.0) employee::salary = salary;  
   else // Недопустимый оклад  
   employee::salary в 0.0;  
}

void employee::-employee(void)

{  
   cout << "Уничтожение объекта для " << name << endl;  
}

void employee::show_employee(void)

{  
   cout << "Служащий: " << name << endl;  
   cout << "Номер служащего: " << employee_id << endl;  
   cout << "Оклад: " << salary << endl;  
}

void main(void)

{  
   employee worker("Happy Jamsa", 101, 10101.0);  
   worker.show_employee();  
}

     Если  откомпилировать и запустить  эту программу, на экране появится следующий  вывод:

С:\> DESTRUCT <ENTER>

Служащий: Happy Jamsa

Номер служащего: 101

Оклад: 10101

Уничтожение объекта для Happy Jamsa

Программа автоматически вызывает деструктор, без какого-либо явного вызова функции  деструктора. 

    1. Деструкторы

     Деструктор  представляет собой функцию, которую C++ автоматически запускает, когда  он или программа уничтожает объект. Деструктор имеет такое же имя, как  и класс объекта; однако предваряется имя деструктора символом тильды (~), например ~employee. В  программе определяется деструктор точно так же, как и любой другой метод класса. 
 
 

Заключение

Конструкторы  и деструкторы представляют собой  специальные функции класса, которые  программа автоматически вызывает при создании или уничтожении  объекта. Большинство программ используют конструктор для инициализации  элементов данных класса. Простые  программы, создаваемые сейчас, вероятно, не потребуют использования деструктора. Другими словами, можно переопределить символ плюс таким образом, что он будет добавлять содержимое одной  строки к другой. Тип (например, char, float и int) определяет набор значений, которые может хранить переменная, и набор операций, которые программы могут выполнять над этой переменной. Когда определяется класс, по существу определяется тип. C++ позволяет указать, как ведут себя операторы с данным типом . 
 

  1. Практическая  часть

Условие задачи:   Написать программу, которая выводит на экран изображение работающего светофора. Рекомендуемый вид светофора и алгоритм его работы приведены ниже: 

            красный
 
            красный и  желтый
 
            зеленый
 
            мигающий зеленый

 
 
 
 
 

Программа на С++

// Светофор

#include <stdio.h>

# include <graphics.h>

include <conio.h>

#include <dos.h> 
ttdefine PATHTODRIVER "c:\\borlandc\\bgi\\" 
// рисует круг заданного цвета 
void krug(int x,int у, int r, int fc, int be) 
( 
// x, у, г - координаты центра и радиус // fc, be - цвет круга и окантовки setfillstyle(SOLID_FILL,fc, 205); 
piesIice (х, у, 0, 360, г);

setcolor(be);

circle(х,у,г); 
void main(void) 
{ 
int gdriver = DETECT; // драйвер 
int gmode; // режим 
int errorcode; // код ошибки 
initgraph(Sgdriver, Sgrnode, PATHTODRIVER); errorcode = graphresult(); 
if (errorcode != grOk) // ошибка инициализации 
// графического режима ' { 
printf("Ошибка: %d\n", errorcode); 
puts("Для завершения программы нажмите <Enter>") 
getch(); 
outtextxy(10,10,"Соблюдайте правила уличного движения!") 
rectangle (88,88,112,152); 
// Горит красный свет 
krug(100,100,10,RED,WHITE); 
krug(100, 120, 10, LIGHTGRAY, WHITE) ; 
krug(100, 140, 10, LIGHTGRAY, WHITE) ; 
for (int i = 1; i <= 3;i++) 
// Здесь горит красный 
delay(3000); // задержка 3 сек 
krug(100,120,10,YELLOW,WHITE); // Включить желтый 
delay(1000); 
krug(100,100,10,LIGHTGRAY,WHITE); // Выключить красный 
krugd(100, 120,10, LIGHTGRAY,WHITE) ; // Выключить желтый 
krugd(100, 140,10,GREEN,WHITE) ; // Включить зеленый 
delay(2000); 
// Мигающий зеленый сигнал 
for (int j = 1; j <= 5; j++) // мигает 5 раз  
delay(500); 
krug(100,140,10,GREEN,WHITE); 
delay(500); 
krug(100,14 0,10,LIGHTGRAY,WHITE) 
krug(100,120,10,YELLOW,WHITE); 
delay(1500); 
krug{100,120,10,LIGHTGRAY,WHITE); 
krug(100,100,10,RED,WHITE); 
// Включить // зеленый 
;// Выключить // зеленый 
// Включить // желтый 
// Выключить // желтый // Включить // красный 
outtextxy(10,25,"Нажмите <Enter>!"); 
getch(); 
closegraph(); // выход из графического 
режима 
 

     Список  использованой литературы

  1. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. - http://www.nexus.odessa.ua/files/books/booch.
  2. .-К.: «Диалектика», 1996. – 448 с.,ил.  Намир К.  Шаммас.
  3. М., Конкорд, 1992 г., 519 с., ил.Гради Буч.
  4. – М: Аст – Пресс книга: Инфорком – Пресс, 2001. – 368 с.

Информация о работе Конструкторы и деструкторы