Паттерн Builder

Автор работы: Пользователь скрыл имя, 06 Мая 2013 в 16:14, курсовая работа

Краткое описание

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

Содержание

• Постановка задачи
• Описание решения
• Литература

Прикрепленные файлы: 1 файл

Отчёт10002.docx

— 52.68 Кб (Скачать документ)

}

}

};

bool Lock::Lnumber[10]={};

////////////////////////////

class Person//класс реализующий методы для работы с базой данных

{

private:

int number;

public:

Person():number(0){}

int SetData(Session &ob1)

{

char ch='\0';

Lock l1;

fstream base;

base.open("base.txt", ios::app | ios::in | ios::out);

 

cout<<"\t\tEnter record number to access = ";

 

fflush(stdin);

cin>>number;

 

cout<<endl;

 

base.seekg(24*(number-1),ios::beg);

l1.SetLock(number);

ob1.GetData(ob1,base);

base.close();

return 1;

}

void GetData(Session &ob1)

{

fstream base;

base.open("base.txt", ios::app | ios::out);

base.seekg(0,ios::end);

ob1.ShowData(ob1,base);

    base.close();

}

void ChangeData(Session &ob1)

{

ob1.ChangeData(ob1);

}

void Out_Lock()

{

Lock::GetLock(number);

}

};

////////////////////////////

int NewMenu(Person *pers,Session ob1,char &ch,int &i,char &n)//функция меню

{

cout<<"\t\t'C' - change data"<<endl

<<"\t\t'B' - out with the removal of blocking"<<endl

<<"\t\t'T' - take the user'"<<endl;

fflush(stdin);

ch=_getch();

switch(ch)

{

case'C':{}

case'c':

{

pers[i].ChangeData(ob1);

       pers[i].GetData(ob1);

return 1;

}break;

case'B':{}

case'b':

{

pers[i].Out_Lock();

}

case'T':{}

case't':

{

++i;

n='e';

pers[i].SetData(ob1);

NewMenu(pers,ob1,ch,i,n);

cout<<"Another user"<<endl;

}break;

default:

{

cout<<endl<<"Wrong button(program is closing press 'Enter' )"<<endl;

}

}

i++;

}

//////////////////////////

int main()

{

int i=0;

Session ob1;

Person pers[3];

char ch,n;

cout<<"Press 's' for programs start"<<endl<<"Press 'e' for exit"<<endl;

fflush(stdin);

ch=_getch();

switch(ch)

do

{

case 'S':{}

case's':

{

cout<<"\t'P'- take the user"<<endl

<<"\t'E'- for exit"<<endl;

fflush(stdin);

ch=_getch();

switch(ch)

{

case'p':{}

case'P':

{

pers[i].SetData(ob1);

do

{

NewMenu(pers,ob1,ch,i,n);

cout<<"Continue?('n'- No 'y'- Yes)"<<endl;

if(n=='e')

{

break;

}

else

{

fflush(stdin);

n=_getch();

}

 

}

while(n!='n'||n!='N'||n=='e');

}break;

    case 'E':{}

            case'e':

            {

           cout<<endl<<"You go!(press enter)"<<endl;

        }break;

default:

{

cout<<endl<<"Wrong button(program is closing press 'Enter' )"<<endl;

}

}

 

}break;

case 'E':{}

case'e':

{

cout<<endl<<"You go!(press enter)"<<endl;

}break;

default:

{

cout<<endl<<"Wrong button(program is closing press 'Enter' )"<<endl;

}

    }

while(1);

return 0;

}

 

СПИСОК ИСПОЛЬЗОВАНОЙ  ЛИТЕРАТУРЫ

1) Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж.

   Приемы    объектно-ориентированного   проектирования.   Паттерны

   проектирования.  -  СПб:    Питер,  2001.  -  368 с.: ил. (Серия

   "Библиотека программиста")

2) Мартин Фаулер. Архитектура корпоративных программных приложений

   - Издательство: Вильямс, 2007 г. - 544 стр.


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