Programmazione orientata agli oggetti: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Etichetta: Annulla |
|||
Riga 9:
==Storia==
Il concetto di '''classe''' può essere considerato l'erede del [[w:tipo di dato astratto|tipo di dato astratto]], una tendenza che si è sviluppata all'interno del paradigma della [[w:programmazione procedurale|programmazione procedurale]], secondo la quale un [[w:Modulo (programmazione)|modulo]] dovrebbe implementare un [[w:tipo di dato|tipo di dato]] definito dall'utente, con cui si possa interagire solo attraverso una [[w:interfaccia|interfaccia]] ben definita, che nasconda agli altri moduli i dettagli dell'implementazione, in modo che sia possibile modificarli contenendo gli effetti della modifica sul resto del programma.
La classe può essere vista come il costrutto che permette di realizzare questa astrazione con un supporto strutturato da parte del linguaggio.
Il primo linguaggio di programmazione orientato agli oggetti fu il [[w:Simula|Simula]] ([[w:1967|1967]]), seguito negli [[w:Anni 1970|anni '70]] da [[w:Smalltalk|Smalltalk]] e da varie estensioni del [[w:Lisp|Lisp]]. Negli [[w:Anni 1980|anni '80]] sono state create estensioni orientate ad oggetti del linguaggio [[w:C (linguaggio)|C]] ([[w:C++|C++]], [[w:Objective C|Objective C]], e altri), e di altri linguaggi ([[w:Object Pascal|Object Pascal]]). Negli [[w:Anni 1990|anni '90]] è diventato il paradigma dominante, per cui gran parte dei linguaggi di programmazione erano o nativamente orientati agli oggetti o avevano una estensione in tal senso.
Oggi i linguaggi più usati tra quelli che supportano solo il paradigma di programmazione orientata agli oggetti sono Smalltalk ed [[w:Eiffel (linguaggio)|Eiffel]]. Tuttavia sono linguaggi in generale poco usati.
Line 20 ⟶ 21:
Le [[w:classe (informatica)|classi]] sono uno strumento per costruire [[w:struttura dati|strutture dati]] che contengano non solo dati ma anche il codice per gestirli.
Come tutti
I membri di una classe sono dati (esattamente come i membri di un [[w:Struttura dati#record o struct|record]]), chiamati '''attributi''', e '''metodi''', ovvero [[w:funzione (informatica)|procedure]], che operano su un oggetto.
Line 58 ⟶ 59:
===Sottotipazione===
Se un oggetto di una sottoclasse può essere utilizzato al posto di un'istanza della superclasse,
In numerosi linguaggi, invece, una sottoclasse può decidere di eliminare o cambiare le proprietà di accesso ad un metodo, il che fa sì che l'operazione di subclassing non sia corrispondente a quella di subtyping. Alcuni linguaggi ad oggetti, in particolare [[w:Sather|Sather]], dividono esplicitamente a livello sintattico subclassing e subtyping.
|