ВУЗ:
Business, мы могли бы применить следующий оператор:
SmallBusiness BusinessX;
Обратите внимание, что этот оператор ничем не отличается от используемого в языке программирования С для объяв-
ления, что Cost является переменной типа integer:
int Cost;
Несмотря на общее сходство, эти операторы имеют несколько существенных отличий. Одно из них состоит в том, что
"тип" объекта принято называть классом. Таким образом, класс – это описание структуры объекта. В некотором смысле
класс представляет собой шаблон, который используется для создания объекта. Другое отличие заключается в том, что тип
integer является встроенным типом языка программирования, тогда как класс SmallBusiness – это "тип", который
должен быть описан в каком-то месте программы.
Для описания классов многие объектно-ориентированные языки программирования включают специальные операторы,
подобные представленному ниже:
class SmallBusiness
{
.
.
.
};
Первая строка этого объявления означает, что блок операторов внутри фигурных скобок определяет класс под названи-
ем Small-Business. Внутри фигурных скобок объявляются разнообразные методы, описывающие, как объект типа
SmallBusiness должен реагировать на различные внешние воздействия. Объявления методов напоминают описание
обычных процедур и функций.
Обобщая сказанное, можно сделать вывод, что в нашей моделирующей программе сначала следует воспользоваться
оператором class для описания класса с именем SmallBusiness, а затем поместить операторы объявления приведенного
выше типа для указания, что в программе будут использоваться объекты.
Наследование. К сожалению, многие малые предприятия, работу которых мы собираемся моделировать, имеют разные
особенности. Предприятие, принимающее заказы на доставку товаров по почте, должно отвечать на поступающие заявки и
пополнять свой запас товаров на складе. Тогда как небольшое предприятие, занимающееся консалтингом, взаимодействует
со своими клиентами совершенно иным образом. Однако между этими предприятиями достаточно много общего. Например,
все они подчиняются одним и тем же законам налогообложения, одинаково обрабатывают платежные ведомости и сходным
образом пополняют запасы канцелярских товаров.
Для того чтобы упростить описание объектов, имеющих больше одинаковых свойств, чем разных, многие объектно-
ориентированные языки программирования позволяют одному классу включать свойства другого посредством механизма,
называемого наследованием (inheritance). Предположим, что для разработки нашей программы моделирования будет исполь-
зоваться язык Java. В этом случае сначала можно было бы применить приведенный выше оператор объявления для описания
класса SmallBusiness, содержащего те методы, которые являются общими для всех малых предприятий в данном прило-
жении.
А затем использовать приведенный ниже оператор для описания другого класса, например, с именем MailOrderBusi-
ness:
class MailOrderBusiness extends SmallBusiness
{
.
.
.
}
В языке C++ нужно просто заменить слово extends двоеточием. Этот оператор означает, что данный класс наследует
все свойства класса SmallBusiness, а также дополнительно имеет свойства, указанные внутри фигурных скобок. Анало-
гично можно было бы описать и другой класс под названием ConsultingBusiness, который также наследует свойства
класса SmallBusiness и одновременно обладает свойствами, характерными только для предприятий, занимающихся кон-
салтингом. После того как указанные выше классы будут описаны, появится возможность использовать следующие операто-
ры:
MailOrderBusiness BusinessX;
ConsultingBusiness BusinessY;
Эти операторы указывают, что переменная BusinessX является объектом, описывающим малое предприятие, прини-
мающее заказы по почте, а переменная BusinessY – это объект, описывающий малое предприятие, занимающееся консал-
тингом.
Инкапсуляция и полиморфизм. Существование множества объектов, имеющих сходные, но все же отличающиеся ха-
рактеристики, приводит к явлению, напоминающему перегрузку, речь о которой шла в разделе 5.2. (Напомним, что понятие
перегрузки означает использование одного и того же символа, например знака +, для представления разных операций в зави-
симости от типа указанных операндов.) Предположим, что объектно-ориентированный графический пакет состоит из разно-
образных объектов, каждый из которых описывает некоторую фигуру (окружность, прямоугольник, треугольник и т.п.). Ка-
ждое изображение состоит из совокупности таких объектов. Для каждого объекта известны его размер, положение и цвет, а
также то, как он реагирует на сообщения, требующие от него определенных действий, например перемещение в новое поло-
жение или отображение самого себя на экране. Для того чтобы нарисовать изображение в целом, мы просто посылаем сооб-
щение "нарисуй себя" каждому из объектов, образующих это изображение. Однако программы, рисующие отдельные объек-
Страницы
- « первая
- ‹ предыдущая
- …
- 130
- 131
- 132
- 133
- 134
- …
- следующая ›
- последняя »