Junior
Pasakokite apie objektinio programavimo paradigmas ir principus.
sobes.tech AI
Atsakymas iš AI
OOP paradigmų:
- Inkapsculiacija: Duomenų ir metodų slėpimas klasės viduje, prieigos prie jų suteikimas per sąsają.
- Paveldėjimas: Naujų klasių (palikuonių) kūrimas esamų (tėvų) pagrindu, paveldint jų savybes ir metodus.
- Polimorfizmas: Galimybė naudoti skirtingų klasių objektus per bendrą sąsają, vykdant kiekvienai klasei būdingą elgesį.
OOP principai (SOLID):
- Single Responsibility Principle (SRP): Kiekviena klasė atsakinga už vieną konkretų funkciją.
- Open/Closed Principle (OCP): Klasės turi būti atviros plėtrai, bet uždarytos keitimams.
- Liskov Substitution Principle (LSP): Pagrindinio klases objektais gali būti pakeisti išvestinių klasių objektai, nesukeliant programos klaidų.
- Interface Segregation Principle (ISP): Klientai neturi priklausyti nuo sąsajų, kurių jie nenaudoja.
- 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!"