Le classi

Una struttura dati che definisce e mantiene lo stato e il comportamento in una singola unità. La creazione avviene mediante l’utilizzo della parola chiave class:

class Auto { ... }

Se non specifichiamo niente la classe sarà visibile solo all’interno dell’assembly che la contiene, in questo caso il modificatore implicito è internal. L’opposto public consente la visibilità da parte di altri assembly.

Una classe può contenere:

  • membri dati – campi e costanti;
  • membri funzione – metodi, proprietà, eventi, indicizzatori, operatori, costruttori o distruttori;

Per poter accedere ai membri di una classe si utilizza l’operatore punto:

int len = Console.Title.Lemght;

Campi e costanti

I campi sono variabili che appartengono a una classe e il suo ambito si estende al solo corpo della classe in cui vengono definiti, questo significa che implicitamente sono definiti come private. Per utilizzarli all’esterno dobbiamo definirli public, ma in questo caso non viene rispettata la regola dell’incapsulamanto.

Una costante è un campo il cui valore è predeterminato a tempo di compilazione. Le stringhe interpolate possono essere create anche per mezzo di costanti

const string Potenza = "55kW";
const string Modello = $"Fiesta {Potenza}";
const string Marca = $"Ford {Modello}";

Se la costante viene inizializzata in fase di esecuzione dobbiamo usare il modificatore readonly.

Metodi

Permettono di definire il comportamento di un oggetto.

public class Auto
{
   public void Consumo(int Chilometri) { ... }
}

I metodi possono accedere agli altri membri della classe, per poter chiamare il metodo all’esterno della classe dovremmo specificare anche il nome dell’istanza

...
Auto auto = new Auto();
auto.Consumo(284);
...

Si parla di overloading quando abbiamo più metodi con lo stesso nome ma con i parametri differenti per numero o tipo.

I parametri passati al metodo vengono passati per valore, possiamo decidere di passarli per riferimento anteponendo il modificatore ref. Se il parametro è un tipo di riferimento tutte le modifiche fatte all’interno del metodo si rifletteranno sull’oggetto che è stato utilizzato come parametro anche all’uscita dal metodo stesso.

Membri statici

Possiamo istanziare due oggetti Auto e ognuno ha dei valori diversi:

Auto autoUno = new Auto("Ford", "Fiesta");
Auto autoDue = new Auto("Fiat", "Panda");

Possiamo avere la necessità di condividere alcuni membri fra tutte le istanze, in questo caso i membri devono avere la definizione static.

class Auto
{
   public static int numAuto;

   public Auto(string Marca, string Modello)
   {
      ...
      numAuto++;
      ...
   }
}

Il contatore delle auto viene incrementato ogni volta che viene istanzata, possiamo accedere al valore di questa variabile indicando anche il nome della classe:

Auto.numAuto.

Le proprietà

Permettono di implementare il meccanismo di incapsulamento, controllando le modalità di accesso ai campi privati di una classe tramite get e set.

Follow by Email
Facebook
Twitter
Telegram