Диаграммы классов.Автоматическая генерация прототипа кода., страница 2

Класс  twoFigure – две вложенные фигуры – класс fillFigure и figureContur является его элементом

#ifndef twoFigure_h

#define twoFigure_h 1

#include "fillFigure.h"

#include "figureContur.h"

class twoFigure

{

public:

twoFigure();

twoFigure(const twoFigure &right);

~twoFigure();

twoFigure & operator=(const twoFigure &right);

int operator==(const twoFigure &right) const;

int operator!=(const twoFigure &right) const;

void set ();

int draw ();

void get ();

const figureContur& get_perip () const;

const fillFigure& get_in () const;

figureContur perip;

fillFigure in;

protected:

private:

};

inline void twoFigure::set ()

{}

inline void twoFigure::get ()

{}

inline const figureContur& twoFigure::get_perip () const

{  return perip;}

inline const fillFigure& twoFigure::get_in () const

{  return in;}

#endif

Контейнер

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

#ifndef elem_h

#define elem_h 1

template <class X>

class elem

{public:

elem();

elem(const elem< X > &right);

~elem();

elem< X > & operator=(const elem< X > &right);

int operator==(const elem< X > &right) const;

int operator!=(const elem< X > &right) const;

void input ();

void output ();

int K ();

const int& get_key () const;

int key;

protected:

private:

const X& get_my () const;

X my;

private:

};

template <class X>

inline int elem<X>::K ()

{}

template <class X>

inline const X& elem<X>::get_my () const

{ return my;}

template <class X>

inline const int& elem<X>::get_key () const

{  return key;}

#endif

Элемент контейнера elem_containerэлементами контейнеров могут быть содержатся элементы разработанных классов (использован метод шаблонов)

#ifndef elem_container_h

#define elem_container_h 1

template <class X>

struct elem_container

{  elem_container(const elem_container< X > &right);

elem_container ();

~elem_container();

elem_container< X > & operator=(const elem_container< X > &right);

int operator==(const elem_container< X > &right) const;

int operator!=(const elem_container< X > &right) const;

const elem< X >& get_pict () const;

const elem_container * const& get_prev () const;

const elem_container * const& get_next () const;

elem< X > pict;

elem_container *prev;

elem_container *next;

public:

protected:

private:

};

template <class X>

inline elem_container<X>::elem_container ()

{}

template <class X>

inline const elem< X >& elem_container<X>::get_pict () const

{  return pict;}

template <class X>

inline const elem_container * const& elem_container<X>::get_prev () const

{  return prev;}

template <class X>

inline const elem_container * const& elem_container<X>::get_next () const

{  return next;}

#endif

Класс-контейнер container –

#ifndef container_h

#define container_h 1

#include "figure.h"

template <class X>

class container

{

public:

container(const container< X > &right);

container ();

~container();

container< X > & operator=(const container< X > &right);

int operator==(const container< X > &right) const;

int operator!=(const container< X > &right) const;

void add (elem<X> e);

void del (int key);

void print ();

void print_back ();

protected:

private:

const elem_container< X > * const& get_begin () const;

elem_container< X > *begin;

private:

};

template <class X>

inline container<X>::container ()

{}

template <class X>

inline const elem_container< X > * const& container<X>::get_begin () const

{  return begin;  }

#endif