Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Last active October 7, 2025 08:16
Show Gist options
  • Save sunmeat/f1a9839893fabfb5643fe0599f324331 to your computer and use it in GitHub Desktop.
Save sunmeat/f1a9839893fabfb5643fe0599f324331 to your computer and use it in GitHub Desktop.
ДЗ на успадкування, поліморфізм, методи класу Object та extension-методи

Успадкування в .NET 9

  • Створіть базовий клас Person з полями FullName (string) та BirthDate (DateTime), базовими конструкторами з делегуванням, геттерами/сеттерами та віртуальним методом DisplayInfo() (виводить ПІБ та дату).
  • Зробіть Student похідним від Person (використовуйте : Person). Додайте конструктори з делегуванням до базового (: base(fullName, birthDate)).
  • Створіть похідний клас GraduateStudent від Student з додатковим полем ThesisTopic (string) та конструктором, що делегує до Student. Додайте геттер/сеттер для теми.

Поліморфізм

  • Зробіть DisplayInfo() віртуальним у Person. Перевизначте (override) його в Student (викликайте base.DisplayInfo() + виводьте адресу, телефон, оцінки). У GraduateStudent — ще + тема диплома.
  • У Group.DisplayStudents() використовуйте поліморфізм: зберігайте список як List<Person> або Person[] (щоб додавати GraduateStudent), і викликайте DisplayInfo() — має працювати для всіх похідних типів динамічно.

Методи класу Object

  • У Person перевизначте ToString() (повний опис: ПІБ + дата).
  • Перевизначте Equals(object obj) (порівняння за FullName + BirthDate; використовуйте is Person other).
  • Перевизначте GetHashCode() (комбінований хеш через HashCode.Combine()).
  • У похідних класах (Student, GraduateStudent) розширте ці методи (наприклад, Equals додає перевірку адреси/телефону/теми).
  • Продемонструйте в Group.AddStudent(): використовуйте Contains() (викликає Equals) для уникнення дублікатів.

Екстеншн методи (Extension Methods)

  • Створіть статичний клас StudentExtensions.
  • Додайте extension-метод CalculateGPA(this Student student): обчислює середній бал усіх оцінок.
  • Додайте HasPassedSession(this Student student): повертає true, якщо GPA >= 60.
  • У Group.ExpelFailedStudents() та ExpelWorstStudent() використовуйте ці extension-методи.
  • Продемонструйте в Main: student1.CalculateGPA().
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment