home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / PASSRC.ZIP / VIRTUAL2.PAS < prev    next >
Pascal/Delphi Source File  |  1991-02-04  |  3KB  |  129 lines

  1.                                      (* Chapter 15 - Program 2 *)
  2. program Virtual_2;
  3.  
  4. { ******************** class definitions **********************}
  5.  
  6. {$R+}
  7.  
  8. type
  9.    Vehicle = object
  10.       Wheels : integer;
  11.       Weight : real;
  12.       constructor Init(In_Wheels : integer; In_Weight : real);
  13.       procedure Message; virtual;
  14.    end;
  15.  
  16.  
  17.    Car = object(Vehicle)
  18.       Passenger_Load : integer;
  19.       constructor Init(In_Wheels : integer;
  20.                        In_Weight : real;
  21.                        People    : integer);
  22.       procedure Message; virtual;
  23.    end;
  24.  
  25.  
  26.    Truck = Object(Vehicle)
  27.       Passenger_Load : integer;
  28.       Payload        : real;
  29.       constructor Init(People : integer;
  30.                        Max_Load : real;
  31.                        In_Wheels : integer;
  32.                        In_Weight : real);
  33.       procedure Message; virtual;
  34.    end;
  35.  
  36. { ********************* class implementations ******************** }
  37.  
  38.    constructor Vehicle.Init(In_Wheels : integer; In_Weight : real);
  39.    begin
  40.       Wheels := In_Wheels;
  41.       Weight := In_Weight;
  42.    end;
  43.  
  44.    procedure Vehicle.Message;
  45.    begin
  46.       WriteLn('This message is from the vehicle.');
  47.    end;
  48.  
  49.  
  50.  
  51.    constructor Car.Init(In_Wheels : integer;
  52.                         In_Weight : real;
  53.                         People    : integer);
  54.    begin
  55.       Wheels := In_Wheels;
  56.       Weight := In_Weight;
  57.       Passenger_Load := People;
  58.    end;
  59.  
  60.    procedure Car.Message;
  61.    begin
  62.       WriteLn('This message is from the car.');
  63.    end;
  64.  
  65.  
  66.  
  67.    constructor Truck.Init(People : integer;
  68.                           Max_Load : real;
  69.                           In_Wheels : integer;
  70.                           In_Weight : real);
  71.    begin
  72.       Passenger_Load := People;
  73.       Payload := Max_Load;
  74.       Wheels := In_Wheels;
  75.       Weight := In_Weight;
  76.    end;
  77.  
  78.    procedure Truck.Message;
  79.    begin
  80.       WriteLn('This message is from the truck.');
  81.    end;
  82.  
  83.  
  84.  
  85.    procedure Output_A_Message(VAR Machine : Vehicle);
  86.    begin
  87.       Write('This is from Output_A_message; ');
  88.       Machine.Message;
  89.    end;
  90.  
  91.  
  92. { ************************ main program ************************** }
  93.  
  94. var Unicycle : Vehicle;
  95.     Sedan    : Car;
  96.     Semi     : Truck;
  97.  
  98. begin
  99.  
  100.    Unicycle.Init(1, 12.0);
  101.    Sedan.Init(4, 2100.0, 5);
  102.    Semi.Init(1, 25000.0, 18, 5000.0);
  103.  
  104.    WriteLn;
  105.    Unicycle.Message;
  106.    Sedan.Message;
  107.    Semi.Message;
  108.  
  109.    WriteLn;
  110.    Output_A_Message(Unicycle);
  111.    Output_A_Message(Sedan);
  112.    Output_A_Message(Semi);
  113.  
  114. end.
  115.  
  116.  
  117.  
  118.  
  119. { Result of execution
  120.  
  121. This message is from the vehicle.
  122. This message is from the car.
  123. This message is from the truck.
  124.  
  125. This is from Output_A_Message; This message is from the vehicle.
  126. This is from Output_A_Message; This message is from the car.
  127. This is from Output_A_Message; This message is from the truck.
  128.  
  129. }