Metodo (programmazione): differenze tra le versioni

Aggiunti i metodi di estensione, che non potevano mancare.
m (Orfanizzo Java (linguaggio))
(Aggiunti i metodi di estensione, che non potevano mancare.)
=== Metodi di accesso ===
Un ''metodo di accesso'' (''accessor method'' in [[lingua inglese|inglese]]) è un tipo di metodo, di solito molto semplice e composto da poche righe di codice, che consente l'accesso (in lettura o scrittura) a un [[attributo (programmazione)|attributo]] dell'oggetto. L'uso di metodi di accesso è preferibile rispetto all'accesso diretto ai dati di stato in quanto compatibile con il principio dell'[[information hiding]]. La pratica di scrivere metodi di lettura e di scrittura degli attributi è talmente diffusa che in letteratura esistono nomi specifici per questo genere di metodi: setter (per un metodo che scrive un attributo) e getter (per un metodo che serve a leggere il valore di un attributo). Molti [[Integrated development environment|IDE]] (per esempio [[Netbeans]] e [[Eclipse (informatica)|Eclipse]]) forniscono strumenti di [[refactoring]] che consentono la generazione automatica dei ''getter'' e dei ''setter'' degli attributi degli oggetti.
 
=== Metodi di estensione ===
Un ''metodo di estensione'' (''extension method'' in [[Lingua inglese|inglese]]) è un tipo di metodo che, una volta dichiarato, viene aggiunto automaticamente ad una [[Classe (informatica)|classe]] o ad un tipo dopo la sua [[Compilatore|compilazione]]. Non c'è differenza sintattica tra la chiamata ad un metodo di estensione e la chiamata ad un metodo dichiarato nella definizione del [[Tipo di dato|tipo]].<ref>{{Cita web|url=https://docs.microsoft.com/it-it/dotnet/csharp/programming-guide/classes-and-structs/extension-methods|titolo=Metodi di estensione (Guida per programmatori C#)|autore=dotnet-bot|sito=docs.microsoft.com|lingua=it-it|accesso=2018-09-27}}</ref> I metodi di estensione esistono in molti [[Linguaggio di programmazione|linguaggi di programmazione]]; in [[C#]], ad esempio, vengono [[Implementazione|implementati]] come metodi [[Allocazione statica della memoria|statici]] all'interno di classi statiche, e il primo argomento della loro firma ha per tipo la classe estesa ed è preceduto dalla [[Parola riservata|parola chiave]] "<code>this</code>". Il vantaggio dei metodi di estensione è la possibilità di evitare la creazione di vari helper, solitamente sotto forma di classi statiche con metodi statici, che rappresenterebbero un'alternativa peggiore dal punto di vista della leggibilità del [[Codice (teoria dell'informazione)|codice]]. Inoltre, i metodi di estensione vengono automaticamente integrati nell'[[IntelliSense|Intellisense]] dell'[[Integrated development environment|ambiente di sviluppo]] [[Microsoft Visual Studio|Visual Studio]], migliorando così anche la manutenzione del codice stesso. Il motivo principale per cui i metodi di estensione furono introdotti è rappresentato da [[LINQ]], componente del [[.NET Framework]] di [[Microsoft]] dal 2007.
 
Esempio in C# di una classe con due metodi d'estensione della classe [[Stringa (informatica)|String]]: il primo ne capovolge il contenuto, e il secondo ne trasforma in maiuscola la prima lettera:<syntaxhighlight lang="c#">
public static class StringExtensions
{
public static string Reverse(this string input)
{
if (string.IsNullOrEmpty(input))
{
return string.Empty;
}
char[] chars = input.ToCharArray();
Array.Reverse(chars);
return new String(chars);
}
public static string FirstCharToUpper(this string input)
{
if (string.IsNullOrEmpty(input))
{
return string.Empty;
}
return char.ToUpper(input[0]) + input.Substring(1);
}
}
</syntaxhighlight>
 
== Note ==
6 553

contributi