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 OGM object Managment Group e standard ISO (19505:2012).
Un linguaggio per specificare, visualizzare e realizzare i prodotti di sistemi software
PER GLI OGGETTI
Completa
si utilizza un rettangolpo con due sezioni con indicati aniche i valori relativi agli attributi che descrivono l'oggetto, con visibilità ottenuta scrivendo
+ (public)
e
- (private)
Sintetica
si utilizza un rettangolpo con due sezioni dove viene indicato solo il nome dell'oggetto
PER LE CLASSI
Completa
si utilizza un rettangolo con tre sezioni con indicati anche gli attributi e i metodi
Sintetica
si utilizza un rettangolpo con tre sezioni dove viene indicato solo il nome della classe
REGOLATA DA:
OGGETTI
DEFINIZIONE
entità del problema o della realtà che vengono
astratti
, sono sempre
sostantivi
e hanno lo scopo di cooperare con altri
oggetti
OGGETTI SIMILI
Per essere simili devono avere
comportamento
uguale (metodi) e
caratteristiche
(attributi) specifiche che differiscono.
Lo
stato
di un oggetto è l'insieme dei valori di un attributo che rispetta condizioni booleane (1 o 0, SI o NO)
COMPOSTI DA:
METODI
SETTERS
Permette di i
mpostare
il metodo interfacciandosi con gli attributi
GETTERS
Permette di
leggere
il metodo interfacciandosi con gli attributi
DEFINIZIONE
Verbi
relativi alle specifiche modalità di utilizzo che caratterizzano il loro
comportamento.
ATTRIBUTI
DEFINIZIONE
Qualsilsi
qualità
misurbile o enumerabile, alcuni sono presenti in tutti gli oggetti altri in sono
caratteristici
di una classe.
CLASSI
DEFINIZIONE
Definire tutte le operazioni applicabili agli oggetti del tipo di dato astratto
garantire che l'utente possa manipolare gli oggetti tramite operazioni del
tipo di dato astratto (TDA)
a cui gli oggetti appartengono (protezione)
Abstract Data Type ADT (TDA in ita): l'insieme dei valori che può assumere una variabile (dato), comprese le operazioni possibili su quel tipo
definire (nascondere) la rappresentazione dei dati all'utente
VISIBILITA'
privata (private "-"):
nasconde metodi e codice che risulteranno non utilizzabili ed è clausola di default
protetta (protected):
sono visibili solamente nella classe dove sono definiti e anche nei metodi delle classi figlie
(pubblic "+")
, ma mai in altri punti del programma
(private "-")
pubblica (pubblic "+"):
permette l'utilizzo di variabili e metodi dall'esterno
CARATTERISTICHE
sono tra le sorgenti d'ispirazione del concetto di componente software
aiutano a integrare computazione e interazione
Utilizzano e intergano le metodologie di sviluppo
top-down
e
bottom-up
aiutano ad affrontare il problema della sostituzione del software obsoleto (
legacy
)
Legacy
: caso in cui una applicazione obsoleta continua ad essere utilizzata perchè l'utente non ha i mezzi finanziari o non vuole sostituirla don una migliore
GENERALITA'
Paradigma sviluppato negli anni 80 che supera la programmazione strutturata poichè sposta il punto di vista dal quale si affronta il progetto aggiungendo una nuova dimensione che sono gli oggetti
Primo vero linguaggio a oggetti "puro" usato tutto oggi fu il linguaggio SmallTalk, introdotto negli anni '70 da
Alan kay
, e poi ripreso da
Adele Goldberg e Daniel Ingalls
. Gli attuali linguaggi a oggetti più rappresentativi sono
Java, Eiffel e C++
PRINCIPI FONDAMENTALI
POLIMORFISMO
DEFINIZIONE
Capacità di far assumere agli oggetti
comportamenti diversi,
determinati da una diversa implementazione dei suoi membri o da una diversa
firma
, cioè i metodi della classe ereditata differiscono dai metodi della classe base nel numero oppure nel tipo di parametri, o in entrambi.
Overloading
o sovraccarico di metodi cioè i metodi con lo stesso nome hanno argomenti diversi con comportamenti diversi; differiscono per la firma
Overriding
o sovrapposizione dei metodi cioè sovrascrivere nella classe derivata, un metodo ereditato, cambiando le istruzioni che descrivono il comportamento ma mantenendo uguale la firma, al momento dell'esecuzione il programma decide quale metodo utilizzare a seconda dell'oggetto, base o derivato, al quale viene applicato il metodo.
EREDITARIETA'
DEFINIZIONE
Processo grazie al quale una classe
acquisisce
un bagaglio di proprietà da una classe più generica per ampliarla e specializzarla in modo da permettere di descrivere una
classificazione
gerarchica di oggetti
senza ridefinire
ogni volta le singole caratteristiche comuni ad ogni classe.
CLASSIFICAZIONE GERARCHICA
SUPERCLASSE & SOTTOCLASSE
FUNZIONI
può aggiungere
nuovi campi attributi e nuovi campy metodi a quelli della superclasse.
può ridefinire
(sovrascrivere) alcuni dei metodi ereditati dalla superclasse, riwscrivendone il codice utilizzando lo stesso nome e firma (override)
può restringere
in qualche modo la visibilità di una variabile o metodo ereditato dalla superclasse
NON PUO' eliminare
campi attributi o metodi della superclasse
Superclasse
: la classe padre di una nuova classe
Sottoclasse
: la classe figlio di una classe già esistente. Ha le seguenti caratteristiche:
Eredita
le caratterstiche della sua superclasse con lo scopo di ottenere oggetti più specializzati
Ogni istanza di una sottoclasse
coincide
con una istanza nella superclasse
Ogni istanza di una sottoclasse è
(IS-A)
un'istanza della sua superclasse (generalizzazione).
La relazione IS-A
è la relazione tra una classe (superclasse o classe base) e una o più versioni specializzate (sottoclassi o classi derivate)
vale la proprietà
transitiva
il meccanismo è
ricorsivo
cioè una sottoclasse può diventare una superclasse con le sue sottoclassi
INCAPSULAMENTO
Incapsulamento
indica la qualità degli oggetti di poter incorporare al loro interno sia gli attributi sia i metodi cioè le caratteristiche e i comportamenti degli oggetti. Si crea come una capsula una barriera concettuale, che isola l'oggetto dalle cose esterne.
INFORMATION HIDING:
Meccanismo di interfacciamento che garantisce il mascheramento (ASTRAZIONE) del funzionamento interno dell'oggetto: solo attraverso l'interfaccia con la classe e la classe stessa comunica all'esterno solo per "cosa fa" e non per "come lo fa".