Вы находитесь на странице: 1из 13

Оглавление

Вступление................................................................................................................................3
1. Описание созданных классов для программы................................................................4
2. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЮ..............................................................................8
3. ЗАКЛЮЧЕНИЕ..................................................................................................................9

1
Вступление

Многие объекты в реальной жизни имеют общие атрибуты и поведение —


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

В данной курсовой работе речь пойдет о создании программы использующей


наследование на примере «Военнообязанный».

2
1. Описание созданных классов для программы
Класс Объект
Класс является абстрактным и содержит только виртуальную функцию
virtual void show()const=0;

Класс Военнообязанный
Класс наследуется от класса Объект и содержит защищённые переменные
возраст, ФИО и дата рождения:
int vozrast;//возраст
char fio[20];//фамилия имя отчество
char dataRojd[15];//форма передачи
Класс содержит следующие открытые функции: возвратить возраст, установить
возраст, возвратить ФИО, установить ФИО, возвратить дату рождения, установить
дату рождения и виртуальную функцию show которая выводит возраст, ФИО и дату
рождения на экран:
//методы доступа к защищёным данным
int getVozrast()const{return vozrast;}
char* getFIO()const
{return (char*)fio;}
char* getDataRojd()const{return (char*)dataRojd;}
void setVozrast(int Vozrast){vozrast=Vozrast;}
void setFIO(const char* FIO){strcpy(fio,FIO);}
void setDataRojd(const char* DataRojd){strcpy(dataRojd,DataRojd);}

virtual void show()const


{//вывод информации
cout<<"[VoyenoObyazaniy] vozrast: "<<vozrast<<" fio: "<<fio<<"
dataRojd: "<<dataRojd<<'\n';
}
Класс имеет конструкторы без параметров и конструктор с параметрами возраст,
ФИО и дата рождения.
Конструктор без параметров устанавливает возраст=0.
VoyenoObyazaniy()//конструктор без параметров
{
vozrast=0;
}

VoyenoObyazaniy(int Vozrast,const char* FIO,const char* DataRojd)


{//конструктор с параметрами
vozrast=Vozrast;
strcpy(fio,FIO);
strcpy(dataRojd,DataRojd);
}

Класс Солдат
Наследуется от класса Военнообязанный. Содержит защищенные переменные
годы службы и род войск.
int godiSlujbi;//годы службы
char rodVoysk[20];//род войск

3
Класс содержит следующие открытые функции: возвратить годы службы,
установить годы службы, возвратить род войск, установить род войск и виртуальную
функцию show, которая сначала обращается к родительской функции вывода
информации, а затем выводит годы службы и род войск на экран.
//функции доступа
int getGodiSlujbi()const {return godiSlujbi;};
void setGodiSlujbi(int GodiSlujbi){godiSlujbi=GodiSlujbi;}
char* getRodVoysk()const{return (char*)rodVoysk;}
void setRodVoysk(const char* RodVoysk){strcpy(rodVoysk,RodVoysk);}

virtual void show()const


{//вывод информации
VoyenoObyazaniy::show();//обращение к функции вывода
родительского класа
cout<<"[Soldat] godiSlujbi: "<<godiSlujbi<<" rodVoysk:
"<<rodVoysk<<'\n';
}
Класс имеет два конструктора: конструктор без параметров, который сначала
обращается к конструктору без параметров родительского класса Военнообязанный, а
затем устанавливает годы службы = 0; конструктор с параметрами годы службы и род
войск, возраст, ФИО и дата рождения, обращается к конструктору родительского
класса с параметрами род войск, возраст, ФИО и дата рождения.
Soldat():VoyenoObyazaniy()
{//конструктор без параметров
godiSlujbi=0;
}

Soldat(int GodiSlujbi,const char* RodVoysk,int Vozrast,const char*


FIO,const char* DataRojd)
:VoyenoObyazaniy(Vozrast,FIO,DataRojd)
{//конструктор с параметрами
godiSlujbi=GodiSlujbi;
strcpy(rodVoysk,RodVoysk);
}

Класс Офицер
Наследуется от класса Солдат. Содержит защищенные переменные номер
батальона, номер полка и звание.
int batalion;//батальон
int polk;//номер полка
char zvaniye[20];//звание
Класс содержит следующие открытые функции: возвратить номер батальона,
установить номер батальона, возвратить номер полка, установить номер полка,
установить звание, возвратить звание и виртуальную функцию show, которая сначала
обращается к родительской функции вывода информации, а затем выводит на экран
значения переменных номер батальона, номер полка и звание:
//функции доступа к защищёным переменным
void setBatalion(int Batalion){batalion=Batalion;}
void setPolk(int Polk){polk=Polk;}

4
void setZvaniye(const char* Zvaniye){strcpy(zvaniye,Zvaniye);}
int getBatalion()const{return batalion;}
int getPolk()const{return polk;}
char* getZvaniye()const{return (char*)zvaniye;}

virtual void show()const


{//функция вывода информации
Soldat::show();//обращение к функции вывода родительского класа
cout<<"[Oficer] batalion: "<<batalion<<" polk: "<<polk<<"
zvaniye: "<<zvaniye<<'\n';
}
Класс имеет два конструктора: конструктор без параметров, который сначала
обращается к конструктору без параметров, а затем устанавливает номер батальона и
номер полка = 0; конструктор с параметрами годы службы и род войск, возраст, ФИО и
дата рождения, обращается к конструктору родительского класса с параметрами номер
батальона, номер полка, звание, род войск, возраст, ФИО и дата рождения. Сначала
конструктор обращается к конструктору базового класса род войск, возраст, ФИО и
дата рождения, а затем устанавливает значения переменных номер батальона, номер
полка, звание:
Oficer():Soldat()
{//конструктор без параметров
batalion=0;
polk=0;
}

Oficer(int Batalion,int Polk,const char* Zvaniye,int GodiSlujbi,const


char* RodVoysk,int Vozrast,const char* FIO,const char* DataRojd)
:Soldat(GodiSlujbi,RodVoysk,Vozrast,FIO,DataRojd)
{//конструктор с параметрами
batalion=Batalion;
polk=Polk;
strcpy(zvaniye,Zvaniye);
}

Класс Командир роты


Наследуется от класса Офицер. Содержит закрытые награды, количество солдат в
роте, номер роты:
char nagradi[60];//награды
int kolSoldatRoti;//количество солдат в роте
int nomerRoti;//номер роты
Класс содержит функции установки и возврата значений этих переменных, а
также функцию show, которая сначала обращается к функции show родительского
класса, а затем выводит на экран значения закрытых переменных:
//функции доступа к закрытым переменным
void setNagradi(const char* Nagradi){strcpy(nagradi,Nagradi);}
void setKolSoldatRoti(int KolSoldatRoti)
{kolSoldatRoti=KolSoldatRoti;}
void setNomerRoti(int NomerRoti){nomerRoti=NomerRoti;}

5
char* getNagradi() const{return (char*)nagradi;}
int getKolSoldatRoti() const{return kolSoldatRoti;}
int getNomerRoti()const{return nomerRoti;}

virtual void show()const


{//функция вывода инфы
Oficer::show();//обращение к функции вывода родительского класа
cout<<"[KomRoti] nomerRoti: "<<nomerRoti<<" kolSoldatRoti:
"<<kolSoldatRoti<<" nagradi: "<<nagradi<<'\n';
}
В конструктор с параметрами передаются все значения параметров, указанных в
конструкторе родительского класса и параметры награды, количество солдат в роте,
номер роты. Конструктор сначала обращается к конструктору родительского класса,
после чего устанавливает значения переменных награды, количество солдат в роте,
номер роты:
KomRoti():Oficer()//обращение к конструктору родительского класса
{//конструктор без параметров
kolSoldatRoti=0;
nomerRoti=0;
}

KomRoti(int NomerRoti,const char* Nagradi,int KolSoldatRoti,int


Batalion,int Polk,const char* Zvaniye,int GodiSlujbi,const char*
RodVoysk,int Vozrast,const char* FIO,const char* DataRojd)
:Oficer(Batalion,Polk,Zvaniye,GodiSlujbi,RodVoysk,Vozrast,FIO,D
ataRojd)
{//конструктор с параметрами
kolSoldatRoti=KolSoldatRoti;
nomerRoti=NomerRoti;
strcpy(nagradi,Nagradi);
kolSoldatRoti=KolSoldatRoti;
}

6
2. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЮ

Программа является консольным приложением, соответственно ее выполнение


