Обобщенное программирование, шаблоны

 















Лабораторная работа №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();;

}

}

}

}

Результат выполнения программы






Лабораторная работа №10 Тема: обобщенное программирование, шаблоны Задание 1 Разработай

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