Junior
Opowiedz o paradygmatach i zasadach programowania obiektowego.
sobes.tech AI
Odpowiedź od AI
Paradygmaty programowania obiektowego:
- Enkapsulacja: Ukrywanie danych i metod wewnątrz klasy, zapewniając dostęp przez interfejs.
- Dziedziczenie: Tworzenie nowych klas (podklas) na podstawie istniejących (nadklas), dziedzicząc ich właściwości i metody.
- Polimorfizm: Możliwość używania obiektów różnych klas przez wspólny interfejs, wykonując specyficzne dla każdej klasy zachowania.
Zasady OOP (SOLID):
- Single Responsibility Principle (SRP): Każda klasa odpowiada za jedną funkcję.
- Open/Closed Principle (OCP): Klasy powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje.
- Liskov Substitution Principle (LSP): Obiekty klasy bazowej mogą być zastąpione obiektami klasy pochodnej bez naruszania poprawności działania programu.
- Interface Segregation Principle (ISP): Klienci nie powinni zależeć od interfejsów, których nie używają.
- Dependency Inversion Principle (DIP): Moduły wyższego poziomu nie powinny zależeć od modułów niższego poziomu; oba powinny zależeć od abstrakcji.
Przykład enkapsulacji i dziedziczenia:
// Klasa bazowa
public class Animal
{
public string Name { get; set; }
public Animal(string name)
{
Name = name;
}
public virtual void MakeSound()
{
Console.WriteLine("Ogólny dźwięk");
}
}
// Klasa pochodna
public class Dog : Animal
{
public Dog(string name) : base(name)
{
}
// Nadpisanie metody klasy bazowej
public override void MakeSound()
{
Console.WriteLine("Hau!");
}
}
Przykład polimorfizmu:
Animal myAnimal = new Dog("Buddy");
myAnimal.MakeSound(); // Wypisze "Hau!"