Advertisement
PhilDrummer

Assignment_4 02 TEMPERATURE.e

Oct 11th, 2014
1,076
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. note
  2.     description: "Temperature."
  3.  
  4. class
  5.     TEMPERATURE
  6.  
  7. create
  8.     make_celsius, make_kelvin
  9.  
  10. feature -- Initialization
  11.  
  12.     make_celsius (v: INTEGER)
  13.             -- Create with Celsius value `v'.
  14.         require
  15.             v >= -273
  16.         do
  17.             celsius := v
  18.         ensure
  19.             celsius = v
  20.             celsius >= -273
  21.         end
  22.  
  23.     make_kelvin (v: INTEGER)
  24.             -- Create with Kelvin value `v'.
  25.         require
  26.             v >= 0
  27.         do
  28.             celsius := v - 273
  29.         ensure
  30.             celsius >= -273
  31.             kelvin >= 0
  32.             kelvin = celsius + 273
  33.         end
  34.  
  35. feature -- Access
  36.  
  37.     celsius: INTEGER
  38.             -- Value in Celsius scale.
  39.  
  40.     kelvin: INTEGER
  41.             -- Value in Kelvin scale.
  42.         require
  43.             celsius >= -273
  44.         do
  45.             Result := celsius + 273
  46.         ensure
  47.             kelvin >= 0
  48.         end
  49.  
  50.     fahrenheit: INTEGER
  51.             -- Value in Fahrenheit scale.
  52.         require
  53.             celsius >= -273
  54.         do
  55.             Result := ((celsius * 1.8) + 32).rounded
  56.         ensure
  57.             fahrenheit >= -460
  58.         end
  59.  
  60. feature -- Measurement
  61.  
  62.     average (other: TEMPERATURE): TEMPERATURE
  63.             -- Average temperature between `Current' and `other'.
  64.         require
  65.             other /= void
  66.         do
  67.             create Result.make_celsius ((other.celsius + current.celsius) // 2)
  68.         ensure
  69.             ((other.celsius <= celsius) and (celsius <= current.celsius)) or ((current.celsius <= celsius) and (celsius <= other.celsius))
  70.         end
  71.  
  72. invariant
  73.     kelvin_never_below_zero: kelvin >= 0
  74.     celsius_never_below_min: celsius >= -273
  75.     fahrenheit_never_below_min: fahrenheit >= -460
  76.  
  77. end
Advertisement
RAW Paste Data Copied
Advertisement