Czytam aktualnie książkę i pod koniec każdego rozdziału są ćwiczenia do wykonania.
Napisałem w zasadzie kod prawie bez błędu. Problemem było to, że w klasie SportCar nadałem 4 zmienne instancji, a powinny być dwie zmienne instancji oraz 2 zmienne składowe.
Teraz pytanie. Co znaczy dokładnie, że one są składowe? I dlaczego w tym "projekcie" zostały one napisane jako składowe czyli static.
Treść zadanka:
Napisz klasę SportsCar zawierającą dwie zmienne instancji maxSpeed i horsepower typu int. Obie zmienne instancji muszą w każdym obiekcie SportsCar przechowywać wartości większe niż wstępnie określone; w przeciwnym wypadku nie są zakwalifikowane jako właściwe obiekty SportsCar. W naszym wypadku minimalna maxSpeed wynosi 200km/h, a minimalna wartość horsepower 250KM.
Umieść w klasie SportsCar dogodne zmienne składowe do przetrzymywania wspomnianych wartości( zwane maxSpeedRequirement() i horsepowerRequirement() ) i napisz metodę zwaną SportsCheck(), która zwraca wartość true, gdy obydwie zmienne maxSpeed i horsepower dla konkretnego obiektu SportsCar spełniają żądane kryteria, w przeciwnym razie zwracana jest wartość false.
Napisz metodę dostępową i ustawiania maxSpeed, horsepower, maxSpeedRequirement, horsepowerRequirement.
Dodaj do projektu inną klasę zawierającą metodę Main(), aby zademonstrować działanie klasy SportsCar.
using System;
class SportsCar
{
private int maxSpeed = 0;
private int horsepower = 0;
public static int maxSpeedRequirement = 0;
public static int horsepowerRequirement = 0;
public bool SportsCheck()
{
if ((maxSpeed >= maxSpeedRequirement) && (horsepower >= horsepowerRequirement))
{
return true;
}
else
return false;
}
public void SetMaxSpeed(int newMaxSpeed)
{
maxSpeed = newMaxSpeed;
}
public int GetMaxSpeed()
{
return maxSpeed;
}
public void SetHorsepower(int newHorsepower)
{
horsepower = newHorsepower;
}
public int GetHorsepower()
{
return horsepower;
}
public static void SetMaxSpeedRequirement(int newMaxSpeedRequirement)
{
maxSpeedRequirement = newMaxSpeedRequirement;
}
public static int GettMaxSpeedRequirement()
{
return maxSpeedRequirement;
}
public static void SetHorsepowerRequirement(int newHorsepowerRequirement)
{
horsepowerRequirement = newHorsepowerRequirement;
}
public static int GetHorsepowerRequirement()
{
return horsepowerRequirement;
}
}
class SportsCarRun
{
static void Main()
{
SportsCar car1 = new SportsCar();
SportsCar car2 = new SportsCar();
//Wywołanie metody static przez nazwę klasy
SportsCar.SetMaxSpeedRequirement(200);
SportsCar.SetHorsepowerRequirement(250);
//Wywołanie metod instacji poprzez nazwę obiektu
car1.SetMaxSpeed(170);
car1.SetHorsepower(110);
car2.SetMaxSpeed(270);
car2.SetHorsepower(300);
Console.WriteLine("To znaczy, że mój samochód {0} jest sportowy",
car1.SportsCheck() ? "" : "nie");
Console.WriteLine("To znaczy, że mój samochód {0} jest sportowy",
car2.SportsCheck() ? "" : "nie");
Console.ReadLine();
}
}