лаб5 отчет (Лабораторная работа №5)
Описание файла
Файл "лаб5 отчет" внутри архива находится в следующих папках: Лабораторная работа №5, 5. Документ из архива "Лабораторная работа №5", который расположен в категории "". Всё это находится в предмете "объектно-ориентированное программирование (ооп)" из 3 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "объектно-ориентированное программирование (ооп)" в общих файлах.
Онлайн просмотр документа "лаб5 отчет"
Текст из документа "лаб5 отчет"
Московский Государственный Технический Университет им. Н. Э. Баумана |
Лабораторная работа №5 по курсу Объектно-Ориентированное Программирование «Перегрузка функций и операций » |
Выполнил: Студент группы ИУ5-34 Белоус К.С. _____________________ Принял: Гапанюк Ю.Е. _____________________ |
Москва 2009 |
Цель работы
Целью лабораторной работы является изучение механизмов перегрузки функций и операций при объектно-ориентированном программировании на языке С++. Студенты должны освоить основные способы перегрузки и их особенности, продемонстрировать навыки и знания по перегрузке одноместных и двухместных операция и показать на примере простых собственных классов использование этих возможностей с помощью демонстрационного примера.
Порядок работы
Для выполнения лабораторной работы в полном объеме студенты должны выполнить следующие действия и пункты:
-
Перегрузку функций
-
Использование шаблонов функций
-
Задание параметров по умолчанию в прототипе и описании функции
-
Перегрузку одноместной операции внутреннюю (++)
-
Перегрузку двуместной операции внутреннюю (+)
-
Перегрузку одноместной операции внешнюю (++)
-
Перегрузку двуместной операции внешнюю (+)
-
Перегрузить операцию вывода переменной (<<) как внешнюю
-
Перегрузить операцию вывода переменной (<<) как внутреннюю
-
Создать и грамотно настроить проектный файл для программы ЛР
-
Отладить программу с помощью отладчика с просмотром объектов классов (в ДОС и WINDOWS)
-
Сформировать листинг программы и листинг результатов ее работы.
-
Продемонстрировать преподавателю работоспособную программу
-
Оформить отчет по ЛР.
-
Защитить ЛР.
Перечень ошибок
1. Синтаксические ошибки.
2. Ошибки перегрузки внешних и внутренних операций вывода.
Листинг программы
Файл lab5.cpp
#include <conio.h>
#include <iostream.h>
#include "lab52.cpp"
void main(void)
{ cout<<"Lab #5"<<endl;
cout<< "Made by student of group IU5-34, Belous K."<<endl;
cout << "\nПерегрузка функций:\n";
char ca = 'D', cb = 3;
long la = 9000000, lb = 5;
double da = 9.99, db = 2.98;
cout<<"char \t"<<ca<<" - "<<short(cb)<<" = "<<Dif(ca,cb)<<endl;
cout<<"long \t"<<la<<" - "<<lb<<" = "<<Dif(la,lb)<<endl;
cout<<"double \t"<<da<<" - "<<db<<" = "<<Dif(da,db)<<endl;
(void)getch();
cout << "\nДемонстрация шаблонов:\n";
cb = 'u';
cout<<"char \tmax( " <<ca<<", " <<cb<< " ) = "<<Max(ca,cb)<<endl;
cout<<"long \tmax( " <<la<< ", " <<lb<< " ) = "<<Max(la,lb)<<endl;
cout<<"double \tmax( " <<da<< ", " <<db<< " ) = "<<Max(da,db)<<endl;
(void)getch();
cout << "\nДемонстрация функции с параметрами по умолчанию:\n";
cb = 'H';
cout << "Summ(1,2,3) = " << Summ(1,2,3) << endl;
cout << "Summ(4,5) = " << Summ (4,5) << endl;
cout << "Summ(6) = " << Summ(6) << endl;
cout << "Summ() = " << Summ() << endl;
(void)getch();
cout<<"\nПерегрузка внутренних одноместной и двуместной операций (класс Test):\n";
Test B1(5.6), B2(1.2), B3(2.3);
cout << "B1 = " << B1 << endl;
cout << "B2 = " << B2 << endl;
cout << "++B2 = " << ++B2 << endl;
cout << "B3 = " << B3 << endl;
cout << "B3++ = " << B3++ << endl;
cout << "B1+B2 = " << B1 + B2 << endl;
cout << "B1+B2+B3 = " << B1 + B2 + B3 << endl;
cout<<"\nПерегрузка внешних одноместной и двуместной операций (класс Test1):\n";
Test1 C1(2.5), C2(0.5), C3(1.75);
cout << "C1 = " << C1 << endl;
cout << "C2 = " << C2 << endl;
cout << "++C2 = " << ++C2 << endl;
cout << "C3 = " << C3 << endl;
cout << "C3++ = " << C3++ << endl;
cout << "C3 = " << C3 << endl;
cout << "C1+C2 = " << C1 + C2 << endl;
cout << "C1+C2+C3 = " << C1 + C2 + C3 << endl;
}
Файл lab4-2.cpp
char Dif( char x, char y )
{return x - y;}
long Dif( long x, long y )
{return x - y;}
double Dif( double x, double y )
{return x - y;}
///////////////////////
template <class Type>
Type Max( Type x, Type y )
{return ( x >= y ) ? x : y;}
//////////////////////
int Summ( int x1 = 0, int x2 = 0, int x3 = 0 )
{return x1 + x2 + x3;}
//////////////////////
class Test
{private:
float x;
public:
Test(float i) : x(i) {};
Test(void) : x(0) {};
Test& operator ++ ()
{x++;
return *this;
}
Test operator + ( Test& a)
{Test T( x + a.x );
return T;
}
//Output operation overloading
friend ostream _FAR & operator << (ostream _FAR & out, Test& a )
{ return out << "'" << a.x << "'";
}
};
///////////////////////
class Test1
{private:
float x;
public:
Test1(float i) : x(i) {};
Test1(void) : x(0) {};
friend Test1 operator + ( Test1 &, Test1 & );
//Output operation overloading
friend ostream _FAR & operator << (ostream _FAR & out, Test1& a )
{return out << "'" << a.x << "'";}
Test1 operator ++ ()
{ x++;
return *this;
}
Test1 operator ++ (int)
{ Test1 A = *this;
operator++ ();
return A;
}
};
Test1 operator + ( Test1 &a, Test1 &b )
{ Test1 T( a.x + b.x );
return T;
}
Результаты работы программы