Просмотр содержимого документа
«Разработка кода ИС Практическая работа №10»
Практическое занятие № 10
Реализация иерархии классов
Цель работы: приобрести практические навыки реализации иерархии классов в C#, используя наследование, абстрактные классы, интерфейсы, виртуальные и абстрактные методы.
Ход работы
Задание 1: Необходимо написать программу на языке C# в Visual Studio, результат вывести в консоль.
Разработать и реализовать иерархию классов для описанных объектов предметной области, используя механизмы наследования. Проверить ее на тестовом примере с демонстрацией всех возможностей разработанных классов на конкретных данных. Все поля объекта должны быть закрытыми для доступа извне. Объект – больной. Параметры: Фамилия, возраст. Методы: конструктор, вывода на экран фамилии и возраста. Объект – больной. Параметры: Фамилия, возраст, год последней диспансеризации. Методы: конструктор, определения года следующей диспансеризации, исходя из того, что диспансеризация должна проходить каждые 3 года.
Задание 2: Ответить на контрольные вопросы:
1. Что такое иерархия классов и какова ее цель в объектно-ориентированном программировании (ООП)? Опишите, как классы связаны друг с другом в иерархии.
2. Объясните концепцию наследования. Какие преимущества оно предоставляет для повторного использования кода и организации структуры приложения?
3. Опишите разницу между базовым классом (суперклассом, родителем) и производным классом (подклассом, потомком). Приведите конкретные примеры.
4. Что такое инкапсуляция и как она связана с иерархией классов? Как можно контролировать доступ к членам класса (поля, свойства, методы) с использованием модификаторов доступа (public, private, protected, internal)?
5. Что такое полиморфизм? Какие типы полиморфизма существуют в C#?
6. Какое ключевое слово используется для указания наследования в C#?
7. Как получить доступ к членам базового класса из производного класса? Опишите различные сценарии и ограничения, связанные с модификаторами доступа.
8. Объясните назначение ключевого слова base. Когда и как его следует использовать?
9. Что такое виртуальные (virtual) и абстрактные (abstract) методы? В чем разница между ними? Когда следует использовать virtual, а когда abstract?
10. Что такое переопределение методов (override)? Как оно связано с виртуальными методами и полиморфизмом?
11. Что такое абстрактный класс? Можно ли создать экземпляр абстрактного класса? Какова роль абстрактных классов в иерархии классов?