происходит в консольном окне.
После запуска программы будет выведен класс, который вы заполняете и первый
параметр. По мере заполнения параметров будут появляться новые параметры и
классы.
По окончанию заполнения данных программа выведет результат

7
3. ЗАКЛЮЧЕНИЕ

В результате выполнения данной курсовой работы был получен программный


продукт, названный «Наследование военнообязанных».
Были созданы иерархии классов с использованием наследования, показано
использование абстрактных классов и виртуальных функций

При разработке данного программного продукта было учтено следующее:


1. Проверка вводимой информации.
2. Использование наследования.
3. По окончанию работы пользователь должен увидеть результат отработки
программы.
4. Работоспособность приложения осуществляется только в среде Windows. С
установленным Microsoft NET Framework версии не ниже 4.0
5. Операционная система – Windows NT / 2000 / XP
6. Минимальные требования: процессор с тактовой частотой 500 МГц, 128 Мб
ОЗУ, монитор с разрешением 800x600, доступное дисковое пространство не менее 30
мб.

7. Рекомендуемые требования: процессор с тактовой частотой 1 ГГц или выше,


256 Мб ОЗУ или больше, монитор с разрешением 1024x768, доступное дисковое
пространство не менее 4 гб.

8
ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА

Учебники:
1. Джесс Либерти. «C++ за 21 день» - 2001г.
2. Пахомов Б. «C/C++ и MS Visual C++ 2008 для начинающих» - 2009г.
3. Джефф Элджер – «C++. Библиотека пользователя». - 2000г.

9
Приложение 1

Код программы
#include "iostream"
#include <Windows.h>
#include <string.h>
using namespace std;

class OBJECT
{//абстрактный класс
public:
OBJECT(){}
virtual void show()const=0;//метод вывода
};

class VoyenoObyazaniy:public OBJECT


{
protected:
int vozrast;//возраст
char fio[20];//фамилия имя отчество
char dataRojd[15];//форма передачи
public:
VoyenoObyazaniy()//конструктор без параметров
{
vozrast=0;
}

VoyenoObyazaniy(int Vozrast,const char* FIO,const char* DataRojd)


{//конструктор с параметрами
vozrast=Vozrast;
strcpy(fio,FIO);
strcpy(dataRojd,DataRojd);
}

~VoyenoObyazaniy()
{//диструктор
}

//методы доступа к защищёным данным


int getVozrast()const{return vozrast;}
char* getFIO()const
{return (char*)fio;}
char* getDataRojd()const{return (char*)dataRojd;}
void setVozrast(int Vozrast){vozrast=Vozrast;}
void setFIO(const char* FIO){strcpy(fio,FIO);}
void setDataRojd(const char* DataRojd){strcpy(dataRojd,DataRojd);}

virtual void show()const


{//вывод информации
cout<<"[VoyenoObyazaniy] vozrast: "<<vozrast<<" fio: "<<fio<<"
dataRojd: "<<dataRojd<<'\n';
}
};

class Soldat:public VoyenoObyazaniy


{
protected:
int godiSlujbi;//годы службы
char rodVoysk[20];//род войск
public:
Soldat():VoyenoObyazaniy()
{//конструктор без параметров

10
godiSlujbi=0;
}

Soldat(int GodiSlujbi,const char* RodVoysk,int Vozrast,const char*


FIO,const char* DataRojd)
:VoyenoObyazaniy(Vozrast,FIO,DataRojd)
{//конструктор с параметрами
godiSlujbi=GodiSlujbi;
strcpy(rodVoysk,RodVoysk);
}

~Soldat()
{//диструктор
}
//функции доступа
int getGodiSlujbi()const {return godiSlujbi;};
void setGodiSlujbi(int GodiSlujbi){godiSlujbi=GodiSlujbi;}
char* getRodVoysk()const{return (char*)rodVoysk;}
void setRodVoysk(const char* RodVoysk){strcpy(rodVoysk,RodVoysk);}

virtual void show()const


{//вывод информации
VoyenoObyazaniy::show();//обращение к функции вывода
родительского класа
cout<<"[Soldat] godiSlujbi: "<<godiSlujbi<<" rodVoysk:
"<<rodVoysk<<'\n';
}
};

class Oficer:public Soldat


