Car.java





public class Car extends JApplet {
  JTextArea  Xout  = new JTextArea(20, 20);
  public void init() {
    Container cp = getContentPane();
    cp.setLayout(new FlowLayout());
    cp.add(new JLabel("Car"));
    cp.add(new JScrollPane(Xout));
    XCar car = new XCar();
    car.left.window.rollup();
    car.wheel[0].inflate(32);
  }
  
 class Engine {
  public Engine (){
    Xout.append("Engine created" +"\n");
  }
  public void start() {}
  public void rev() {}
  public void stop() {}
 }

 class Wheel {
  private int Number;
  public Wheel (int i){
    Number = i;
    Xout.append("Wheel " + Number +  " created" +"\n");
  }
  public void inflate(int psi) {
    Xout.append("Wheel " + Number + " inflated to:" + psi +  "\n");
  }
 }

 class Window {
  private int Number;
  public Window (int i){
    Number = i;
    Xout.append("Window " + Number +  " created" +"\n");
  }
   public void rollup() {
    Xout.append("Window " + Number + " rolled Up\n"); 
   }
   public void rolldown() {
    Xout.append("Window " + Number + " rolled Down\n"); 
   }
 }

class Door {
  private int Number;
  public Window window; 
  public Door (int i){
    Number = i;
    window = new Window(Number);
    Xout.append("Door " + Number +  " created" +"\n");
  }

  public void open() {
    Xout.append("Door " + Number +  " open" +"\n");
  }
  public void close() {
    Xout.append("Door " + Number +  " close" +"\n");
  }
}

class XCar {
  public Engine engine = new Engine();
  public Wheel[] wheel = new Wheel[4];
  public Door left = new Door(1),
       right = new Door(2); // 2-door
  public XCar() {
    for(int i = 0; i < 4; i++)
      wheel[i] = new Wheel(i+1);
      Xout.append("Car assembled" +"\n");
  }
}
  
 public static void main(String[] args) {
        Console.run(new Car(), 250, 200);
 }
} ///: