Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Создание класса управления ракетой.




 

Определим класс CRoket.

class CRocket{}; Опишем в нем закрытые атрибуты, описывающие состояние ракеты. Поскольку атрибуты должны быть закрытыми, то используем для их записи ключевое слово private. Кроме того, в закрытой части класса опишем внутреннюю переменную, хранящую текущее время полета ракеты. А для вычисления текущего местоположения ракеты в каждый момент времени определим закрытую функцию вычисления этих координат ComputeRockCoords. class CRocket{ private: // состояние ракеты bool m_state; // начальное угловое положение ракеты double m_H0,m_P0; // курс и тангаж // текущие координаты в пространстве double m_X,m_Y,m_Z; // скорость ракеты double m_speed; // текущее время полета ракеты double m_t; // функция вычисления тек. координат void ComputeRockCoords(void);}; Заметим, что атрибуты (по-другому называемые еще членами класса) записываем с префиксом «m_». Это одно из негласных правил программистов. Данный префикс сигнализирует программисту, что данная переменная принадлежит классу (от английского слова «member»).

Далее добавим описание интерфейса класса. Интерфейс представляет собой открытые функции-члены класса, к которым будет обращаться основная программа при работе с объектами создаваемого класса. Поскольку интерфейс должен быть открытым для внешнего доступа, то все его элементы (прототипы функций (!)) должны быть описаны с ключевым словом public. Кроме того, по негласному правилу программистов (чуть выше мы говорили об этом), поскольку данная часть класса будет открытой, то в описании класса она должна следовать в самом начале описания класса. Кроме того, определим конструктор класса, в задачу которого будет входить инициализация объекта описываемого класса, а также деструктор.

class CRocket{ public: // конструктор класса CRocket(void); // деструктор класса ~CRocket(void); //функция возврата текущего состояния bool GetState(void); //ф-ия возврата тек. координат ракеты void GetPosition(double *x, double *y, double *z, double *h, double *p); //ф-ия старта ракеты void LaunchRocket(double h0, double p0, double speed); //ф-ия подрыва ракеты void ExplodeRocket(void); private: // состояние ракеты bool m_state; // начальное угловое положение ракеты double m_H0,m_P0; // текущие координаты в пространстве double m_X,m_Y,m_Z; // скорость ракеты double m_speed; // текущее время полета ракеты double m_t; // функция вычисления тек. координат void ComputeRockCoords(void);};

Итак, именно так будет выглядеть описание класса, который нам требуется разработать. Поместим его в специально созданный файл с именем Roket.h.

Теперь приступим к реализации функций, являющихся интерфейсом данного класса. Все функции поместим в специально созданный файл с именем Roket.cpp. Чтобы показать, что реализуемые нами функции принадлежат именно классу CRocket, перед именем каждой функции нужно указывать префикс «CRocket::».

// конструктор классаCRocket::CRocket(){ // состояние ракеты m_state=false; }

 

// деструктор классаCRocket::~CRocket(void){};

 

//функция возврата текущего состоянияbool CRocket::GetState(void){ return m_state;} //ф-ия возврата тек. координат ракетыvoid CRocket::GetPosition(double *x, double *y, double *z, double *h, double *p){ // вычислить координаты ракеты ComputeRockCoords(); *x=m_X; *y=m_Y; *z=m_Z; *h=m_H0*180.0/3.1416; *p=m_P0*180.0/3.1416;} //ф-ия старта ракеты void CRocket::LaunchRocket(double h0, double p0, double speed){ // текущее время полета ракеты double m_t=0.0; // стартовые параметры ракеты m_X=0.0; m_Y=0.0; m_Z=0.0; m_H0=h0*3.1416/180.0; m_P0=p0*3.1416/180.0; m_speed=speed; // ракета полетела m_state=true; printf(”\nRoket’ve started.”);} //ф-ия подрыва ракетыvoid CRocket::ExplodeRocket(void){ // ракета взорвана m_state=false; printf(”Roket exploded.\n”);}

Теперь реализуем закрытые функции класса. Опять же, чтобы показать, что эти реализуемые функции принадлежат именно классу CRocket, перед именем функции нужно указывать префикс «CRocket::». Таких закрытых функций у нас всего одна – функция вычисления текущего положения ракеты в каждый момент времени.

// функция вычисления тек. координатvoid CRocket::ComputeRockCoords(void){ if(m_state) // если ракета летит { // дискретное время полета double dt=0.1; // новые координаты за время dt m_X+=m_speed*cos(m_P0)*sin(m_H0)*dt; m_Y+=m_speed*cos(m_P0)*cos(m_H0)*dt; m_Z+=m_speed*sin(m_P0)*dt; }}

Теперь напишем главную часть программы с функцией main, в которой будет происходить управление объектами класса CRocket. Добавим для упрощения к коду программы функцию управления RocketControl, отвечающую за запуск и подрыв ракеты.

 

#include <stdafx.h>

#include <stdio.h>

#include <stdlib.h>

#include “Roсket.h”





Поделиться с друзьями:


Дата добавления: 2016-11-24; Мы поможем в написании ваших работ!; просмотров: 309 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Два самых важных дня в твоей жизни: день, когда ты появился на свет, и день, когда понял, зачем. © Марк Твен
==> читать все изречения...

2217 - | 2049 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.