Назад Вперед Содержание

Вариант 1.

Задача 1.Требования к программе

Создать windows forms приложение. Интерфейс на свое усмотрение.

  1. Определить тип Frequency - перечисление(enum) со значениями Weekly, Monthly, Yearly.
  2. Определить класс Article, который имеет три открытых автореализуемых свойства, доступных для чтения и записи:
  3. В классе Article определить:
  4. Определить класс Magazine, который имеет
  5. В классе Magazine определить конструкторы:
  6. В классе Magazine определить свойства c методами get и set:
  7. В классе Magazine определить
  8. В методе Main()
    1. Создать один объект типа Magazine, преобразовать данные в текстовый вид с помощью метода ToShortString() и вывести данные.
    2. Вывести значения индексатора для значений индекса Frequency.Weekly, Frequency.Monthly и Frequency.Yearly.
    3. Присвоить значения всем определенным в типе Magazine свойствам, преобразовать данные в текстовый вид с помощью метода ToString() и вывести данные.
    4. C помощью метода AddArticles( params Article[] ) добавить элементы в список статей и вывести данные объекта Magazine, используя метод ToString().
    5. Сравнить время выполнения операций с элементами одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов типа Article.

Задача 2.Требования к программе

  1. Определить интерфейс
    interface IRateAndCopy
        { double Rating { get;}
    object DeepCopy();
        }
  2. Определить новые версии классов Person, Article и Magazine из первой задачи.
  3. В новой версии класса Person дополнительно

Задача 3.Требования к программе

    Определить новые версии классов Edition и Magazine из задачи 2.

  1. В новой версии класса Magazine использовать типы

Вариант 2.

Задача 1.Требования к программе

Создать windows forms приложение. Интерфейс на свое усмотрение.

  1. Определить тип TimeFrame - перечисление(enum) со значениями Year, TwoYears, Long.
  2. Определить класс Paper, который имеет три открытых автореализуемых свойства, доступных для чтения и записи:
  3. В классе Paper определить
  4. Определить класс ResearchTeam, который имеет
  5. В классе ResearchTeam определить конструкторы:
  6. В классе ResearchTeam определить свойства c методами get и set:
  7. свойство типа string для доступа к полю с названием темы исследований;
  8. свойство типа string для доступа к полю с названием организации;
  9. свойство типа int для доступа к полю с номером регистрации;
  10. свойство типа TimeFrame для доступа к полю с продолжительностью исследований;
  11. свойство типа Paper[] для доступа к полю со списком публикаций по теме исследований.
  12. В классе ResearchTeam определить
  13. В методе Main()
    1. Создать один объект типа ResearchTeam, преобразовать данные в текстовый вид с помощью метода ToShortString() и вывести данные.
    2. Вывести значения индексатора для значений индекса TimeFrame.Year, TimeFrame.TwoYears, TimeFrame.Long.
    3. Присвоить значения всем определенным в типе ResearchTeam свойствам, преобразовать данные в текстовый вид с помощью метода ToString() и вывести данные.
    4. С помощью метода AddPapers (params Paper []) добавить элементы в список публикаций и вывести данные объекта ResearchTeam.
    5. Вывести значение свойства, которое возвращает ссылку на публикацию с самой поздней датой выхода;
    6. Сравнить время выполнения операций с элементами одномерного, двумерного прямоугольного и двумерного ступенчатого массивов с одинаковым числом элементов типа Paper.

