10 - Cria uma classe chamada Car
com três variáveis de instância, speed
(float
), weight (float
) e fuelType (enumeração Fuel
com 4 valores
possíveis: Gasoline
, Diesel
, LPG
e Electric
). A classe deve ter ainda
uma variável de classe (estática) chamada maxSpeed (float
), com valor por
omissão igual a 220.0f. A classe deve ter um único construtor que aceita
argumentos para inicializar as variáveis weight e fuelType, inicializando
a variável speed a zero. A classe deve ter os seguintes métodos:
Accelerate(float x)
- Aumenta a velocidade com o valor indicado na variávelx
, mas nunca acima de maxSpeed. Devolve a nova velocidade.Break(float x)
- Diminui a velocidade com o valor indicado na variávelx
, mas nunca abaixo de zero. Devolve a nova velocidade.GetSpeed()
- Retorna o valor atual da velocidade sem a alterar.GetFuelType()
- Retorna o tipo de combustível.GetWeight()
- Retorna o peso do carro.GetMaxSpeed()
eSetMaxSpeed()
- Métodos estáticos para obter e definir o valor da variável de classemaxSpeed
.
Cria ainda uma classe chamada TestCar
contendo um método estático Main()
para testar exaustivamente todos os métodos da classe Car
.
namespace TestCar
{
// Fuel enum
enum Fuel
{
// Types of fuel
Gasoline,
Diesel,
LPG,
Electric
}
}
namespace TestCar
{
class Car
{
// Instance Variables
private float weight;
private float speed;
private Fuel fueltype;
// Static variables
private static float maxSpeed = 220.0f;
// Car constructor
public Car(float weight, Fuel fueltype)
{
// Initiating speed as 0
speed = 0;
// Assigning variable's values
this.weight = weight;
// Gets fuel from Fuel enum
this.fueltype = fueltype;
}
// METHODS
// Add speed -- returns new speed value
public float Accelerate(float x)
{
// Adds x to speed
speed += x;
// Case entered speed passes maxSpeed
if (speed >= maxSpeed) { speed = maxSpeed; };
return speed;
}
// Subtract speed -- returns new speed value
public float Break(float x)
{
// Subtracts x from speed
speed -= x;
// Case entered speed is less tan 0
if (speed <= 0) { speed = 0; };
return speed;
}
// Sets maxSpeed
public static void SetMaxSpeed(float x) => maxSpeed = x;
// Returns speed value
public float GetSpeed() => speed;
// Returns fuel type
public Fuel GetFuelType() => fueltype;
// Returns weight of car
public float GetWeight() => weight;
// Returns maxSpeed
public static float GetMaxSpeed() => maxSpeed;
}
}
using System;
namespace TestCar
{
class TestCar
{
static void Main(string[] args)
{
// Creating test cars
Car fiatPunto = new Car(1000.5f, Fuel.Gasoline);
Car tesla = new Car(600.23f, Fuel.Electric);
Car van = new Car(2000.9f, Fuel.LPG);
// Start testing methods!
// Fiat punto's values as instatiated
Console.WriteLine
($"Fiat Punto's fuel: {fiatPunto.GetFuelType()}");
Console.WriteLine
($"Fiat Punto's weight: {fiatPunto.GetWeight()}\n");
// Tesla's values as instantiated
Console.WriteLine
($"Tesla's fuel: {tesla.GetFuelType()}");
Console.WriteLine
($"Tesla's weight: {tesla.GetWeight()}\n");
// Van's values as instantiated
Console.WriteLine
($"Van's fuel: {van.GetFuelType()}");
Console.WriteLine
($"Van's weight: {van.GetWeight()}\n");
// Base Max Speed
Console.WriteLine
($"All cars' Max Speed is: {Car.GetMaxSpeed()}");
// The "race" starts here
Console.WriteLine("THE RACE STARTS!\n");
// Giving more than maxSpeed to fiatPunto -- to see what happens
Console.WriteLine("Fiat Punto accelerates...");
Console.WriteLine
($"Fiat Punto's speed: {fiatPunto.Accelerate(250.0f)}");
// Breaking with fiatpunto
Console.WriteLine("Fiat Punto breaks...");
Console.WriteLine
($"Fiat Punto's decreased speed: {fiatPunto.Break(130.0f)}\n");
// Setting a new maxSpeed for all cars
Car.SetMaxSpeed(400.0f);
Console.WriteLine($"Max Speed is now: {Car.GetMaxSpeed()}\n");
// Giving acceleration to tesla
Console.WriteLine("Tesla accelerates...");
Console.WriteLine
($"Tesla's speed: {tesla.Accelerate(399.9f)}\n");
// Breaking with fiatPunto to less than minimum speed
Console.WriteLine("Fiat Punto stops");
Console.WriteLine
($"Fiat Punto's decreased speed: {fiatPunto.Break(92.0f)}\n");
// Accelerating van
Console.WriteLine("Van accelerates...");
Console.WriteLine
($"Van's speed: {van.Accelerate(100.5f)}\n");
// Giving stoping to tesla
Console.WriteLine("Tesla breaks and stops");
Console.WriteLine
($"Tesla's speed: {tesla.Break(399.9f)}\n");
// Accelerating van
Console.WriteLine("Van reverses until it stops...");
Console.WriteLine
($"Van's speed: {van.Accelerate(-100.5f)}\n");
}
}
}
Por João Rebelo