C# - Ćwiczenia
Dziedziczenie
public class A { public int a; } public class B : A { public int b; }
Metody wirtualne
public class Pojazd { public virtual void Ruszaj() {...} } public class Rower : Pojazd { public override void Ruszaj() {...} } public class Auto : Pojazd { public override void Ruszaj() {...} }
Metody i klasy abstrakcyjne
public abstract class Pojazd { public abstract void Ruszaj(); }
Przeciążanie metod i operatorów
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 metodyToString()
. Sortowanie kolekcji wymaga utworzenie delegata realizującego porównanie Comparison lub obiektu implementującego interfejs IComparer.