====== 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 **
{{:zajecia:po_2013_1:10_cs_figury:10_cs_figury.png?500|}}