Edytuj stronę Odnośniki Fold/unfold all ODT export Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić. ====== C# - Ćwiczenia ====== ===== Dziedziczenie ===== <code c#> public class A { public int a; } public class B : A { public int b; } </code> ===== Metody wirtualne ===== <code C#> public class Pojazd { public virtual void Ruszaj() {...} } public class Rower : Pojazd { public override void Ruszaj() {...} } public class Auto : Pojazd { public override void Ruszaj() {...} } </code> ===== Metody i klasy abstrakcyjne ===== <code C#> public abstract class Pojazd { public abstract void Ruszaj(); } </code> ===== Interfejsy ===== <code C#> public interface IPojazd { void Ruszaj(); } public class Rower : IPojazd { void Ruszaj() {...} } public class Auto : IPojazd { void Ruszaj() {...} } </code> ===== Przeciążanie metod i operatorów ===== <code C#> 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)); } } </code> ====== 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 ** {{:zajecia:po_2013_1:10_cs_figury:10_cs_figury.png?500|}}