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 (interfejsIClonable
) - 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