Программирование >>  Структурное программирование 

1 ... 204 205 206 [ 207 ] 208 209 210 ... 342


; return output; допускает сцепленные вызовы

Заметим, что хотя класс Shape является абстрактным базовым классом, он, однако, содержит реализации некоторых функций-элементов; и эти реализации являются наследуемыми. Класс Shape предоставляет наследуемый интерфейс в виде четырех виртуальных функций, которые будут входить во все элементы иерархии. В классе Shape представлены также некоторые реализации, которые будут использоваться производными классами нескольких первых уровней иерархии.

I P0INT1.H

Определение класса Point ?.?;J tifndef P0INT1 H

tdefine P0INT1 H

tinclude <iostream.h> ..! J tinclude shape.h

class Point : public Shape {

friend ostream &operator<<(ostream &, const Point &); public:

Point(float = 0, float = 0); Конструктор с умолчанием

void setPoint(float, float); float getXO const { return x; } float getYO const { return y; } jj.:; virtual void printShapeName () const { cout << Точка: ; }

A- virtual void print() const;

private:

float X, y; Координаты x и у

класса Point

tendif

Рис. 10.2. Определение класса Point (часть 2 из 9) P0INT1.CPP

Определения функций-элементов класса Point tinclude <iostream.h> tinclude pointl.h

Point::Point (float a, float b) { setPoint(a, b); }

void Point::setPoint(float a, float b) {

X = a; y=b;

void Point: :print 0 const { cout [ x , << у ] ; }

Щ ostream &operator<< (ostream Soutput, const Point &p) {

H p.print(); вызов функции print для печати объекта



{ radius = г > О ? г : 0; }

void Circle: : setRadius (float r) { radius = r > 0 ? r : 0; }

float Circle::getRadius() const { return radius; }

oat Circle::area() const { return 3.14159 * radius * radius; }

Circle :: print () const

cout [ getXO , getYO

]; Радиус = << setiosflags(ios::showpoint) setprecision (2 ) radius;

ostream &operator<< (ostream Soutput, const Circle &c) {

c.printO; вызов функции print для печати объекта

return output; допускает сцепленные вызовы

CIRCLEl.H

Определение класса Circle #ifndef CIRCLE1 H m #define CIRCLE1 H tinclude pointl.h

class Circle : public Point {

friend ostream &operator<< (ostream &, const Circle &); t-f-jl public:

.-i- I Конструктор с умолчанием

Circle(float г = 0.0, float x = 0.0, float у = 0.0);

void setRadius(float); float getRadiusO const; virtual float areaO const; *.;;:-. virtual void printShapeName () const { cout Круг: ; } virtual void print () const; private:

float radius; Радиус круга

#endif

Рис. 10.2. Определение класса Circle (часть 4 из 9) CIRCLE1.CPP

Определение функций-элементов класса Circle ..f iinclude <iostream.h>

iinclude <iomanip.h> . iinclude circlel.h

Circle:: Circle (float r, float a, float b)

: Point (a, b) Вызов конструктора

базового класса



Ш <

Circle: :print 0 ;

cout ; Высота = height;

ostream Soperator << (ostream Soutput, const Cylinders c) {

c.printO; вызов функции print для печати объекта

, return output; допускает сцепленные вызовы

CYLINDR1.H

Определение класса Cylinder tifndef CYLINDR1 H tdefine CYLINDR1 H tinclude circlel.h

-class Cylinder : public Circle {

friend ostream &operator<< (ostream &, const Cylinder &); public:

Конструктор с умолчанием Cylinder ( float h = 0.0, float r = 0.0,

float X = 0.0, float у = 0.0); void setHeight(float); virtual float areaO const; virtual float voltime () const;

virtual void printShapeName() const { cout Цилиндр: ; } virtual void print() const;

private:

float height; Высота цилиндра

tendif

Рис. 10.2. Определение класса Cylinder (часть 6 из 9)

Эр CYLINDR1.CPP

Определение функций-элементов и дружественных функций класса Ш: II Cylinder

tinclude <iostream.h> йй; tinclude <iomanip.h>

tinclude cylindrl.h

**?5 Cylinder::Cylinder (float h, float r, float x, float y) tVv. : Circle (r, x, y) вызов конструктора базового класса

{ height = h > О ? h : 0; }

void Cylinder:: setHeight (float h) { height = h > 0 ? h : 0; } float Cylinder:I area 0 const

Площадь поверхности цилиндра

return 2 * Circle::area О + 2 * 3.14159 * Circle::getRadius0 * height;

float Cylinder::volume() const { return Circle::area() * height; } HSf void Cylinder::print() const



1 ... 204 205 206 [ 207 ] 208 209 210 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика