Создание иерархии классов (5-6 классов) для предметной области "Библиотека"

Страницы работы

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

Хабаровский Государственный Технический Университет

                                                                Кафедра ПОВТ и АС

Лабораторная работа по ООП №1

                                                             Выполнил: ст-т группы ПО-12 Черенков В.Л.

Проверил: Потапов И.И.

Хабаровск 2004

Задание: Для произвольной предметной области создать иерархию классов (5-6 классов). Корень иерархии должен быть абстрактным и иметь минимум два абстрактных метода, переопределённых в потомках. Реализация методов минимальна. После создания классов создаём несколько экземпляров классов, помещаем их в произвольный контейнер и в цикле показываем реализацию методов для этих объектов.

Конкретизация задания: Выбираем предметную область Библиотека. Для неё строим следующую иерархию:

Для каждого класса определены некоторые свойства и три метода: printinfo, getname и setname.

Листинг программы:

//--------------------------------------------------------------------------#include <vcl.h>

#include <conio.h>

#pragma hdrstop

#include "Unit1.h"

#include <dstring.h>

//--------------------------------------------------------------------------#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//--------------------------------------------------------------------------//declaration of base class Fond

class Fond

{

public:

AnsiString FondName;

int *Size;//dynamic var

virtual void printinfo()=0;

virtual AnsiString getname()=0;

virtual void setname(AnsiString)=0;

//constructor

Fond() {FondName="NotNamed";Size=new int;*Size=0;}

//destructor

virtual ~Fond() {delete Size;}

};//end of declaration class Fond

//declaration of class Library

class Library:public Fond

{

AnsiString *LibName;//dynamic var

public:

void printinfo();//realization not here

AnsiString getname() {return *LibName;}

void setname(AnsiString N) {*LibName=N;}

//constructor

Library():Fond() {LibName = new AnsiString;*LibName="NotNamed";}

//destructor

virtual ~Library(){delete LibName;}

};//end of declaration class Library

//declaration of class Author

class Author:public Library

{

AnsiString AuthorName;

public:

int Year,Month,Day;

AnsiString *Nation;

void printinfo();

AnsiString getname() {return AuthorName;}

void setname(AnsiString N) {AuthorName=N;}

void setdate(int D,int M, int Y) {Day=D;Month=M;Year=Y;}

//constructors

Author():Library()

{AuthorName="Unnamed";Year=0;Month=0;Day=0;

Nation=new AnsiString;*Nation="Unknown";}

Author(AnsiString N,int D,int M,int Y,AnsiString Nat):Library()

{AuthorName=N;Day=D;Month=M;Year=Y;Nation=new AnsiString;*Nation=Nat;}

//destructor

virtual ~Author() {delete Nation;}

};//end of declaration class Author

//declaration of class Book

class Book:public Author

{

public:

AnsiString *BookName;

int *Pages,*YearIzd;

void printinfo();

void setauthor(Author *A);

AnsiString getname() {return *BookName;}

void setname(AnsiString N) {*BookName=N;}

//constructors

Book():Author() {BookName = new AnsiString;*BookName="Unnamed Book";

Pages = new int;*Pages=0;YearIzd = new int;

*YearIzd=0;}

Book(AnsiString N,int P,int Y):Author()

{BookName = new AnsiString;*BookName=N;

Pages = new int;*Pages=P;YearIzd = new int;

*YearIzd=Y;}

//destructor

~Book() {delete BookName,Pages,YearIzd;}

};//end of declaration class Book

//declaration of class Magazine

class Magazine:public Author

{

AnsiString *MagName;

public:

int* Pages,*YearIzd,*Number,*NYear;

void printinfo();

void setauthor(Author *A);

AnsiString getname() {return *MagName;}

void setname(AnsiString N) {*MagName=N;}

//constructors

Magazine():Author() {MagName = new AnsiString;*MagName="Unnamed Magazine";

Похожие материалы

Информация о работе