Модель локализации/делегирования
Модель локализации/делегирования
Как уже отмечалось в этой главе, наследование можно реализовать двумя способами. Только что мы исследовали классическое отношение подчиненности ("is-a"). Чтобы завершить обсуждение второго принципа ООП, давайте рассмотрим отношение локализации (отношение "has-a", также известное под названием модели локализации/делегирования). Предположим, что мы создали новый класс, моделирующий пакет льгот работника.
// Этот тип будет функционировать, как вложенный класс.
public class BenefitPackage {
// Другие члены, представляющие пакет страховок,
// медицинского обслуживания и т.д.
public double ComputePayDeduction() {return 125.0;}
}
Ясно, что отношение подчиненности ("is-a") между типами BenefitPackage (пакет льгот) и Employee (работник) выглядело бы достаточно странно. (Является ли менеджер пакетом льгот? Вряд ли.) Но должно быть ясно и то, что какая-то связь между этими типами необходима. Короче, вы должны выразить ту идею, что каждый работник имеет ("has-a") пакет льгот. Для этого определение класса Employee следует обновить так", как показано ниже.
// Работники теперь имеют льготы.
public class Employee {
…
// Содержит объект BenefitPackage.
protected BenefitPackage empBenefits = new BenefitPackage();
}
Здесь вы успешно создали вложенный объект. Но чтобы открыть функциональные возможности вложенного объекта внешнему миру, требуется делегирование. Делегирование означает добавление в класс-контейнер таких членов, которые будут использовать функциональные возможности содержащегося в классе объекта. Например, можно изменить класс Employee так, чтобы он открывал содержащийся в нем объект empBenefits с помощью некоторого свойства, а также позволял использовать функциональные возможности этого объекта с помощью нового метода GetBenefitCost().
public class Employee {
protected BenefitPackage empBenefits = new BenefitPackage();
// Открытие некоторых функциональных возможностей объекта.
public double GetBenefitCost() {
return empBenefits.ComputePayDeduction();
}
// Доступ к объекту через пользовательское свойство.
public BenefitPackage Benefits {
get {return empBenefits;}
set {empBenefits = value;}
}
}
В следующем обновленном методе Main() обратите внимание на то, как можно взаимодействовать с внутренним типом BenefitsPackage, определяемым типом Employee.
static void Main(string[] args) {
Manager mel;
mel = new Manager();
Console.WriteLine (mel.Benefits.ComputerPayDeduction());
…
Consolе.ReadLine();
}
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
1.7. Модель OSI
1.7. Модель OSI Распространенным способом описания уровней сети является предложенная Международной организацией по стандартизации (International Standards Organization, ISO) модель взаимодействия открытых систем (open systems interconnection, OSI). Эта семиуровневая модель показана на рис. 1.5, где она
Модель ISO/OSI
Модель ISO/OSI Пожалуй, ключевым понятием в стандартизации сетей и всего, что к ним относится, является модель взаимодействия открытых систем (Open System Interconnection, OSI), разработанная «Международной организацией по стандартизации» (International Standards Organization, ISO). На практике применяется
11.2. Настройка системных средств локализации
11.2. Настройка системных средств локализации 11.2.1. Проверка наличия средств локализации Современные дистрибутивы Linux (а тем более русифицированные) по умолчанию содержат системные средства локализации, перечисленные в предыдущем разделе.Чтобы убедиться в этом,
11.2.1. Проверка наличия средств локализации
11.2.1. Проверка наличия средств локализации Современные дистрибутивы Linux (а тем более русифицированные) по умолчанию содержат системные средства локализации, перечисленные в предыдущем разделе.Чтобы убедиться в этом, проверьте, что у вас имеются каталоги /usr/share/locale/* и
11.2.2. Формат задания значений переменных локализации
11.2.2. Формат задания значений переменных локализации В качестве значений переменных локализации используются строки формата ll[_CC[.EEEE]][@dddd], где • ll - это двухбуквенный код языка в соответствии со стандартом ISO для названий языков (ISO 639), записываемый в нижнем регистре
11.2.3 Включение средств локализации
11.2.3 Включение средств локализации Включение системных средств локализации в Red Hat Linux (а, следовательно, и в других дистрибутивах, основанных на Red Hat) осуществляется из файла /etc/profile.d/lang.sh.Как известно, при старте любого shell-а сначала выполняется /etc/profile. В Red Hat в /etc/profile
8.16.1 Модель EGP
8.16.1 Модель EGP Маршрутизатор EGP конфигурируется с адресом IP для одного или нескольких внешних соседних маршрутизаторов. Обычно внешние соседи соединены с общей сетью с множественным доступом или объединены одной линией "точка-точка".EGP позволяет маршрутизатору
14.3 Модель FTP
14.3 Модель FTP Как видно из приведенного выше диалога, пользователь взаимодействует с локальным клиентом FTP (точнее, с соответствующим процессом). Программное обеспечение локального клиента управляет преобразованием данных для удаленного сервера FTP через управляющее
15.2 Модель RPC
15.2 Модель RPC Приложение клиент/сервер для архитектуры ONC функционирует поверх RPC. Работа RPC моделируется обычными вызовами подпрограмм. Например, в языке программирования С вызов обычной подпрограммы в общем случае имеет форму:код_возврата = имя_процедуры
15.14 Модель файлов NFS
15.14 Модель файлов NFS NFS прекрасно согласуется с клиентами и серверами, имеющими файловую структуру, подобную Unix. Операционная система Unix хранит файлы в иерархическом дереве каталогов (хотя существуют успешные реализации NFS с плоской структурой каталогов, например на
16.19.1 Модель каталога
16.19.1 Модель каталога Информационная база каталога (Directory Information Base) распределена среди группы баз данных, управляемых агентами обслуживания каталогов (Directory Service Agent — DSA). Пользователи обращаются к каталогам через пользовательский агент каталога (Directory User Agent — DUA). DUA
Глава 9 Установка пакетов локализации
Глава 9 Установка пакетов локализации К сожалению, добавить на LiveCD Ubuntu локализацию для всех языков не представляется возможным из-за крайне ограниченного места. Однако, как я уже говорил, при наличии соединения с интернетом все необходимые пакеты будут автоматически
Анализ программного кода делегирования
Анализ программного кода делегирования Предложенный выше метод Main() начинается с создания экземпляров типов Garage и ServiceDepartment. Когда вы пишете// Помыть все грязные машины.g.ProcessCars(new Car.CarDelegate(sd.WashCar));это на самом деле означает: "Добавить указатель на метод ServiceDepartment.WashCar() к
Модель
Модель В любом интерьере наибольшее количество объектов — это модели. Модель может иметь произвольную форму: от примитивных сферы или куба до реалистичных форм человеческой фигуры. Модель призвана передавать формы конкретных объектов. Например, создавая интерьер, мы
2.2.1. Настройка локализации
2.2.1. Настройка локализации Несмотря на выбор русского языка при запуске Ubuntu, интерфейс GNOME останется на английском до тех пор, пока не будут установлены пакеты локализации. Пути решения проблемы следующие:? установить Ubuntu как есть (собственно установка будет
Web-модель
Web-модель Web-модель получила свое название, поскольку базируется на популярных браузерах Netscape Navigator и Microsoft Internet Explorer, используемых как средства навигации во Всемирной Паутине - World Wide Web. Эта модель предусматривает встраивание в готовый браузер набора открытых ключей