Обобщенное программирование, шаблоны
Лабораторная работа №10
Тема: обобщенное программирование, шаблоны
Задание 1
Разработайте шаблонную функцию FindMax, выполняющую поиск максимального элемента в массиве. В случае, если такой элемент присутствует, то значение максимального элемента должно быть занесено в аргумент maxValue, передаваемый по ссылке, а сама функция вернуть значение истина. В противном случае функция должна вернуть значение ложь.
Текст программы
Program
{bool method<T>(T[] t,ref T a)
{(t.Length == 0)
{false;
}
{= t.Max();true;
}
}
static void Main(string[] args)
{control = "";(control != "ex")
{.WriteLine("1 - Create String Array *");.WriteLine("2 - Create Char Array *");.WriteLine("3 - Create Int Array *");.WriteLine("4 - Create Double Array *");.WriteLine("5 - Create Byte Array *");.WriteLine("**************************");= Console.ReadLine();.Clear();(control)
{"1":s_max_string = "";.Write("Enter array lenght : ");len_s = int.Parse(Console.ReadLine());[] stroki = new string[len_s];(int i = 0; i < len_s; i++)
{[i] = Console.ReadLine();
}prov_s = method(stroki, ref s_max_string);.Clear();.Write("Max element : " + s_max_string);.ReadKey();.Clear();;"2":s_max_char = ' ';.Write("Enter array lenght : ");len_c = int.Parse(Console.ReadLine());[] chars = new char[len_c];(int i = 0; i < len_c; i++)
{[i] = char.Parse(Console.ReadLine());
}prov_c = method(chars, ref s_max_char);.Clear();.Write("Max element : " + s_max_char);.ReadKey();.Clear();;"3":s_max_int = 0;.Write("Enter array lenght : ");len_i = int.Parse(Console.ReadLine());[] ints = new int[len_i];(int i = 0; i < len_i; i++)
{[i] = int.Parse(Console.ReadLine());
}prov_i = method(ints, ref s_max_int);.Clear();.Write("Max element : " + s_max_int);.ReadKey();.Clear();;"4":s_max_double = 0.0;.Write("Enter array lenght : ");len_d = int.Parse(Console.ReadLine());[] dbs = new double[len_d];(int i = 0; i < len_d; i++)
{[i] = double.Parse(Console.ReadLine());
}prov_d = method(dbs, ref s_max_double);.Clear();.Write("Max element : " + s_max_double);.ReadKey();.Clear();;"5":s_max_byte = 0;.Write("Enter array lenght : ");len_b = int.Parse(Console.ReadLine());[] bytes = new byte[len_b];(int i = 0; i < len_b; i++)
{[i] = byte.Parse(Console.ReadLine());
}prov_b = method(bytes, ref s_max_byte);.Clear();.Write("Max element : " + s_max_byte);.ReadKey();.Clear();;
}
}
}
}
Результат выполнения программы
шаблонный функция класс интерфейс
Задание 2
Разработайте шаблонный класс CMyArray, представляющий собой массив элементов некоторого типа T.
Массив должен предоставлять следующие возможности:
·Возможность добавления элемента
·Возможность получения количества элементов
·Возможность индексированного доступа к элементам
·Возможность изменения длины массива
·Возможность опустошения массива
·Конструктор копирования
Текст программы
class MyGenericClass<T>
{[] aa;index = 0;MyGenericClass(int q)
{= new T[q];
}MyGenericClass(MyGenericClass<T> q)
{= q.aa;
}void ArrayAdd(T value)
{[index++] = value;
}int GetLength()
{aa.Length;
}void ArrayResize(int newSize)
{(newSize < aa.Length)
{.WriteLine("Error!!!");
}
{.Resize(ref aa, newSize);
}
}void ArrayClear()
{(int i = 0; i < aa.Length; i++)
{[i] = default(T);
}
}void Show()
{(T item in aa)
{.WriteLine(" " + item + " ");
}
}T GetElement(int qwe)
{aa[qwe];
}
}Program
{void Main(string[] args)
{prov = "";index = 0;<string> a1 = null;<int> a2 = null;<double> a3 = null;<char> a4 = null;control = "";(control != "ex")
{.WriteLine("1 - Create Array *");.WriteLine("2 - Get Lenght Array *");.WriteLine("3 - Get Element *");.WriteLine("4 - Resize Array *");.WriteLine("5 - Clear Array *");.WriteLine("6 - Copy Array *");.WriteLine("*************************");= Console.ReadLine();.Clear();(control)
{"1":.WriteLine("What array create? string,int,double,char?");s_c = Console.ReadLine();= s_c;(s_c == "string")
{.Write("Enter array lenght: ");= int.Parse(Console.ReadLine());= new MyGenericClass<string>(index);(int i = 0; i < index; i++)
{.ArrayAdd(Console.ReadLine());
}
}(s_c == "int")
{.Write("Enter array lenght: ");= int.Parse(Console.ReadLine());= new MyGenericClass<int>(index);(int i = 0; i < index; i++)
{.ArrayAdd(int.Parse(Console.ReadLine()));
}
}(s_c == "double")
{.Write("Enter array lenght: ");= int.Parse(Console.ReadLine());= new MyGenericClass<double>(index);(int i = 0; i < index; i++)
{.ArrayAdd(double.Parse(Console.ReadLine()));
}
}(s_c == "char")
{.Write("Enter array lenght: ");= int.Parse(Console.ReadLine());= new MyGenericClass<char>(index);(int i = 0; i < index; i++)
{.ArrayAdd(char.Parse(Console.ReadLine()));
}
}.ReadKey();.Clear();;"2":(prov == "string")
{.WriteLine(a1.GetLength());
}(prov == "int")
{.WriteLine(a2.GetLength());
}(prov == "double")
{.WriteLine(a3.GetLength());
}(prov == "char")
{.WriteLine(a4.GetLength());
}.ReadKey();.Clear();;"3":(prov == "string")
{.Write("Enter index : ");ind_dost = int.Parse(Console.ReadLine());.WriteLine(a1.GetElement(ind_dost - 1));
}(prov == "int")
{.Write("Enter index : ");ind_dost = int.Parse(Console.ReadLine());.WriteLine(a2.GetElement(ind_dost - 1));
}(prov == "double")
{.Write("Enter index : ");ind_dost = int.Parse(Console.ReadLine());.WriteLine(a3.GetElement(ind_dost - 1));
}(prov == "char")
{.Write("Enter index : ");ind_dost = int.Parse(Console.ReadLine());.WriteLine(a4.GetElement(ind_dost - 1));
}.ReadKey();.Clear();;"4":(prov == "string")
{.Write("Enter new size : ");new_size = int.Parse(Console.ReadLine());.ArrayResize(new_size);
}(prov == "int")
{.Write("Enter new size : ");new_size = int.Parse(Console.ReadLine());.ArrayResize(new_size);
}(prov == "double")
{.Write("Enter new size : ");new_size = int.Parse(Console.ReadLine());.ArrayResize(new_size);
}(prov == "char")
{.Write("Enter new size : ");new_size = int.Parse(Console.ReadLine());.ArrayResize(new_size);
}.ReadKey();.Clear();;"5":(prov == "string")
{.ArrayClear();
}(prov == "int")
{.ArrayClear();
}(prov == "double")
{.ArrayClear();
}(prov == "char")
{.ArrayClear();
}.ReadKey();.Clear();;"6":(prov == "string")
{<string> copy_a1 = new MyGenericClass<string>(a1);_a1.Show();
}(prov == "int")
{<int> copy_a2 = new MyGenericClass<int>(a2);_a2.Show();
}(prov == "double")
{<double> copy_a3 = new MyGenericClass<double>(a3);_a3.Show();
}(prov == "char")
{<char> copy_a4 = new MyGenericClass<char>(a4);_a4.Show();
}.ReadKey();.Clear();;
}
}
}
}
Результат выполнения программы
Задание 3
Имеется следующая иерархия классов и интерфейсов, моделирующих иерархию объектов в обществе (человек, учитель, ученик, студент, рабочий, аспирант):
Свойства, которыми обладают сущности данной иерархии:
СущностьСвойстваЧеловекИмя Фамилия Отчество АдресУченикНазвание школы КлассПреподавательНазвание предметаСтудентНазвание ВУЗ-а Номер студенческого билетаАспирантТема диссертацииРабочийСпециальность
Текст программы
interface IPerson
{Name { get; set; }Surname { get; set; }Otchestvo { get; set; }Adress { get; set; }
}IPupil
{NameScholl { get; set; }NameKlass { get; set; }
}ITeacher
{NamePredmet { get; set; }
}IStudent
{NameUniver { get; set; }NomerStud { get; set; }
}IWorker
{Special { get; set; }
}IAdvancedStudent
{TemaDeklarazii { get; set; }
}CPupil : IPupil, IPerson
{string Name { get; set; }string Surname { get; set; }string Otchestvo { get; set; }string Adress { get; set; }string NameScholl { get; set; }string NameKlass { get; set; }override string ToString()
{"PUPIL-" + " Name: " + Name + " Surname: " + Surname + " Otchestvo: " + Otchestvo + " Adress: " + Adress + " NameScholl: " + NameScholl + " NameKlass: " + NameKlass;
}
}CTeacher : ITeacher, IPerson
{string Name { get; set; }string Surname { get; set; }string Otchestvo { get; set; }string Adress { get; set; }string NamePredmet { get; set; }override string ToString()
{"TEACHER-" + " Name: " + Name + " Surname: " + Surname + " Otchestvo: " + Otchestvo + " Adress: " + Adress + " NamePredmet: " + NamePredmet;
}
}CStudent : IStudent, IPerson
{string Name { get; set; }string Surname { get; set; }string Otchestvo { get; set; }string Adress { get; set; }string NameUniver { get; set; }string NomerStud { get; set; }override string ToString()
{"STUDENT-" + " Name: " + Name + " Surname: " + Surname + " Otchestvo: " + Otchestvo + " Adress: " + Adress + " NameUniver: " + NameUniver + " NomerStud: " + NomerStud;
}
}CWorker : IWorker, IPerson
{string Name { get; set; }string Surname { get; set; }string Otchestvo { get; set; }string Adress { get; set; }string Special { get; set; }override string ToString()
{"WORKER-" + " Name: " + Name + " Surname: " + Surname + " Otchestvo: " + Otchestvo + " Adress: " + Adress + " Special: " + Special;
}
}CAdvanceStudent : IAdvancedStudent, IStudent, IPerson
{string Name { get; set; }string Surname { get; set; }string Otchestvo { get; set; }string Adress { get; set; }string NameUniver { get; set; }string NomerStud { get; set; }string TemaDeklarazii { get; set; }override string ToString()
{"ADVANCESTUDENT-" + " Name: " + Name + " Surname: " + Surname + " Otchestvo: " + Otchestvo + " Adress: " + Adress + " NameUniver: " + NameUniver + " NomerStud: " + NomerStud + " TemaDeklarazii: " + TemaDeklarazii;
}
}List
{static List<IPerson> spisok_chel = new List<IPerson>();
}Program
{void Main(string[] args)
{control = "";(control != "ex")
{.WriteLine("1 - Create Pupil *");.WriteLine("2 - Create Teacher *");.WriteLine("3 - Create AdvancedStudent *");.WriteLine("4 - Create Student *");.WriteLine("5 - Create Worker *");.WriteLine("6 - Show List *");.WriteLine("*****************************");= Console.ReadLine();.Clear();(control)
{"1":cp = new CPupil();.Write("Enter Name: ");.Name = Console.ReadLine();.Write("Enter Surname: ");.Surname = Console.ReadLine();.Write("Enter Otchestvo: ");.Otchestvo = Console.ReadLine();.Write("Enter Adress: ");.Adress = Console.ReadLine();.Write("Enter NameKlass: ");.NameKlass = Console.ReadLine();.Write("Enter NameScholl: ");.NameScholl = Console.ReadLine();.spisok_chel.Add(cp);.ReadKey();.Clear();;"2":ct = new CTeacher();.Write("Enter Name: ");.Name = Console.ReadLine();.Write("Enter Surname: ");.Surname = Console.ReadLine();.Write("Enter Otchestvo: ");.Otchestvo = Console.ReadLine();.Write("Enter Adress: ");.Adress = Console.ReadLine();.Write("Enter NamePredmet: ");.NamePredmet = Console.ReadLine();.spisok_chel.Add(ct);.ReadKey();.Clear();;"3":cas = new CAdvanceStudent();.Write("Enter Name: ");.Name = Console.ReadLine();.Write("Enter Surname: ");.Surname = Console.ReadLine();.Write("Enter Otchestvo: ");.Otchestvo = Console.ReadLine();.Write("Enter Adress: ");.Adress = Console.ReadLine();.Write("Enter NameUniver: ");.NameUniver = Console.ReadLine();.Write("Enter NomerStud: ");.NomerStud = Console.ReadLine();.Write("Enter TemaDeklarazii: ");.TemaDeklarazii = Console.ReadLine();.spisok_chel.Add(cas);.ReadKey();.Clear();;"4":cs = new CStudent();.Write("Enter Name: ");.Name = Console.ReadLine();.Write("Enter Surname: ");.Surname = Console.ReadLine();.Write("Enter Otchestvo: ");.Otchestvo = Console.ReadLine();.Write("Enter Adress: ");.Adress = Console.ReadLine();.Write("Enter NameUniver: ");.NameUniver = Console.ReadLine();.Write("Enter NomerStud: ");.NomerStud = Console.ReadLine();.spisok_chel.Add(cs);.ReadKey();.Clear();;"5":cw = new CWorker();.Write("Enter Name: ");.Name = Console.ReadLine();.Write("Enter Surname: ");.Surname = Console.ReadLine();.Write("Enter Otchestvo: ");.Otchestvo = Console.ReadLine();.Write("Enter Adress: ");.Adress = Console.ReadLine();.Write("Enter Special: ");.Special = Console.ReadLine();.spisok_chel.Add(cw);.ReadKey();.Clear();;"6":(IPerson item in List.spisok_chel)
{.WriteLine(item.ToString());.WriteLine("*********************************************************");
}.ReadKey();.Clear();;
}
}
}
}
Результат выполнения программы
Больше работ по теме:
Предмет: Информационное обеспечение, программирование
Тип работы: Практическое задание
Новости образования
КОНТАКТНЫЙ EMAIL: [email protected]
Скачать реферат © 2017 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