Una classe è un oggetto con metodi e proprietà.
Nelle lezioni precedenti abbiamo visto come istanziare una variabile e come creare, richiamare un metodo. Adesso vediamo come è possibile creare una classe in C#.
Aperto il progetto -> Aggiungi classe
Inserisci il nome della classe Persona.cs e clicca su aggiungi
In esplora soluzioni è presente il file Persona.cs. Adesso creiamo il contenuto, cioè cosa dovrà fare questa classe.
Una classe è composta dalle sue variabili (proprietà) e funzioni (metodi).
Una classe dichiarata è null. Per instanziare una classe si usa new e in questo caso il compilatore entra nel costruttore. Se nel costruttore è presente un blocco di codice lo esegue. Quindi è un inizializzatore e si possono settare le variabili di default.
/// <summary>
/// Una classe viene istanziata con la parola riservata new
/// Persona p = new Persona();
/// p.Nome = "Antonio";
/// p.Eta = 12;
/// Console.WriteLine( p.Presentati() );
/// </summary>
public class Persona
{
// Proprietà private
private string strNome;
private int intEta;
// Costruttore della classe
public Persona()
{
strNome = "sconosciuto";
intEta = 0;
}
/// <summary>
/// Proprietà pubblica Nome
/// </summary>
public string Nome
{
get
{
return strNome;
}
set
{
strNome = value;
}
}
/// <summary>
/// Proprietà pubblica Età, da notare Eta come variabile
/// è senza accento o avrai un errore dal compilatore
/// </summary>
public int Eta
{
get
{
return intEta;
}
set
{
intEta = value;
}
}
/// <summary>
/// Metodo Presentati della classe Persona
/// dichiara nel metodo una variabile string str
/// e concatena le proprietà per ...presentarsi :-P
/// </summary>
/// <returns></returns>
public string Presentati()
{
string str;
str = "Ciao sono " + strNome + " ed ho " + intEta.ToString() + " anni!";
return str;
}
}
Abbiamo creato una classe Persona con proprietà Nome e Eta ed un metodo Presentati().
E nella classe Program del nostro progetto di Application Console useremo la classe Persona:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Dichiarazione variabile p di tipo Persona
// Appena dichiarata la variabile p è null
Persona p;
// Instanza della classe con parola riservata new
p = new Persona();
// setta le proprietà
p.Nome = "Antonio";
p.Eta = 12;
// richiama metodo Presentati() e lo stampa a video
Console.WriteLine( p.Presentati() );
// Aspetta un invio per chiudere il programma
Console.ReadLine();
}
}
}
Per visualizzare l'esecuzione e cosa fa il compilatore cliccare F10, avvia Debug eseguendo una linea di codice alla volta.
Clicca di nuovo su F10 per andare alla riga di codice successiva, Visual Studio la seleziona in giallo.
Tasto F5 per proseguire normalmente e visualizzare il risultato.
La programmazione a oggetti (OOP) ha i seguenti concetti base:
- Incapsulamento;
- Ereditarietà;
- Polimorfismo;
Incapsulamento
L'incapsulamento è la proprietà per cui i dati che definiscono lo stato interno di un oggetto e i metodi che ne definiscono la logica sono accessibili ai metodi dell'oggetto stesso, mentre non sono visibili ai client. Per alterare lo stato interno dell'oggetto, è necessario invocarne i metodi pubblici, ed è questo lo scopo principale dell'incapsulamento.
Ereditarietà
Il meccanismo dell'ereditarietà è utilizzato in fase di strutturazione/definizione/pianificazione del software o in successive estensioni e permette di derivare nuove classi a partire da quelle già definite realizzando una gerarchia di classi.
Polimorfismo
Il termine polimorfismo indica la possibilità di definire metodi e proprietà con lo stesso nome, in modo che, ad esempio, una classe derivata possa ridefinire un metodo della classe base con lo stesso nome.
I 3 concetti base della OOP (Object Oriented Programming) verranno spiegati con esempi nella prossima lezione.