Автор работы: Пользователь скрыл имя, 06 Мая 2013 в 16:14, курсовая работа
Отделяет конструирование сложного объекта от его представления, позволяя использовать один и тот же процесс конструирования для создания различных представлений.
Паттерн Builder используется в таких случаях:
алгоритм создания сложного объекта не должен зависеть от того, из каких частей состоит объект и как они стыкуются между собой;
процесс конструирования должен обеспечивать различные представления конструируемого объекта.
• Постановка задачи
• Описание решения
• Литература
}
}
};
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::
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 стр.