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(); }

Interfejsy

public interface IPojazd { void Ruszaj(); } public class Rower : IPojazd { void Ruszaj() {...} } public class Auto : IPojazd { 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).

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