• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kompozycja c#

Object Storage Arubacloud
0 głosów
1,504 wizyt
pytanie zadane 21 grudnia 2017 w C# przez PelikanFix16 Użytkownik (950 p.)

Dzień dobry, po kursie na udemy "C# Intermediate: Classes, Interfaces and OOP" napisałem na szybko przykład użycia kompozycji.
Czy to jest prawidłowo wykonane?
Jeżeli nie, które elementy należy poprawić, aby było to prawidłowo wykonane.

 

using System;

namespace composition
{
    public interface IVehicle
    {
        int Fuel { get; }
        void Drive();
        void Refuel(int fuel);
       
    }
    public interface IEngine
    {   
        int RotationSpeed { get; }
        void ChangeRotationSpeed(int rotation);

    }

    public class Engine:IEngine
    {
        public int RotationSpeed { get; private set; }
        public Engine(int rotation)
        {
            RotationSpeed = rotation;
        }

        public void ChangeRotationSpeed(int rotation)
        {
            if (rotation<=0)
            {
                throw new Exception("Bad rotation number");
            }
            RotationSpeed = rotation;


        }

    }
    public class Vehicle : IVehicle
    {
        private readonly IEngine _engine;
        public int Fuel { get; private set; }

        public Vehicle(IEngine engine)
        {
            _engine = engine;
        }
        public void Refuel(int fuel)
        {
            Fuel = fuel;
        }

        public void Drive()
        {
            if (_engine.RotationSpeed == 0)
            {
                throw new Exception("No fuel");
            }
            Fuel--;
            _engine.ChangeRotationSpeed(Fuel*13);
            


        }
    }
    public class Plane : Vehicle
    {
        public Plane(IEngine engine):
            base(engine)
        {

        }
    }
    public class Car : Vehicle
    {
        public Car(IEngine engine) :
            base(engine)
        {

        }
    }
    public class Boat : Vehicle
    {
        public Boat(IEngine engine) :
            base(engine)
        {

        }
    }





    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                IVehicle boat = new Boat(new Engine(100));
                boat.Refuel(200);
                while (boat.Fuel != 0)
                {
                    boat.Drive();
                    Console.WriteLine(boat.Fuel);
                }
            
            }
            catch(Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                Console.ReadKey();
            }
          


        }
    }
}

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 947 wizyt
0 głosów
0 odpowiedzi 424 wizyt
pytanie zadane 16 grudnia 2017 w Systemy operacyjne, programy przez pionk18 Obywatel (1,590 p.)
0 głosów
1 odpowiedź 1,087 wizyt
pytanie zadane 17 października 2016 w C# przez Alex.Ironside Stary wyjadacz (14,900 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...