MiroslavKisov

StartUp.cs

Mar 12th, 2018
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.24 KB | None | 0 0
  1. public abstract class Driver
  2. {
  3.     private string name;
  4.     private double totalTime;
  5.     private Car car;
  6.     private double fuelConsumption;
  7.     private double speed;
  8.  
  9.     public virtual double Speed
  10.     {
  11.         get { return speed; }
  12.         protected set
  13.         {
  14.             value = (Car.HP + Car.Tyre.Degradation) / Car.FuelAmount;
  15.             speed = value;
  16.         }
  17.     }
  18.  
  19.     public virtual double FuelConsumption
  20.     {
  21.         get { return fuelConsumption; }
  22.         protected set { fuelConsumption = value; }
  23.     }
  24.  
  25.     public Car Car
  26.     {
  27.         get { return car; }
  28.         protected set { this.car = value; }
  29.     }
  30.  
  31.     public double TotalTime
  32.     {
  33.         get { return totalTime; }
  34.         protected set { totalTime = value; }
  35.     }
  36.  
  37.     public string Name
  38.     {
  39.         get { return name; }
  40.         protected set { name = value; }
  41.     }
  42.  
  43.     protected Driver(string name, Car car)
  44.     {
  45.         this.Name = name;
  46.         this.TotalTime = 0;
  47.         this.Car = car;
  48.     }
  49. }
  50.  
  51. ///
  52.  
  53. public class AggressiveDriver : Driver
  54. {
  55.     private double speed;
  56.  
  57.     public override double Speed
  58.     {
  59.         get { return speed; }
  60.         protected set { speed = base.Speed * 1.3; }
  61.     }
  62.  
  63.     public AggressiveDriver(string name, Car car) : base(name, car)
  64.     {
  65.         this.Name = name;
  66.         this.Car = car;
  67.         this.FuelConsumption = 2.7d;
  68.     }
  69. }
  70.  
  71. ///
  72.  
  73. public class EnduranceDriver : Driver
  74. {
  75.     public EnduranceDriver(string name, Car car) : base(name, car)
  76.     {
  77.         this.Name = name;
  78.         this.Car = car;
  79.         this.FuelConsumption = 1.5d;
  80.     }
  81. }
  82.  
  83. ///
  84.  
  85. using System;
  86.  
  87. public class Car
  88. {
  89.     private long hp;
  90.     private double fuelAmount;
  91.     private Tyre tyre;
  92.  
  93.     public Tyre Tyre
  94.     {
  95.         get { return tyre; }
  96.         private set { tyre = value; }
  97.     }
  98.  
  99.     public double FuelAmount
  100.     {
  101.         get { return fuelAmount; }
  102.         private set
  103.         {
  104.             if (value < 0)
  105.             {
  106.                 throw new ArgumentException("Out of fuel");
  107.             }
  108.             fuelAmount = value;
  109.         }
  110.     }
  111.  
  112.     public long HP
  113.     {
  114.         get { return hp; }
  115.         private set { hp = value; }
  116.     }
  117.  
  118.     public Car(int hp, double fuelAmount, Tyre tyre)
  119.     {
  120.         this.HP = hp;
  121.         this.FuelAmount = fuelAmount;
  122.         this.Tyre = tyre;
  123.     }
  124. }
  125.  
  126. ////
  127.  
  128. using System;
  129.  
  130. public abstract class Tyre
  131. {
  132.     private string name;
  133.     private double hardness;
  134.     private double degradation;
  135.  
  136.     public virtual double Degradation
  137.     {
  138.         get { return degradation; }
  139.         protected set
  140.         {
  141.             if (value < 0)
  142.             {
  143.                 throw new ArgumentException("Blown Tyre");
  144.             }
  145.             degradation = value;
  146.         }
  147.     }
  148.  
  149.     public double Hardness
  150.     {
  151.         get { return hardness; }
  152.         protected set { hardness = value; }
  153.     }
  154.  
  155.     public string Name
  156.     {
  157.         get { return name; }
  158.         protected set { name = value; }
  159.     }
  160.  
  161.     protected Tyre(double hardness)
  162.     {
  163.         this.Hardness = hardness;
  164.         this.Degradation = 100;
  165.     }
  166.  
  167.     public virtual void DegradeTyre()
  168.     {
  169.         this.Degradation -= this.Hardness;
  170.     }
  171. }
  172.  
  173. ////
  174.  
  175. using System;
  176.  
  177. public class UltrasoftTyre : Tyre
  178. {
  179.     public UltrasoftTyre(double hardness) : base(hardness)
  180.     {
  181.         this.Grip = grip;
  182.     }
  183.  
  184.     private double grip;
  185.     private double degradation;
  186.  
  187.     public override double Degradation
  188.     {
  189.         get { return degradation; }
  190.         protected set
  191.         {
  192.             if (value < 30)
  193.             {
  194.                 throw new ArgumentException("Blow Tyre");
  195.             }
  196.             degradation = value;
  197.         }
  198.     }
  199.  
  200.     public double Grip
  201.     {
  202.         get { return grip; }
  203.         protected set { grip = value; }
  204.     }
  205.  
  206.     public override void DegradeTyre()
  207.     {
  208.         double sum = this.Hardness += this.Grip;
  209.         this.Degradation -= sum;
  210.     }
  211. }
  212.  
  213. ///
  214.  
  215. public class HardTyre : Tyre
  216. {
  217.     public HardTyre(double hardness) : base(hardness)
  218.     {
  219.         this.Hardness = hardness;
  220.     }
  221.     public override void DegradeTyre()
  222.     {
  223.         this.Degradation -= this.Hardness;
  224.     }
  225. }
Advertisement
Add Comment
Please, Sign In to add comment