Главная->Інформатика та програмування->Содержание->Детали изделия в качестве объектов

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 6) онлайн

Детали изделия в качестве объектов

Класс smallobj из предыдущего примера содержал только одно поле данных. Теперь мы рассмотрим более интересный пример. Мы создадим класс, основой для которого послужит структура, описывающая комплектующие изделия и ранее использовавшаяся в программе PARTS главы 4 «Структуры». Рассмотрим следую- щий пример — OBJPART:

// objpart.cpp

// детали изделия в качестве объектов #include  <iostream> using namespace std; //////////////////////////////////////////////////////////

class part             // определение класса

{

private:

int modelnumber;          // номер изделия

int partnumber;               // номер детали

float cost;           // стоимость детали

public: void setpart(int mn, int pn, float c) // установка данных

{

modelnumber = mn; partnumber = pn; cost = c;

}

void showpart()               // вывод данных

{

cout << "Модель " << modelnumber; cout << ", деталь " << partnumber; cout << ", стоимость $" << cost << endl;

}

};

//////////////////////////////////////////////////////////

int main() {

part part1;          // определение объекта класса part

 

part1.setpart(6244, 373, 217.55F);           // вызов метода part1.showpart();                           // вызов метода

return 0;

}

В этой программе используется класс part. В отличие от класса smallobj, класс part состоит из трех полей: modelnumber, partnumber и cost. Метод класса setpart() присваивает значения всем трем полям класса одновременно. Другой метод, showpart(), выводит на экран содержимое полей.

В примере создается единственный объект класса part с именем part1. Метод setpart() присваивает его полям значения соответственно 6244, 373 и 217.55. За- тем метод showpart() выводит эти значения на экран. Результат работы програм- мы выглядит следующим образом: Модель 6244, деталь 373, цена $217.55

Этот пример уже ближе к реальной жизни, чем SMALLOBJ. Если бы вы разра- батывали инвентаризационную программу, то, вероятно, создали бы класс, ана- логичный классу part. Мы привели пример объекта C++, моделирующего реаль- но существующий объект — комплектующие изделия.

Круги в качестве объектов

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

Наша программа будет представлять собой объектно-ориентированную вер- сию программы CIRCSTRC главы 5 (как и в программе CIRCSTRC, вам будет необхо- димо включить функции консольной графики в ваш проект. Эти файлы можно загрузить с сайта издательства, адрес которого указан во введении к данной книге. Описание файлов содержится в приложении Д «Упрощенный вариант консольной графики». Кроме того, полезную информацию можно также найти в приложениях к вашему компилятору). В программе будут созданы три круга с различными параметрами, а затем они появятся на экране. Ниже приведен лис- тинг программы CIRCLES:

// circles.cpp

// круги в качестве Объектов

#include  "msoftcon.h"                // для функций консольной графики

//////////////////////////////////////////////////////////

class circle           //графический Объект "круг"

{

protected:

int xCo,yCo;       // координаты центра

int radius;

color fillcolor;    // цвет

fstyle fillstyle;   // стиль заполнения

public:  // установка атрибутов круга

void set(int x, int y, int r, color fc, fstyle fs) {

xCo = x; yCo = y; radius = r; fillcolor = fc; fillstyle = fs;

}

void draw()        // рисование круга

{

set_color(fillcolor);         // установка цвета и

set_fill_style(fillstyle); // стиля заполнения draw_circle(xCo,yCo,radius); // рисование круга

}

};

//////////////////////////////////////////////////////////

int main() {

init_graphics(); // инициализация графики

circle c1;              // создание кругов

circle c2; circle c3;

// установка атрибутов кругов

c1.set(15, 7, 5, cBLUE, X_FILL);

c2.set(41, 12, 7, cRED, O_FILL);

c3.set(65, 18, 4, cGREEN, MEDIUM_FILL);

c1.draw();           // рисование кругов

c2.draw();

c3.draw();

set_cursor_pos(1,25); // нижний левый угол return 0;

}

Результат работы программы CIRCLES такой же, как и для программы CIRCSTRC (см. рис. 5.5). Возможно, вам будет интересно сравнить две программы. В про- грамме CIRCLES каждый из кругов представлен в виде объекта, а не совокупностью структуры и независимой от нее функции circ_draw(), как это было в программе CIRCSTRC. Обратите внимание, что в программе CIRCLES все, что имеет отношение к кругам, то есть соответствующие данные и функции, объединены в единое целое в определении класса.

Кроме функции draw(), класс circle содержит функцию set(), имеющую пять аргументов и задающую параметры круга. Как мы увидим позже, вместо функ- ции set() лучше использовать конструктор.

 

9