Please enable JavaScript.
Coggle requires JavaScript to display documents.
Object Oriented Programming OOP - Coggle Diagram
Object Oriented Programming
OOP
RAPPRESENTAZIONE UML
unified modelling language
standard OMG e standard ISO 19505:2012
linguaggio usato per descrivere, rappresentare e progettare sistemi software
per le CLASSI
completa
: si utilizzano rettangoli a tre sezioni in cui si indicano nomi, attributi e metodi delle classi
sintetica
: si utilizzano rettangoli a tre sezioni in cui si indicano solo i nomi delle classi
per gli OGGETTI
sintetica
: si utilizzano rettangoli a due sezioni in cui si indicano solo i nomi degli oggetti
completa
: si utilizzano rettangoli a due sezioni in cui si indicano i valori relativi agli attributi degli oggetti
visibilità:
pubblica
+
privata
-
protetta
#
PRINCIPI FONDAMENTALI
incapsulamento
definizione
capacità degli oggetti di incorporare attributi e metodi. in questo modo si crea una "barriera concettuale" che differenzia gli oggetti tra loro
dall'incapsulamento deriva l'
information hiding
, ossia il meccanismo che permette di nascondere il funzionamento interno degli oggetti all'utente
polimorfismo
definizione
capacità degli oggetti di assumere comportamenti differenti in base alla firma dei loro membri
i metodi della classe ereditata differiscono dai metodi della classe di base nel numero e/o nel tipo dei parametri
classificazione
overriding
metodi differenti hanno la stessa firma
overloading
metodi omonimi hanno diversi argomenti e comportamenti (differenza nella firma)
ereditarietà
classificazione
gerarchica
SUPERCLASSI e SOTTOCLASSI
una sottoclasse:
può
aggiungere nuovi campi attributi e nuovi campi metodi a quelli della superclasse
può
ridefinire (sovrascrivere) alcuni metodi ereditati dalla superclasse
può
restringere la visibilità di variabili e metodi ereditati dalla superclasse
non può
eliminare campi attributi o campi metodi della superclasse
superclasse
: antenato di una nuova classe (classe madre)
sottoclasse
: discendente di una classe esistente (classe figlia)
ogni sottoclasse eredita attributi e metodi dalla propria superclasse
ogni istanza di una sottoclasse è anche un'istanza della sua superclasse
una sottoclasse rappresenta un tipo più specifico della propria superclasse (relazione di tipo is-a)
tra le classi vale la proprietà transitiva
il meccanismo di ereditarietà è ricorsivo, ossia una sottoclasse può a sua volta avere delle proprie sottoclassi
definizione
processo grazie al quale una classe acquisisce un bagaglio di proprietà da una classe più generica, permettendo di stabilire una classificazione gerarchica tra oggetti senza dover specificare le caratteristiche comuni ad ogni classe
REGOLATA DA
CLASSI
visibilità
privata
(-): rende metodi e variabili inaccessibili dall'esterno; è la visibilità di default
pubblica
(+): rende variabili e metodi accessibili dall'esterno della classe
protetta
(#): rende variabili e metodi accessibili solo all'interno di una classe e delle relative sottoclassi, ma li nasconde dall'esterno
principî d'astrazione
definire le operazioni applicabili agli oggetti del tipo di dato astratto (ADT)
ADT (
abstract data type
): insieme dei valori che può assumere una variabile, incluse le operazioni possibili per quel tipo di dato
limitare l'accesso dell'utente ai dati (
information hiding
)
garantire che la manipolazione degli oggetti avvenga solo tramite operazioni proprie dell'ADT di appartenenza degli stessi
OGGETTI
oggetti simili
appartengono alla stessa classe
condividono la struttura (attributi) e il comportamento (metodi)
mantengono un'identità separata
stato di un oggetto: insieme dei valori di tutti i suoi attributi in un determinato istante; questi devono rispettare delle condizioni booleane (vero/falso)
caratterizzati da
ATTRIBUTI
definizione
qualità misurabili o enumerabili degli oggetti. alcune sono comuni a tutti gli oggetti, mentre altre sono specifiche di una determinata classe
METODI
setters
metodi che permettono di impostare il valore degli attributi
getters
metodi che permettono di leggere il valore degli attributi
definizione
modalità di utilizzo degli oggetti, identificate da verbi (azioni), che caratterizzano il loro comportamento
definizione
entità della realtà o di un problema, identificate da sostantivi, che vengono astratte per essere definite concettualmente e possono interagire tra loro
CARATTERISTICHE
i linguaggi OOP:
hanno ispirato il concetto di componente software
aiutano ad integrare computazione e interazione
utilizzano metodi di sviluppo top-down e bottom-up
affrontano il problema della sostituzione di un software obsoleto (legacy)
per
legacy
si intende il mantenimento volontario di un vecchio software da parte dell'utilizzatore
GENERALITÀ
il primo linguaggio puramente orientato agli oggetti - usato tutt'oggi - fu
Smalltalk
, introdotto da Alan Kay, ricercatore presso il Palo Alto Research Center, in California. oggi i linguaggi OOP più diffusi sono
Java
,
Eiffel
e
C++
metodo di programmazione teorizzato negli anni '80; supera la programmazione strutturata perché affronta i progetti sotto un nuovo punto di vista introducendo gli "oggetti"