C# - Ćwiczenia

public class A 
{
   public int a;
}
 
public class B : A 
{
   public int b;
}
public class Pojazd 
{
   public virtual void Ruszaj() {...}
}
 
public class Rower : Pojazd 
{
   public override void Ruszaj() {...}
}
 
public class Auto : Pojazd 
{
   public override void Ruszaj() {...}
}
public abstract class Pojazd 
{
   public abstract void Ruszaj();
}
public interface IPojazd 
{
   void Ruszaj();
}
 
public class Rower : IPojazd 
{
   void Ruszaj() {...}
}
 
public class Auto : IPojazd 
{
   void Ruszaj() {...}
}
using System;
 
public struct Complex 
{
   public int real;
   public int imaginary;
 
   public Complex(int real, int imaginary) 
   {
      this.real = real;
      this.imaginary = imaginary;
   }
 
   public static Complex operator +(Complex c1, Complex c2) 
   {
      return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary);
   }
   public override string ToString()
   {
      return(String.Format("{0} + {1}i", real, imaginary));
   }
}

Zadanie: Zbiór figur

Zaimplementuj klasy pozwalające reprezentować zbiór figur geometrycznych w dwu wymiarowej przestrzeni.

W układzie współrzędnych umieszczane będą następujące obiekty:

  • Punkt – opisany współrzędnymi o wartościach rzeczywistych (x, y).
  • Koło – określone przez współrzędne środka (punkt na płaszczyźnie) oraz promień, posiada nazwę (string)
  • Trójkąt – określony przez współrzędne 3 punktów, posiada nazwę (string)

Dodatkowo:

  • Wielobok - opisany jest listą punktów definiujących położenie wierzchołków (punkty przetrzymywane w dowolnej kolekcji). Wielobok posiada nazwę (string).
    Zauważ, że trójkąt jest szczególnym przypadkiem wieloboku.

Dla wszystkich figur umieszczanych na wykresie zdefiniuj następujące operacje:

  • konstruktory pozwalające zainicjować wszystkie pola składowe
  • konstruktory domyślne
  • metodę Clone() zwracającą kopię obiektu (interfejs IClonable)
  • metodę zwracającą obwód figury. Jeżeli uznamy, że punkt jest szczególnym przypadkiem figury to jego obwód będzie wynosił 0
  • przeciąż metodę ToString() zwracającą odpowiednie informacje o danej figurze w postaci zmiennej typu string
  • przeciąż metodę Equals tak aby dwie figury tego samego typu i o tych samych parametrach (współrzędne, promień, itd. ) były traktowane jako identyczne
  • dociąż operator < porównujący figury względem długości obwodu

Dla klasy określającej punkt zdefiniuj operację pozwalającą:

  • modyfikować współrzędne punktu (np. własności set/get)
  • obliczyć odległość pomiędzy parą punktów (np. metoda statyczna przyjmująca dwa punkty w argumentach)

Dodatkowo:

  • dla wieloboku zaimplementuj metodę DodajPunkt pozwalającą dodać nowy wierzchołek do wieloboku
  • dla wszystkich figur zaimplementuj metodę pozwalającą przesunąć figurę (zmienić wszystkie współrzędne punktów określających jego położenie)
  • utwórz interfejs związany z obsługą konsoli dla figur wymuszający zaimplementowanie 2 metod
    • metodę wczytującą zawartość pól obiektu z terminala
    • metodę wyświetlającą (wypisującą) figurę (obiekt) na terminalu
    • niech jedna z figur implementuje ten interfejs

Przykładowy diagram UML