{//класс телефон наследуется от класса солдат
protected:
int batalion;//батальон
int polk;//номер полка
char zvaniye[20];//звание

public:
Oficer():Soldat()
{//конструктор без параметров
batalion=0;
polk=0;
}

Oficer(int Batalion,int Polk,const char* Zvaniye,int GodiSlujbi,const


char* RodVoysk,int Vozrast,const char* FIO,const char* DataRojd)
:Soldat(GodiSlujbi,RodVoysk,Vozrast,FIO,DataRojd)
{//конструктор с параметрами
batalion=Batalion;
polk=Polk;
strcpy(zvaniye,Zvaniye);
}

~Oficer()
{//диструктор
}
//функции доступа к защищёным переменным
void setBatalion(int Batalion){batalion=Batalion;}
void setPolk(int Polk){polk=Polk;}
void setZvaniye(const char* Zvaniye){strcpy(zvaniye,Zvaniye);}
int getBatalion()const{return batalion;}
int getPolk()const{return polk;}
char* getZvaniye()const{return (char*)zvaniye;}

virtual void show()const

11
{//функция вывода информации
Soldat::show();//обращение к функции вывода родительского класа
cout<<"[Oficer] batalion: "<<batalion<<" polk: "<<polk<<"
zvaniye: "<<zvaniye<<'\n';
}
};

class KomRoti:public Oficer


{
private:
char nagradi[60];//награды
int kolSoldatRoti;//количество солдат в роте
int nomerRoti;//номер роты
public:
KomRoti():Oficer()//обращение к конструктору родительского класса
{//конструктор без параметров
kolSoldatRoti=0;
nomerRoti=0;
}

KomRoti(int NomerRoti,const char* Nagradi,int KolSoldatRoti,int


Batalion,int Polk,const char* Zvaniye,int GodiSlujbi,const char*
RodVoysk,int Vozrast,const char* FIO,const char* DataRojd)
:Oficer(Batalion,Polk,Zvaniye,GodiSlujbi,RodVoysk,Vozrast,FIO,D
ataRojd)
{//конструктор с параметрами
kolSoldatRoti=KolSoldatRoti;
nomerRoti=NomerRoti;
strcpy(nagradi,Nagradi);
kolSoldatRoti=KolSoldatRoti;
}
~KomRoti()
{
}

//функции доступа к закрытым переменным


void setNagradi(const char* Nagradi){strcpy(nagradi,Nagradi);}
void setKolSoldatRoti(int KolSoldatRoti)
{kolSoldatRoti=KolSoldatRoti;}
void setNomerRoti(int NomerRoti){nomerRoti=NomerRoti;}
char* getNagradi() const{return (char*)nagradi;}
int getKolSoldatRoti() const{return kolSoldatRoti;}
int getNomerRoti()const{return nomerRoti;}

virtual void show()const


{//функция вывода инфы
Oficer::show();//обращение к функции вывода родительского класа
cout<<"[KomRoti] nomerRoti: "<<nomerRoti<<" kolSoldatRoti:
"<<kolSoldatRoti<<" nagradi: "<<nagradi<<'\n';
}

};

void main()
{
int n=0;
char* s=new char();
KomRoti kr=KomRoti();
cout<<"[VoyenoObyazaniy]:\n";
cout<<" setVozrast: "; cin>>n;cin.ignore(); kr.setVozrast(n);
cout<<" setDataRojd: "; cin.getline(s,15); kr.setDataRojd(s);
cout<<" setFIO: "; cin.getline(s,20); kr.setFIO(s);

cout<<"[Soldat]:\n";

12
cout<<" setGodiSlujbi: "; cin>>n;cin.ignore(); kr.setGodiSlujbi(n);
cout<<" setRodVoysk: "; cin.getline(s,20); kr.setRodVoysk(s);

cout<<"[Oficer]:\n";
cout<<" setBatalion: "; cin>>n;cin.ignore(); kr.setBatalion(n);
cout<<" setPolk: "; cin>>n;cin.ignore(); kr.setPolk(n);
cout<<" setZvaniye: "; cin.getline(s,20); kr.setZvaniye(s);

cout<<"[KomRoti]:\n";
cout<<" setNomerRoti: "; cin>>n;cin.ignore(); kr.setNomerRoti(n);
cout<<" setKolSoldatRoti: "; cin>>n;cin.ignore();
kr.setKolSoldatRoti(n);
cout<<" setNagradi: "; cin.getline(s,60); kr.setNagradi(s);

cout<<'\n';
kr.show();
}

13