Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab2.docx
Скачиваний:
71
Добавлен:
16.03.2016
Размер:
167.4 Кб
Скачать

Дополнительно в классе Student

  • определить перегруженную версию виртуального метода object DeepCopy();

  • реализовать интерфейс IDateAndCopy;

  • определить свойство типа int с методами get и set для доступа к полю с номером

группы. В методе set бросить исключение, если присваиваемое значение меньше

или равно 100 или больше 599. При создании объекта-исключения использовать

один из определенных в библиотеке CLR классов-исключений, инициализировать

объект-исключение с помощью конструктора с параметром типа string, в

сообщении передать информацию о допустимых границах для значения свойства.

В отдельном методе Main()

1. Создать один объект типа Student, преобразовать данные в текстовый вид с

помощью метода ToShortString() и вывести данные.

2. Присвоить значения всем определенным в типе Student свойствам,

преобразовать данные в текстовый вид с помощью метода ToString() и

вывести данные.

3. C помощью метода AddExams(params Exam[]) добавить элементы в список

экзаменов и вывести данные объекта Student, используя метод ToString().

4. Создать два объекта типа Person с совпадающими данными и проверить, что

ссылки на объекты не равны, а объекты равны, вывести значения хэш-кодов для

объектов.

5. Создать объект типа Student, добавить элементы в список экзаменов и

зачетов, вывести данные объекта Student.

6. Вывести значение свойства типа Person для объекта типа Student.

7. С помощью метода DeepCopy() создать полную копию объекта Student.

Изменить данные в исходном объекте Student и вывести копию и исходный

объект, полная копия исходного объекта должна остаться без изменений.

8. В блоке try/catch присвоить свойству с номером группы некорректное

значение, в обработчике исключения вывести сообщение, переданное через

объект-исключение.

9. С помощью оператора foreach вывести список всех зачетов и экзаменов.

10. С помощью оператора foreach для итератора с параметром вывести список

всех экзаменов с оценкой выше 3.

class Person:IDateAndCopy

{

private string name;

private string secondName;

private DateTime date;

public Person(string name, string secondName, DateTime date)

{

this.name = name;

this.secondName = secondName;

this.date = date;

}

public Person()

{

name = "name";

secondName = "second name";

date = new DateTime(1900, 1, 1);

}

public string Name

{

get{ return name; }

set{ name = value; }

}

public string SecondName

{

get { return secondName; }

set { secondName = value; }

}

public DateTime Date

{

get { return date; }

set { date = value;}

}

public int Year

{

get{return date.Year;}

set { date = new DateTime(value,date.Month,date.Day); }

}

public override string ToString()

{

return "Имя: " + name + "\n" + "Фамилия: " + secondName+"\n" + "Дата рождения: " + date.ToShortDateString();

}

public virtual string ToShortString()

{

return "Имя: "+ name+"\n" + "Фамилия: " + secondName;

}

public override bool Equals(Object obj)

{

Person person = (Person)obj;

bool value = false;

if(obj != null)

if (name.Equals(person.name))

if (secondName.Equals(person.secondName))

if (date.Equals(person.date))

value=true;

return value;

}

public override int GetHashCode()

{

return name.Length+secondName.Length+date.Day+date.Month+date.Year;

}

public static bool operator ==(Person p1, Person p2)

{

bool result = false;

if (p1.name.Equals(p2.name))

if (p1.secondName.Equals( p2.secondName))

if (p1.date.Equals(p2.date))

result = true;

return result;

}

public static bool operator !=(Person p1, Person p2)

{

bool result = true;

if (p1.name.Equals(p2.name))

if (p1.secondName.Equals(p2.secondName))

if (p1.date.Equals(p2.date))

result = false;

return result;

}

public object DeepCopy()

{

Person person = new Person(name, secondName, date);

return person;

}

}

class Test:IDateAndCopy

{

string name;

bool resultTest;

DateTime date;

public Test(string name, bool resultTest,DateTime date)

{

this.name = name;

this.resultTest = resultTest;

this.date = date;

}

public Test()

{

name = "Name";

resultTest = true;

date = new DateTime(1900, 1, 1);

}

public DateTime Date

{

get { return date; }

set { date = value; }

}

public override string ToString()

{

return "Название зачета: "+ name+"\n Результат " +resultTest.ToString()+"\n Дата "+ date.ToShortDateString();

}

public object DeepCopy()

{

Test test = new Test(name, resultTest,date);

return test;

}

}

class Exam:IDateAndCopy

{

string name;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]