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();
}
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), posiada nazwę (string)
  • 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 są w wybranej kolekcji). Wielobok posiada nazwę (string).
    Zauważ, że trójkąt jest szczególnym przypadkiem wieloboku.

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

  • konstruktory pozwalające zainicjować pola składowe
  • konstruktory domyślne (konstruktory kopiujące - w C# metodę Clone() jeżeli potrzeba)
  • metodę zwracającą obwód figury. Zakładamy, że punkt posiada obwód równy 0
  • przeciąż metodę ToString() zwracającą odpowiednie informacje o danej figurze w postaci zmiennej typu string
  • dociąż operator < porównujący dwie figury ze względu na wartość obwodu

Dodatkowo:

  • dla wieloboku zaimplementuj metodę DodajPunkt dodającą nowy wierzchołek do wieloboku
  • dla obiektów realizujących figury zaimplementuj metodę Read() wczytującą zawartość pól obiektu z terminala

Zaimplementuj klasę o nazwie Wykres realizującą dwuwymiarowy układ współrzędnych. Wykres przechowuje zbiór figur. Klasa ta stanowi więc pojemnik do którego możemy dodać dowolną liczbę punktów, kół oraz trójkątów. Do przechowywania figur użyj wybranej kolekcji z przestrzeni nazw System.Collections.Generic.
Dla obiektu reprezentującego wykres:

  • zaimplementuj konstruktor domyślny i kopiujący (dociąż metodę Clone())
  • zaimplementuj metodę pozwalającą dodawać figury do wykresu
  • zaimplementuj metodę dającą dostęp do elementu wykresu o podanym indeksie (najlepiej za pomocą tzw. indexera)
  • dociąż metodę ToString() umieszczającą w łańcuchu znakowym informacje o wszystkich elementach umieszczonych na wykresie

Dodatkowo:

  • W klasie reprezentującej wykres zaimplementuj metodę Sort(), która posortuje kolekcję figur na wykresie w rosnącym porządku ze względu na wartość obwodu.
    Kolejność ta powinna być widoczna po wywołaniu metody ToString(). Sortowanie kolekcji wymaga utworzenie delegata realizującego porównanie Comparison lub obiektu implementującego interfejs IComparer.