Назад Уперед Зміст

Варіант 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. Викликати метод для пошуку в колекціях першого, центрального, останнього і елемента, що не входить в колекції. Вивести значення часу пошуку для всіх чотирьох випадків. Висновок повинен містити інформацію про те, до якої колекції і до якого елементу відноситься дане значення.

    Назад Уперед Зміст