Sobes.tech
Junior

Pasakokite apie objektinio programavimo paradigmas ir principus.

sobes.tech AI

Atsakymas iš AI

OOP paradigmų:

  1. Inkapsculiacija: Duomenų ir metodų slėpimas klasės viduje, prieigos prie jų suteikimas per sąsają.
  2. Paveldėjimas: Naujų klasių (palikuonių) kūrimas esamų (tėvų) pagrindu, paveldint jų savybes ir metodus.
  3. Polimorfizmas: Galimybė naudoti skirtingų klasių objektus per bendrą sąsają, vykdant kiekvienai klasei būdingą elgesį.

OOP principai (SOLID):

  1. Single Responsibility Principle (SRP): Kiekviena klasė atsakinga už vieną konkretų funkciją.
  2. Open/Closed Principle (OCP): Klasės turi būti atviros plėtrai, bet uždarytos keitimams.
  3. Liskov Substitution Principle (LSP): Pagrindinio klases objektais gali būti pakeisti išvestinių klasių objektai, nesukeliant programos klaidų.
  4. Interface Segregation Principle (ISP): Klientai neturi priklausyti nuo sąsajų, kurių jie nenaudoja.
  5. Dependency Inversion Principle (DIP): Aukštesnio lygio moduliai neturi priklausyti nuo žemesnio lygio modulių. Abu turi priklausyti nuo abstrakcijų. Abstrakcijos neturi priklausyti nuo detalių. Detalės turi priklausyti nuo abstrakcijų.

Inkapsculiacijos ir paveldėjimo pavyzdys:

// Bazinė klasė
public class Animal
{
    public string Name { get; set; }

    public Animal(string name)
    {
        Name = name;
    }

    public virtual void MakeSound()
    {
        Console.WriteLine("Some generic sound");
    }
}

// Išvestinė klasė
public class Dog : Animal
{
    public Dog(string name) : base(name)
    {
    }

    // Pagrindinio metodo perrašymas
    public override void MakeSound()
    {
        Console.WriteLine("Woof!");
    }
}

Polimorfizmo pavyzdys:

Animal myAnimal = new Dog("Buddy");
myAnimal.MakeSound(); // Išves "Woof!"