//: C14:Car.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Public composition/* Questo programma è un esempio di come utilizzare classi dentro altre classi, ovvero come usare classi annidate. La classe "Door" già al suo interno definisce un oggetto della classe "Window", mentre la classe "Car", la "più grande" richiama tutti oggetti delle altre classi.*/
class Engine
{
public:
void start() const {}
void rev() const {}
void stop() const {}};
class Wheel
{
public:
void inflate(int psi) const {}
};
class Window
{
public:
void rollup() const {}
void rolldown() const {}};
class Door
{
public:
Window window;
void open() const {}
void close() const {}};
class Car
{
public:
Engine engine;
Wheel wheel[4];
Door left, right;
/* 2-door */};
/* Quando nel "main" si definisce un oggetto di classe "Car" automanticamente vengono creati, in associazione, 1 oggetto di classe "Engine", 4 di classe "Whell" e 2 di classe "Door" (ciascuno dei quali deifinisce un oggetto di classe "Window"). Fatto ciò è possibile accedere ai metodi dei vari oggetti a partire dall'oggetto più esterno.*/
int main()
{
Car car;
car.left.window.rollup();
car.wheel[0].inflate(72);} ///:~