Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 133
- Предыдущая
- 133/642
- Следующая
class MyString
: String
{
}
На заметку! В главе 4 вы узнали о том, что структуры C# всегда неявно запечатаны (см. табл. 4.3). Следовательно, создать структуру, производную от другой структуры, класс, производный от структуры, или структуру, производную от класса, невозможно. Структуры могут применяться для моделирования только отдельных, атомарных, определяемых пользователем типов. Если вы хотите задействовать отношение "является", тогда должны использовать классы.
Нетрудно догадаться, что есть многие другие детали наследования, о которых вы узнаете в оставшемся материале главы. Пока просто примите к сведению, что операция двоеточия позволяет устанавливать отношения "базовый-производный" между классами, а ключевое слово
sealed
Еще раз о диаграммах классов Visual Studio
В главе 2 кратко упоминалось о том, что среда Visual Studio позволяет устанавливать отношения "базовый-производный" между классами визуальным образом во время проектирования. Для работы с указанным аспектом IDE-среды сначала понадобится добавить в текущий проект новый файл диаграммы классов. Выберите пункт меню Project►Add New Item (Проект►Добавить новый элемент) и щелкните на значке Class Diagram (Диаграмма классов); на рис. 6.1 видно, что файл был переименован с
ClassDiagraml.cd
Cars.cd

После щелчка на кнопке Add (Добавить) отобразится пустая поверхность проектирования. Чтобы добавить типы в визуальный конструктор классов, просто перетаскивайте на эту поверхность каждый файл из окна Solution Explorer (Проводник решений). Также вспомните, что удаление элемента из визуального конструктора (путем его выбора и нажатия клавиши <Delete>) не приводит к уничтожению ассоциированного с ним исходного кода, а просто убирает элемент из поверхности конструктора. Текущая иерархия классов показана на рис. 6.2.

Как говорилось в главе 2. помимо простого отображения отношений между типами внутри текущего приложения можно также создавать новые типы и наполнять их членами, применяя панель инструментов конструктора классов и окно Class Details (Детали класса).
При желании можете свободно использовать указанные визуальные инструменты во время проработки оставшихся глав книги. Однако всегда анализируйте сгенерированный код, чтобы четко понимать, что эти инструменты для вас сделали.
Второй принцип объектно-ориентированного программирования: детали наследования
Теперь, когда вы видели базовый синтаксис наследования, давайте построим более сложный пример и рассмотрим многочисленные детали построения иерархий классов. Мы снова обратимся к классу
Employee
Employees
Далее скопируйте в проект
Employees
Employee.cs
Employee.Core.cs
EmployeePayTypeEnum.cs
EmployeeApp
На заметку! До выхода .NET Core, чтобы использовать файлы в проекте С#, на них необходимо было ссылаться в файле
.csproj
Прежде чем приступать к построению каких-то производных классов, следует уделить внимание одной детали. Поскольку первоначальный класс
Employee
EmployeeApp
Employees
// Не забудьте изменить название пространства имен в обоих файлах С#!
namespace Employees
{
partial class Employee
{...}
}
На заметку! Если вы удалили стандартный конструктор во время внесения изменений в код класса
Employee
Вторая деталь касается удаления любого закомментированного кода из различных итераций класса
Employee
На заметку! В качестве проверки работоспособности скомпилируйте и запустите новый проект, введя
dotnet run
Цель в том, чтобы создать семейство классов, моделирующих разнообразные типы сотрудников в компании. Предположим, что необходимо задействовать функциональность класса
Employee
SalesPerson
Manager
SalesPerson
Employee
Manager
Employee
SalesPerson
Manager
В настоящем примере мы будем считать, что класс
Manager
Employee
SalesPerson
Manager.cs
Manager
// Менеджерам нужно знать количество их фондовых опционов.
- Предыдущая
- 133/642
- Следующая