ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В 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() лучше использовать конструктор.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Схожі підручники
- Соціальна психологія (частина 1)
- Економічні функції держави в перехідній економіці
- МЕТОДИЧНІ РЕКОМЕНДАЦІЇ ДО ПРОВЕДЕННЯ СЕМІНАРСЬКИХ ЗАНЯТЬ, ОРГАНІЗАЦІЇ І ПРОВЕДЕННЯ САМОСТІЙНОЇ ТА ІНДИВІДУАЛЬНО-КОНСУЛЬТАЦІЙНОЇ РОБОТИ СТУДЕНТІВ
- Товарознавство харчових продуктів функціонального призначення. Навчальний посібник (частина 1)
- Голубая звезда (онлайн)
- Загальні питання з курсу Вища Математика
