Пример наследования классов

Top  Previous  Next

Модифицируем модель отскакивающего шарика (Как работать с AnyDynamics?, рис.3).

Сохраним описание модели как отдельный класс "ОтскШарик" (для этого нужно нажать правую клавишу мыши на дереве элементов окна

класса "Model" и выполнить команду "Преобразовать описание модели в класс" всплывающего меню). В этом классе сделаем сигнал "Удар" выходом,

перетащив его из ветки "Внутренние переменные" на ветку "Внешние переменные".

 

Используем полученный класс в качестве базового и создадим два его потомка, в одном из которых будет учитываться потеря энергии при отскоке,

а в другом - сопротивление воздуха при движении. В этих случаях шарик уже нельзя будет рассматривать как абстрактную материальную точку,

будем считать, что это теннисный мяч.

 

Нажмем правую клавишу мыши на ветке "Классы" менеджера проекта и выполним команду "Новый класс..". Укажем имя нового класса "ОтскШарНеупр"

и выберем класс "ОтскШарик" в качестве базового. Аналогично создадим новый класс "ОтскШарСопрВозд".

 

В классе  "ОтскШарНеупр" добавим новый параметр "k" - коэффициент восстановления кинетической энергии после отскока и положим его значение 0.7.

Переопределим входные действия в состоянии "Отскок", изменив выражение для нового значения скорости (рис.1). На карте поведения состояние "Отскок"

будет помечено цветом как переопределенное.

 

ОтскШарНеупр

                                                 Рис.1

 

В классе "ОтскШарСопрВозд" добавим несколько параметров и внутреннюю переменную (рис.2).

Параметр "Cf" задает коэффициент аэродинамического сопротивления, для сферы он равен 0.47.

Параметр "d" задает диаметр шарика, для теннисного мяча это примерно 6.5 см.

Параметр "m" задает массу шарика, для среднего теннисного мяча это 60 г.

Параметр "rho" задает плотность воздуха, в нормальных условиях это 1.2 кг/м**3.

Переменная "S" содержит значение площади характерного сечения тела при расчете аэродинамической силы, для сферы это просто площадь сечения.

 

ОтскШарСопрВозд

                                                 Рис.2

 

Добавим новый внутренний непрерывный класс "Движение_шарика_в_возд" (рис.3)

 

ДвижШарикаВВозд

                                 Рис.3

 

Переопределим деятельности в состояниях "ДвижениеВниз" и "ДвижениеВВерх" (рис.2), заменив их на экземпляры класса "Движение_шарика_в_возд".

На карте поведения эти состояния будут помечены цветом как переопределенные.

 

Далее с помощью команды "Преобразовать в ... / Составной объект" преобразуем класс "Model" в составной.

Добавим в структурную схему три объекта: "Ш1" - экземпляр класса "ОтскШарик", "Ш2" - экземпляр класса "ОтскШарНеупр" и "Ш3" - экземпляр класса  "ОтскШарСопрВозд" (рис.4).

 

ОтскШарСтрМод

                                         Рис.4

 

Запустим визуальную модель, создадим окна 3D-анимации (Окно 3D-анимации) и временной диаграммы (Окно диаграммы).

После этого мы сможем наблюдать одновременное движение трех шариков (рис.5).

 

ТриШарикаВизМод

                         Рис.5