FunctionX - Practical Learning Logo

A Class as a Member Variable of Another Class

This is an example of one object (the shape class implements a rectangle) being a member variable of another object (a brick).

Header File: shape.h

#ifndef _SHAPE_H
#define _SHAPE_H

class FRectangle
{
public:
	FRectangle(double l = 0, double w = 0)
		: Length(l), Width(w) {}
	void setLength(double lgt);
	void setWidth(double wdt);
	double getLength() const;
	double getWidth() const;
	double Perimeter() const;
	double Area() const;
	void Properties();
private:
	double Length;
	double Width;
};

#endif // _SHAPE_H

Source File: shape.cpp

#include <iostream.h>
#include "shape.h"

void FRectangle::setLength(double lgt)
{
	Length = lgt;
}

void FRectangle::setWidth(double wdt)
{
	Width = wdt;
}

double FRectangle::getLength() const
{
	return Length;
}

double FRectangle::getWidth() const
{
	return Width;
}

double FRectangle::Perimeter() const
{
	return 2 * (Length + Width);
}

double FRectangle::Area() const
{
	return Length * Width;
}

void FRectangle::Properties()
{
	cout << "\nRectangle characteristics";
	cout << "\n\tLength    = " << Length;
	cout << "\n\tWidth     = " << Width;
	cout << "\n\tPerimeter = " << Perimeter();
	cout << "\n\tArea      = " << Area() << endl;
}

Header File: brick.h

#ifndef BRICK_H_
#define BRICK_H_

#include "shape.h"

class Brick
{
public:
	Brick() {}
	void setThickness(double Tck);
	void setDimensions(double l, double w, double t);
	void setColor(char* clr);
	void setTexture(char* txr);
	char* getColor() const;
	char* getTexture() const;
	double Volume() const;
	void Display();
private:
	FRectangle shape;
	char* Color;
	char* Texture;
	double Thickness;
};

#endif // BRICK_H_

Source File: brick.cpp

#include <iostream.h>
#include "brick.h"

void Brick::setThickness(double Tck)
{
	Thickness = Tck;
}

void Brick::setColor(char* clr)
{
	Color = clr;
}

void Brick::setTexture(char* txr)
{
	Texture = txr;
}

void Brick::setDimensions(double l, double w, double t)
{
	shape.setLength(l);
	shape.setWidth(w);
	setThickness(t);
}

char* Brick::getColor() const
{
	return Color;
}

char* Brick::getTexture() const
{
	return Texture;
}

double Brick::Volume() const
{
	return shape.getLength() * shape.getWidth() * Thickness;
}

void Brick::Display()
{
	cout << "\nBrick characteristics";
	cout << "\n\tLength   = " << shape.getLength();
	cout << "\n\tWidth    = " << shape.getWidth();
	cout << "\n\tArea     = " << shape.Area();
	cout << "\n\tVolume   = " << Volume();
	cout << "\n\tColor    = " << getColor();
	cout << "\n\tTextture = " << getTexture();
	cout << endl;
}

Main File: Exo.cpp

#include "shape.h"
#include "brick.h"

void main()
{
	Brick brick;

	brick.setDimensions(12.50, 8.75, 5.55);
	brick.setColor("Bone White");
	brick.setTexture("Early Breeze");

	brick.Display();
}

Here is an example of running the program:
Brick characteristics
        Length   = 12.5
        Width    = 8.75
        Area     = 109.375
        Volume   = 607.031
        Color    = Bone White
        Textture = Early Breeze
 

C++ Tutorial Copyright © 2001 FunctionX, Inc.