Metodo (programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
GrouchoBot (discussione | contributi)
Xqbot (discussione | contributi)
m r2.7.3) (Bot: Aggiungo bn:মেথড; modifiche estetiche
Riga 13:
Il riferimento a un oggetto nell'invocazione di un metodo serve anche a indicare il contesto operativo dell'attivazione del metodo; questo infatti ha la possibilità di accedere a tutti i dati interni dell'oggetto su cui è stato invocato.
 
== Tipi di metodi ==
=== Metodi statici ===
La categoria di metodi più comune è quella dei metodi che, come si è detto sopra, vengono invocati con riferimento a un oggetto; questi possono essere detti anche '''metodi di istanza'''. I '''metodi di classe''' - detti anche '''metodi statici''' - rappresentano invece operazioni che non sono da riferirsi ai singoli oggetti ma alla classe nel suo insieme.
 
=== Costruttori ===
{{Vedi anche|Costruttore (programmazione)}}
Una particolare categoria di metodi è costituita dai [[Costruttore (programmazione)|costruttori]],<ref>Nella terminologia tecnica dei vari linguaggi i costruttori vengono talvolta classificati come metodi, altre volte no.</ref> che vengono invocati implicitamente ogni volta che un oggetto viene creato, e che hanno lo scopo generale di inizializzarne i dati interni. In molti linguaggi<ref>Per esempio [[Java (linguaggio)|Java]], [[C++]], [[C sharp|C#]] e [[PHP]]</ref> i costruttori sono facilmente distinguibili perché il loro nome deve coincidere con quello della classe di appartenenza.
 
=== Metodi astratti ===
In programmazione a oggetti, le [[classe astratta|classi astratte]] sono classi che rappresentano concetti troppo generali (e quindi astratti) per poter avere istanze dirette. In una classe di questo genere può accadere che, analogamente, un metodo rappresenti un'operazione troppo astratta per poter avere un'implementazione. Un '''metodo astratto''' è un metodo privo di [[implementare|implementazione]] (definito in una classe astratta) che rappresenta un'operazione generale.
 
Un esempio potrebbe essere un ipotetico metodo <code>area()</code> nella classe <code>Poligono</code>. Sebbene si possa dire che di ogni poligono si può calcolare l'area, potrebbe non essere semplice scrivere le istruzioni che svolgono effettivamente tale calcolo in termini così generali. Tale calcolo si può invece agevolmente introdurre nell'implementazioni di specifiche sottoclassi di <code>Poligono</code>, come <code>Rettangolo</code>. Dichiarando il metodo <code>area</code> nella classe <code>Poligono</code> come metodo astratto, si indica che tutti i poligoni (tutte le sottoclassi di <code>Poligono</code>) devono avere quell'operazione, e allo stesso tempo ''non'' la si fornisce (implementata) nel corpo della classe. La conseguenza è che ogni sottoclasse dovrà necessariamente fornire una propria implementazione del metodo attraverso [[overriding]].<ref>Più propriamente, una sottoclasse ''potrebbe'' non fornire l'implementazione di <code>area</code>, ma in tal caso il metodo rimarrebbe astratto anche nella sottoclasse. Poiché i metodi astratti sono ammessi solo nelle classi astratte, la sottoclasse dovrebbe quindi a sua volta essere astratta. Questo schema può essere effettivamente usato per rappresentare gerarchie di concetti astratti.</ref>
 
=== 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.
 
== Note ==
<references />
 
== Voci correlate ==
* [[Funzione (informatica)|Funzione]]
* [[Subroutine]]
 
[[Categoria:Programmazione orientata agli oggetti]]
 
[[be-x-old:Мэтад (праграмаваньне)]]
[[bn:মেথড]]
[[bs:Računarska metoda]]
[[ca:Mètode (programació)]]