54 lines
1.7 KiB
C#
54 lines
1.7 KiB
C#
namespace ObiektowaTeoria
|
|
{
|
|
// Klasa abstrakcyjna - a, która nie może być bezpośrednio
|
|
// zainstancjonowana (nie można tworzyć jej obiektów). Deklaruje się
|
|
// ją za pomocą słowa kluczowego za pomocą "abstract". Może zawierać zarówno
|
|
// metody abstrakcyjne (bez implementacji), jak i metody z implementacją.
|
|
// Służy jako szablon dla klas dziedziczących, zapewniając wspólny interfejs i
|
|
// bazową funkcjonalność. Klasy dziedziczące muszą implementować wszystkie metody
|
|
// abstrakcyjne.
|
|
public abstract class Figura
|
|
{
|
|
public abstract double Pole();
|
|
}
|
|
|
|
// Klasa dziedzicząca implementująca abstrakcyjną metodę
|
|
public class Kwadrat : Figura
|
|
{
|
|
public double Bok;
|
|
|
|
public Kwadrat(double bok)
|
|
{
|
|
Bok = bok;
|
|
}
|
|
|
|
public override double Pole()
|
|
{
|
|
return Bok * Bok;
|
|
}
|
|
}
|
|
|
|
// Interfejs - czysty kontrakt, który definiuje metody i właściwości, ale nie zawiera ich implementacji.
|
|
// Definiuje się go za pomocą słowa kluczowego interface. Klasy implementujące interfejs muszą dostarczyć implementację
|
|
// wszystkich jego metod. Pozwala na tworzenie luźno powiązanych komponentów i ułatwia wielodziedziczenie zachowań.
|
|
public interface IRysowalny
|
|
{
|
|
void Rysuj();
|
|
}
|
|
|
|
// Klasa implementująca interfejs
|
|
public class Kolo : IRysowalny
|
|
{
|
|
public double Promien;
|
|
|
|
public Kolo(double promien)
|
|
{
|
|
Promien = promien;
|
|
}
|
|
|
|
public void Rysuj()
|
|
{
|
|
Console.WriteLine("Rysuję koło o promieniu " + Promien);
|
|
}
|
|
}
|
|
} |