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 metody ToString(). Sortowanie kolekcji wymaga utworzenie delegata realizującego porównanie Comparison lub obiektu implementującego interfejs IComparer.