Guadagna online

Fidelityhouse.eu

venerdì 10 febbraio 2012

C# - 4° Lezione

Continuiamo a parlare di Classi, un argomento molto vasto ed impostante. Nella scorsa lezione abbiamo visto come definire le proprietà di una classe e come gestirle. In questa lezione vedremo un altro concetto fondamentale, i metodi statici e i namespace.

Metodi statici
Negli esempi visti finora, per accedere ai metodi della classe Persona occorreva creare un'istanza della classe. In alcuni casi, tuttavia, può risultare utile avere delle procedure che non hanno bisogno di un'istanza per essere utilizzate, ma che possono essere richiamate semplicemente con il nome della classe.
Ad esempio, supponiamo che il metodo Somma di cui abbiamo parlato nella seconda lezione sia contenuto nella classe «Matematica». È sensato pensare che una procedura di questo tipo possa essere richiamata senza dover prima creare un'istanza della classe che la contiene. Per questo si usa la parola chiave static in questo modo: 
{codecitation class="brush: c#; gutter: false;"} 
 public static int Somma(int a, int b)
{
 
 return a + b; 
} 
{/codecitation}
L'utilizzo di questa routine è immediato: 
{codecitation class="brush: c#; gutter: false;"}  
 //s assume il valore 8
 int s = Matematica.Somma(3,5);  
{/codecitation}
Anche le funzioni WriteLine() e ReadLine() della classe Console, che abbiamo introdotto in precedenza, sono proprio metodi statici.


I namespace
Più classi possono essere raggruppate in un unico namespace. Ad esempio:
{codecitation class="brush: c#; gutter: false;"} 
 namespace Prova
{
  public class Classe1
  { }

  public class Classe2
  { }
}
 {/codecitation}
Con questo costrutto, per dichiarare, ad esempio, un oggetto di tipo Classe1è necessario scrivere:
{codecitation class="brush: c#; gutter: false;"} 
 Prova.Classe1 c1 = new Prova.Classe1();
{/codecitation}
Fatto questo, è possibile accedere ai metodi ed alle proprietà delle classi nel modo che abbiamo usato nelle precedenti lezioni. I namespace sono sempre public.
È possibile definire anche namespace annidati, ad esempio: 
{codecitation class="brush: c#; gutter: false;"}  
 namespace N1
{
  namespace N2
  {
    public class Classe1
    { }

    public class Classe2
    { }
  }
}

N1.N2.Classe1 c1 = new N1.N2.Classe1();
N1.N2.Classe2 c2 = new N1.N2.Classe2(); 
{/codecitation} 
Tutte le classi che compongono il framwork.NET sono organizzate in namespace. Ad esempio, la classe Form, da cui ereditano tutte le Windows form (che tratteremo in seguito) è raggiungibile nel namespaceWindows.System.Forms.Form. 
Per non dover indicare ogni volta i namespace in cui si trovano le classi che si stanno utilizzando, è possibile utilizzare la parola chiave using (analoga a import di Java), con cui si specifica in quali namespace devono essere cercate le classi. 
Le clausole using devono essere specificate all'inizio della classe, prima di qualunque altra istruzione. Ad esempio, nel programma «HelloWorld» realizzato nelle precedenti lezioni si fa uso della classe Console, che è contenuta nel namespace System; invece di indicarlo esplicitamente, è possibile ricorrere alla parola chiave using: 
{codecitation class="brush: c#; gutter: false;"}  
 using System;

public class HelloWorld
{
  public static void Main()
  {
    Console.WriteLine("Ciao Mondo!");
    Console.ReadLine();
  }
} 
{/codecitation}

0 commenti:

Posta un commento

adf.ly 2.3g