Programmazione orientata agli oggetti: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Etichette: Modifica da mobile Modifica da web per mobile |
m Bot: sostituisce il tag <source> obsoleto e il parametro "enclose" [https://lists.wikimedia.org/pipermail/wikitech-ambassadors/2020-April/002284.html]; modifiche estetiche |
||
Riga 3:
Tra gli altri vantaggi della programmazione orientata agli oggetti:
* essa fornisce un supporto naturale alla modellazione [[software]] degli oggetti del mondo reale o del modello astratto da riprodurre;
* permette una più facile gestione e manutenzione di progetti di grandi dimensioni;
* l'organizzazione del [[codice sorgente|codice]] sotto forma di [[Classe (informatica)|classi]] favorisce la [[modularità]] e il [[riuso di codice]].
Riga 15:
Più spesso si incontra una realizzazione non esclusiva del paradigma di programmazione orientata agli oggetti, come in [[C++]], [[Java (linguaggio di programmazione)|Java]], [[Delphi]], [[Python]], [[C sharp|C#]], [[Visual Basic .NET]], [[Perl]], [[PHP]] (a partire dalla versione 4).
== Descrizione ==
La programmazione ad oggetti prevede di raggruppare in una zona circoscritta del [[codice sorgente]] (chiamata ''[[#Classi|classe]]''), la dichiarazione delle [[struttura dati|strutture dati]] e delle [[funzione (informatica)|procedure]] che operano su di esse. Le classi, quindi, costituiscono dei modelli astratti, che a [[tempo di esecuzione]] vengono invocate per istanziare o creare [[#Oggetti|oggetti]] software relativi alla classe invocata. Questi ultimi sono dotati di ''attributi'' (dati) e ''[[Metodo (programmazione)|metodi]]'' (procedure) secondo quanto definito/dichiarato dalle rispettive classi.
Riga 102:
==== Esempio - Binding dinamico ====
Si supponga di avere il seguente pseudo codice in Java dove <kbd>Classe2</kbd> è una sottoclasse di <kbd>Classe1</kbd>:
<
void metodo(int input) {
Classe1 c;
Riga 113:
c.faiQualcosaDiImportante();
}
</syntaxhighlight>
Si noti che <kbd>faiQualcosaDiImportante</kbd> è un metodo definito da <kbd>Classe1</kbd> ma potrebbe essere stato ridefinito in <kbd>Classe2</kbd> (perché magari deve essere stampato in maniera diversa). Il compilatore non può sapere a tempo di compilazione se <kbd>c</kbd> è un oggetto associato alla classe <kbd>Classe1</kbd> o <kbd>Classe2</kbd>. Tramite il binding dinamico la scelta su quale metodo effettivamente ''linkare'' sarà effettuata durante l'esecuzione (''runtime''), quando il metodo viene effettivamente chiamato.
|