Электронный учебник

§ 47. Объекты и классы

Как мы увидели в предыдущем параграфе, для того чтобы построить объектную модель, нужно:

•    выделить взаимодействующие объекты, с помощью которых можно достаточно полно описать поведение моделируемой системы;

•    определить свойства объектов, существенные в данной задаче;

•    описать поведение (возможные действия) объектов, т. е. команды, которые объекты могут выполнить.

Этап разработки модели, на котором решаются перечисленные выше задачи, называется объектно-ориентированным анализом (ООА). Он выполняется до того, как программисты напишут самую первую строчку кода, и во многом определяет качество и надёжность будущей программы.

Рассмотрим объектно-ориентированный анализ на примере простой задачи. Пусть нам необходимо изучить движение автомобилей на шоссе, например, для того, чтобы определить, достаточна ли его пропускная способность. Как построить объектную модель этой задачи? Прежде всего, нужно разобраться, что такое объект.
Объектом можно назвать то, что имеет чёткие границы и обладает состоянием и поведением.
Состояние объекта определяет его возможное поведение. Например, лежачий человек не может прыгнуть, а незаряженное ружьё не выстрелит.

В нашей задаче объекты — это дорога и двигающиеся по ней машины. Машин может быть несколько, причём все они, с точки зрения нашей задачи, имеют общие свойства. Поэтому нет смысла подробно описывать каждую машину по отдельности: достаточно один раз определить их общие черты, а потом просто сказать, что все машины ими обладают. В ООП для этой цели вводится специальный термин — «класс».
Класс — это множество объектов, имеющих общую структуру и общее поведение.
Например, в рассматриваемой задаче можно ввести два класса — Дорога и Машина. По условию, дорога одна, а машин может быть много.

Будем рассматривать прямой отрезок дороги, в этом случае объект «дорога» имеет два свойства, важных для нашей задачи: длину и ширину — число полос движения (рис. 7.3). Эти свойства определяют состояние дороги. «Поведение» дороги может заключаться в том, что число полос меняется, например, из-за ремонта покрытия, но в нашей простейшей модели объект «дорога» не будет изменяться.

Схематично класс Дорога можно изобразить в виде прямоугольника с тремя секциями: в верхней записывают название класса, во второй части — свойства, а в третьей — возможные действия, которые называют методами. В нашей модели дороги два свойства и ни одного метода (рис. 7.4).

Теперь рассмотрим объекты класса Машина. Их важнейшие свойства — координаты и скорость движения. Для упрощения будем считать, что:

•    все машины одинаковы;

•    каждая машина движется по дороге слева направо с постоянной скоростью (скорости разных машин могут быть различными);

•    по каждой полосе движения едет только одна машина, так что можно не учитывать обгон и переход на другую полосу;

•    если машина выходит за правую границу дороги, вместо неё слева на той же полосе появляется новая машина.

Не все эти допущения выглядят естественно, но такая простая модель позволит понять основные принципы метода.

За координаты машины можно принять расстояние X от левого края рассматриваемого участка шоссе и номер полосы Y (натуральное число — рис. 7.5). Скорость автомобиля V в нашей модели — неотрицательная величина.

Рис. 7.5


Теперь рассмотрим поведение машины. В данной модели она может выполнять всего одну команду — ехать в заданном направлении (назовём её «двигаться»). Говорят, что объекты класса Машина имеют метод «двигаться» (рис. 7.6).


Метод — это процедура или функция, принадлежащая классу объектов.


Другими словами, метод — это некоторое действие, которое могут выполнять все объекты класса.

Пока мы построили только модели отдельных объектов (точнее, классов). Чтобы моделировать всю систему, нужно разобраться, как эти объекты взаимодействуют. Объект-машина должен уметь «определить», в каком месте дороги он находится. Для этого машина должна обращаться к объекту «дорога», запрашивая длину дороги (см. стрелку на рис. 7.7).

Схема на рис. 7.7 определяет:

•    свойства объектов;

•    операции, которые они могут выполнять;

•    связи (обмен данными) между объектами.

В то же время мы пока ничего не говорили о том, как устроены объекты и как именно они будут выполнять эти операции, и это не случайно. Согласно принципам ООП, ни один объект не должен зависеть от внутреннего устройства и алгоритмов работы других объектов. Поэтому, построив такую схему, можно поручить разработку двух классов объектов двум программистам, каждый из которых может решать свою задачу независимо от других. Важно только, чтобы все они чётко соблюдали интерфейс — правила, описывающие взаимодействие «своих» объектов с остальными.

 

Вопросы и задания

1.    Какие этапы входят в объектно-ориентированный анализ?

2.    Что такое объект?

3.    Что такое класс? Чем различаются понятия «класс» и «объект»?

4.    Что такое метод?

5.    Как изображаются классы на схеме?

6.    Почему при объектно-ориентированном анализе не уточняют, как именно объекты будут устроены и как они будут решать свои задачи?


 

Возрат в главу

 

 

 

 

Block title

Вход на сайт

Поиск

Календарь

«  Декабрь 2024  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031

Архив записей

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0