Junior
Parla dei paradigmi e dei principi della programmazione orientata agli oggetti.
sobes.tech AI
Risposta dell'AI
Paradigmi OOP:
- Incapsulamento: Nascondere dati e metodi all'interno di una classe, fornendo accesso tramite un'interfaccia.
- Ereditarietà: Creare nuove classi (sottoclassi) basate su classi esistenti (superclass), ereditando proprietà e metodi.
- Polimorfismo: Capacità di usare oggetti di diverse classi tramite un'interfaccia comune, eseguendo comportamenti specifici di ogni classe.
Principi di OOP (SOLID):
- Principio di Responsabilità Singola (SRP): Ogni classe ha una singola responsabilità.
- Principio Aperto/Chiuso (OCP): Le classi devono essere aperte all'estensione, ma chiuse alla modifica.
- Principio di Sostituzione di Liskov (LSP): Gli oggetti di una classe base possono essere sostituiti con oggetti di una classe derivata senza alterare la correttezza del programma.
- Principio di Segregazione delle Interfacce (ISP): I clienti non devono dipendere da interfacce che non usano.
- Principio di Inversione delle Dipendenze (DIP): I moduli di alto livello non devono dipendere da moduli di basso livello; entrambi devono dipendere da astrazioni.
Esempio di incapsulamento e ereditarietà:
// Classe base
public class Animal
{
public string Name { get; set; }
public Animal(string name)
{
Name = name;
}
public virtual void MakeSound()
{
Console.WriteLine("Suono generico");
}
}
// Classe derivata
public class Dog : Animal
{
public Dog(string name) : base(name)
{
}
// Sovrascrivere metodo della classe base
public override void MakeSound()
{
Console.WriteLine("Bau!");
}
}
Esempio di polimorfismo:
Animal myAnimal = new Dog("Buddy");
myAnimal.MakeSound(); // Stampa "Bau!"