Задача 2.Требования к программе

  1. Определить интерфейс
    interface INameAndCopy
        { string Name { get; set;}
    object DeepCopy(); 
        }
  2. Определить новые версии классов Person, Paper и ResearchTeam из задачи1. Класс ResearchTeam определить как производный от класса Team. В классы Team и ResearchTeam добавить реализацию интерфейса INameAndCopy. В классе Paper определить виртуальный метод object DeepCopy().
  3. В новой версии класса Person дополнительно
  4. Определить класс Team. Класс Team имеет
  5. В классе Team определить:
  6. В классе Team
  7. В классе Team переопределить (override):
  8. Новая версия класса ResearchTeam имеет базовый класс Team и следующие поля:
  9. Код следующих конструкторов, методов и свойств из старой версии класса ResearchTeam необходимо изменить с учетом того, что часть полей класса перемещена в базовый класс Team, и в новой версии класса ResearchTeam для списка публикаций используется тип System.Collections.ArrayList:
  10. Дополнительно в новой версии класса ResearchTeam определить
  11. В методе Main()
    1. Создать два объекта типа Team с совпадающими данными и проверить, что ссылки на объекты не равны, а объекты равны, вывести значения хэш-кодов для объектов.
    2. В блоке try/catch присвоить свойству с номером регистрации некорректное значение, в обработчике исключения вывести сообщение, переданное через объект-исключение.
    3. Создать объект типа ResearchTeam, добавить элементы в список публикаций и список участников проекта и вывести данные объекта ResearchTeam.
    4. Вывести значение свойства Team для объекта типа ResearchTeam.
    5. С помощью метода DeepCopy() создать полную копию объекта ResearchTeam. Изменить данные в исходном объекте ResearchTeam и вывести копию и исходный объект, полная копия исходного объекта должна остаться без изменений.
    6. С помощью оператора foreach для итератора, определенного в классе ResearchTeam, вывести список участников проекта, которые не имеют публикаций.
    7. С помощью оператора foreach для итератора с параметром, определенного в классе ResearchTeam, вывести список всех публикаций, вышедших за последние два года.
  12. Дополнительное задание:
    1. В классе ResearchTeam
    2. реализовать интерфейс System.Collections.IEnumerable для перебора участников проекта (объектов типа Person), у которых есть публикации; для этого определить вспомогательный класс ResearchTeamEnumerator, реализующий интерфейс System.Collections.IEnumerator.
    3. определить итератор для перебора участников проекта (объектов типа Person), имеющих более одной публикации, для этого определить метод, содержащий блок итератора и использующий оператор yield.
    4. определить итератор для перебора публикаций (объектов типа Paper), вышедших за последний год, для этого определить метод, содержащий блок итератора и использующий оператор yield.
  13. В методе Main()
    1. С помощью оператора foreach для объекта типа ResearchTeam вывести список участников проекта, у которых есть публикации.
    2. С помощью оператора foreach для итератора, определенного в классе ResearchTeam, вывести список участников проекта, имеющих более одной публикации.
  14. C помощью оператора foreach для итератора, определенного в классе ResearchTeam, вывести список публикаций, вышедших за последний год.

Задача 3.Требования к программе

  1. Определить новые версии классов Team и ResearchTeam из задачи2.
  2. В новой версии класса ResearchTeam использовать типы
  3. Определить вспомогательный класс, реализующий интерфейс System.Collections.Generic.IComparer, который можно использовать для сравнения объектов типа ResearchTeam по числу публикаций.
  4. Определить класс ResearchTeamCollection, который содержит
  5. В классе ResearchTeamCollection определить методы, выполняющие сортировку списка List
    • по номеру регистрации с использованием интерфейса IComparable, реализованного в классе Team;
    • по названию темы исследований с использованием интерфейса IComparer, реализованного в классе ResearchTeam;
    • по числу публикаций с использованием интерфейса IComparer, реализованного во вспомогательном классе.
  6. В классе ResearchTeamCollection определить свойства и методы, выполняющие операции со списком List с использованием методов расширения класса System.Linq.Enumerable и статические методы-селекторы, которые необходимы для выполнения соответствующих операций со списком:
    • свойство типа int (только с методом get), возвращающее минимальное значение номера регистрации для элементов списка List; если в коллекции нет элементов, свойство возвращает некоторое значение по умолчанию; для поиска минимального значения номера регистрации надо использовать метод Min класса System.Linq.Enumerable;
    • свойство типа IEnumerable (только с методом get), возвращающее подмножество элементов списка List с продолжительностью исследований TimeFrame.TwoYears; для формирования подмножества использовать метод Where класса System.Linq.Enumerable;
    • метод List NGroup(int value), который возвращает список, в который входят элементы ResearchTeam из списка List с заданным числом участников исследования; для формирования списка использовать методы Group и ToList класса System.Linq.Enumerable.
  7. Определить класс TestCollections, в котором в качестве типа TKey используется класс Team, а в качестве типа TValue - класс ResearchTeam. Класс содержит закрытые поля с коллекциями типов
  8. В классе TestCollections определить
  9. В методе Main()
    1. Создать объект типа ResearchTeamCollection. Добавить в коллекцию несколько элементов типа ResearchTeam с разными значениями полей и вывести объект ResearchTeamCollection.
    2. Для созданного объекта ResearchTeamCollection вызвать методы, выполняющие сортировку списка List по разным критериям, и после каждой сортировки вывести данные объекта. Выполнить сортировку
      • по номеру регистрации;
      • по названию темы исследований;
      • по числу публикаций.
    3. Вызвать методы класса ResearchTeamCollection, выполняющие операции со списком List, и после каждой операции вывести результат операции. Выполнить
      • вычисление минимального значения номера регистрации для элементов списка; вывести минимальное значение;
      • фильтрацию проектов с продолжительностью исследований TimeFrame.TwoYears, вывести результат фильтрации;
      • группировку элементов списка по числу публикаций; вывести все группы элементов из списка.
    4. Создать объект типа TestCollections. Вызвать метод для поиска в коллекциях первого, центрального, последнего и элемента, не входящего в коллекции. Вывести значения времени поиска для всех четырех случаев. Вывод должен содержать информацию о том, к какой коллекции и к какому элементу относится данное значение.

    Назад Вперед Содержание