Classe (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
TobeBot (discussione | contributi)
Xqbot (discussione | contributi)
m Bot: Modifico: de:Klasse (Programmierung); modifiche estetiche
Riga 1:
Nella [[programmazione orientata agli oggetti]] una '''classe''' è un costrutto di un [[linguaggio di programmazione]] usato come modello per creare [[Oggetto (informatica)|oggetti]]. Il modello comprende [[Attributo (informatica)|attributi]] e [[Metodo (informatica)|metodi]] che saranno condivisi da tutti gli oggetti creati.
 
Una classe può rappresentare una persona, un luogo oppure una cosa, ed è quindi l'astrazione di un ''concetto'' implementata in un programma per computer. Fondamentalmente essa definisce al proprio interno lo stato ed il comportamento dell'entità di cui è rappresentazione. I dati che descrivono lo stato sono memorizzati nelle variabili ''membro'', mentre il comportamento è descritto da blocchi di codice riutilizzabile chiamati ''metodi''.
 
== Le classi nell'analisi ''object-oriented'' ==
Il termine '''classe''' può indicare, a seconda del contesto, una ''categoria di oggetti'', un ''tipo di dati'', o l<nowiki>'</nowiki>''implementazione di un tipo di dati''. Queste tre accezioni si trovano rispettivamente (soprattutto) nella [[analisi orientata agli oggetti]], nella [[progettazione orientata agli oggetti]] e nei [[linguaggio di programmazione|linguaggi di programmazione]] [[programmazione orientata agli oggetti|orientati agli oggetti]].
 
Riga 27:
* le [[relazione ISA|relazioni ISA]] (relazione "è un") specificano che una classe deve considerarsi una ''sottocategoria'' o ''sottoclasse'' di un'altra (detta ''superclasse''); per esempio, la classe ''conto corrente'' potrebbe essere descritta come sottocategoria della classe ''servizio bancario''. Il nome della relazione segue dal fatto che si può sensatamente dire, per esempio, che un conto corrente ''è un'' ("is a", ISA) servizio bancario. Si noti che questa rappresenta una relazione esclusivamente fra classi e non fra istanze. La relazione ISA ha un ruolo importante nella razionalizzazione di un modello. Un aspetto fondamentale è che si può assumere che una sottoclasse sia sicuramente dotata di tutti gli attributi, le operazioni e le associazioni della superclasse; eventualmente può averne altre, legate alle particolarità specifiche della sottocategoria di oggetti che descrive. Per esempio, se un ''servizio bancario'' ha un costo annuo ed è intestato a un cliente, tutto ciò resta vero per un ''conto corrente''; quest'ultimo ha inoltre un ''saldo'', attributo che non ha necessariamente senso per tutti i servizi bancari (e che quindi non comparirà nella classe più generica ''servizio bancario'').
 
== Le classi nella progettazione ''object-oriented'' ==
 
La [[progettazione (ingegneria del software)|progettazione]] è una fase del [[ciclo di vita del software]] concettualmente successiva all'analisi del dominio e all'analisi dei requisiti, in cui ci si pone il problema di come realizzare un sistema software che risponda ai requisiti precedentemente esplicitati. Il risultato di questa fase dovrebbe essere un insieme di [[specifica di progetto|specifiche di progetto]] sufficientemente dettagliate e precise da poter essere utilizzate come unico riferimento per la successiva fase di [[implementare|implementazione]], cioè per la costruzione del prodotto software vero e proprio.
Riga 39:
Si può dire che in questa fase il sistema viene descritto in termini di [[tipo di dato astratti|tipi di dati astratti]].
 
== Le classi nei linguaggi ''object-oriented'' ==
 
Una delle caratteristiche fondamentali dell'approccio orientato agli oggetti è la maggiore "fluidità" (rispetto agli approcci precedenti, come quello [[programmazione procedurale|procedurale]]) con cui le fasi di analisi, progettazione e implementazione sfociano ciascuna nella successiva. Questa fluidità è dovuta al fatto che i [[linguaggio di programmazione|linguaggi]] [[programmazione orientata agli oggetti|orientati agli oggetti]] forniscono una serie di strumenti sintattici e semantici che sono la diretta trasposizione degli strumenti concettuali di cui si è parlato per quanto riguarda le fasi di analisi e progettazione.
Riga 47:
Se da un punto di vista storico e tecnico la classe dei linguaggi orientati agli oggetti si può considerare come una evoluzione del [[Struttura dati#Record o struttura|record]] di linguaggi procedurali tipo [[linguaggio C|C]] o [[Pascal (linguaggio)|Pascal]], essa sottende un approccio completamente diverso alla programmazione, in cui i [[tipo di dato|tipi di dati]], corredati delle loro operazioni (metodi) diventano centrali. Gran parte delle novità significative di questo approccio sono legate ai concetti di [[ereditarietà]], [[information hiding]] e [[Polimorfismo (informatica)|polimorfismo]].
 
== Le classi in UML ==
[[UML]] è una notazione grafica semi-formale che consente di descrivere un sistema (non necessariamente software) creandone un [[modello]] basato sui concetti propri dell'orientamento agli oggetti. Poiché tutte le fasi del [[ciclo di vita del software]] orientato agli oggetti utilizzano strumenti concettuali analoghi (classi, associazioni, relazioni ISA), UML può essere usato in modo omogeneo in tutte le fasi. La conseguente uniformità di descrizione ha una serie di vantaggi:
 
Riga 55:
Proprio perché le classi sono fra gli strumenti centrali che consentono di porre in relazione modelli di analisi, modelli di progetto, e implementazioni software, il [[classe (UML)|concetto di classe in UML]] ha una semantica più astratta e concettuale o generale di quanto non avvenga nei linguaggi di programmazione.
 
== Voci correlate ==
* [[Analisi orientata agli oggetti]]
* [[Progettazione orientata agli oggetti]]
Riga 78:
[[cs:Třída (programování)]]
[[da:Klasse (datalogi)]]
[[de:Klasse (objektorientierte Programmierung)]]
[[en:Class (computer science)]]
[[eo:Klaso (objektema programado)]]