Автор работы: Пользователь скрыл имя, 10 Апреля 2012 в 21:50, курсовая работа
Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент». Создать массив объектов базового класса и заполнить этот массив объектами. Показать отдельно студентов и школьников.
Академия управления при Президенте Республики Беларусь
Факультет инновационной подготовки
Кафедра управления
информационными ресурсами
Контрольная работа по предмету:
Технологии
программирования
Выполнил:
Студент 3 курса
Заочной формы обучения
Арыков Виталий
Зачетная книжка №08431
Вариант №2
Минск 2011
Задача
№1 на тему «Классы.
Наследование»
Создать базовый
класс «Учащийся» и производные
классы «Школьник» и «Студент». Создать
массив объектов базового класса и
заполнить этот массив объектами. Показать
отдельно студентов и школьников.
Краткие теоретические сведения:
Классы С++ предусматривают создание расширений системы предопределенных типов. Каждый тип класса представляет собой уникальное множество объектов и операций (правил), а также преобразований, используемых для создания, манипулирования и уничтожения таких объектов. Могут быть объявлены производные классы, наследующие компоненты одного или более базовых (порождающих) классов. Класс в языке С++ задается с помощью ключевого слова class, за которым следует его имя и в фигурных скобках {} дается его описание.
Наследование – это механизм создания нового класса на основе ранее созданного. Наследование имеет смысл, если множество разнородных объектов имеют общие характеристики или функции.
В С++ виртуальные
функции позволяют использовать
полиморфизм классов. Виртуальные функции
объявляются с помощью ключевого слова
virtual в базовом классе. При этом для базового
класса и для всех производных создаётся
таблица указателей на функции - виртуальная
таблица методов/функций.
Блок-Схема
-
+
Код
программы:
#include "stdafx.h"
#include "iostream"
using namespace std;
class Study
{
protected:
char surname[40];
int age;
public:
void getdata()
{
cout<<"Surname is "; cin>>surname;
cout<<"How old is he(she)?"; cin>>age;
}
void show()
{ cout<<"Surname : "<<surname<<endl;
cout<<age<<" years old"<<endl;
}
virtual void data()=0;
virtual void showit()=0;
};
////////////////
class Student : public Study
{
private:
int kurs;
public:
void data()
{
Study::getdata();
cout<<"Kakoi kurs? "; cin>>kurs;
}
void showit()
{
cout<<"Student: "<<endl;
Study::show();
cout<<" "<<kurs<<" kours"<<endl;
}
};
/////////////////
class School : public Study
{
private:
int klass;
public:
void data()
{
Study::getdata();
cout<<"Kakoi klass? "; cin>>klass;
}
void showit()
{
cout<<"
Study::show();
cout<<" "<<klass<<" klass"<<endl;
}
};
int main(int argc, char* argv[])
{
Study* std[150];
int n=0;
char choice;
do
{ cout<<"From College or School? (input 'c' for college or 's' for school)"<<endl;
cin>>choice;
if(choice=='c' || choice=='s')
{ if(choice=='c')
std[n]=new Student;
else
std[n]=new School;
std[n++]->
cout<<"
cin>>
}
else cout<<"Incorrect!"<<endl;
}
while (choice=='y');
for(int j=0; j<n; j++)
{
std[j]->
cout<<"*****
}
system("
return 0;
}
Задача №2 на тему «Перегрузка»
Написать программу, которая использует перегрузку методов класса:
Для целых
данных вычисляется квадрат числа,
для действительных – косинус
угла.
Краткие теоретические сведения:
При определении
функций в своих программах мы
должны указать тип возвращаемого функцией
значения, а также количество параметров
и тип каждого из них. C++ позволяет нам определять
несколько функций с одним и тем же именем.
В процессе компиляции C++ принимает во
внимание количество аргументов, используемых
каждой функцией, и затем вызывает именно
требуемую функцию. Предоставление компилятору
выбора среди нескольких функций называется
перегрузкой.
Блок-Схема:
Код программы:
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
class Over
{
public:
int pfun(int a)
{
cout<<"x= ";
return (a*a);
}
double pfun(double a)
{
cout<<"x= ";
return (cos (a));
}
};
void main()
{
Over x;
cout<<x.pfun(5)<<endl;
cout<<x.pfun(3.1416*2)<<endl;/
cout<<x.pfun(11)<<endl;
cout<<x.pfun(0.0)<<endl;//esli prosto 0 to otvet 0!
cout<<x.pfun(3.1416/3)<<endl;/
getchar();
}
Задание №3 на тему «Дружественность»
Имеется класс фигуры,
содержащий информацию о ее параметрах.
Вычислить с помощью
.
Краткие теоретические сведения:
В некоторых случаях необходимо организовать взаимодействие нескольких объектов разных классов, и функция, обеспечивающая взаимодействие, должна иметь доступ к частным компонентам одновременно нескольких объектов. Объявить функцию методом одновременно нескольких классов невозможно, поэтому в стандарте языка С++ предусмотрена возможность объявлять внешнюю по отношению к классу функцию дружественной данному классу. Для этого необходимо в теле класса описать некоторую внешнюю по отношению к классу функцию с использованием ключевого слова friend.
Дружественная
функция становится расширением
интерфейса класса, и этот интерфейс
реализует взаимодействие объекта
с другими объектами программы.
Блок-Схема:
Код
программы:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class Vys ;
class Shir {
private :
double AB;
public :
Shir() : AB(0.0)
{}
Shir(double ab)
{
AB=ab;
}
friend double frifunc (Shir, Vys);
};
class Vys
{
private :
double BC;
public :
Vys() :BC(0.0)
{}
Vys(double bc) : BC(bc)
{
BC=bc;
}
friend double frifunc (Shir,
Vys);
};
double frifunc (Shir a,Vys b)
{
cout<<"P= ";double P;
P=2*(a.AB+b.BC);
cout<<P<<endl;
cout<<"S= ";
return (a.AB*b.BC);
}
int main()
{
Shir ss(5);
Vys hh(4);
cout<<frifunc (ss, hh)<<endl;
getchar();
return 0;
}