Please enable JavaScript.
Coggle requires JavaScript to display documents.
Object oriented Programming OOP - Coggle Diagram
Object oriented Programming
OOP
GENERALITÀ
modello di programmazione o paradigma più diffuso e utilizzato a partire dal 1980
il primo vero linguaggio a oggetti "puro" usato tutt'oggi fu il linguaggio SmalTalk, introdotto negli anni settanta iniziato da Alan Kay e successivamente ripreso da Adele Goldberg e Daniel Ingalls , ricercatori allo Xerox Park di Palo Alto, California.
Oggi i linguaggi a oggetti più rappresentativi sono Java,Eifell e C++
CARATTERISTICHE
.
sono tra le sorgenti di ispirazione del concetto di componente software
aiutano a integrare computazione e integrazione
utilizzano e integrano 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 continua ad essere usata perché l'utente non ha i mezzi finanziari o non vuole sostituirla con una di migliore prestazione
REGOLATA DA:
OGGETTI
OGGETTI SIMILI
rappresentazione di una qualsiasi cosa che ha comportamenti uguali e caratteristiche specifiche che differenziano tra loro, e l'insieme degli attributi è lo stato di un oggetto
COMPOSTI DA:
METODI
SETTERS
imposta lo spazio di memoria della variabile
" void nome metodo char nome "
tipo dato uscita setnome(tipo di variabile iniziale da impostare);
tipo data uscita
GETTERS
legge il valore assegnato alla variabile
char nome, metodo
tipo dato iniziale getNome();
DEFINZIONE
Gli oggetti hanno specifiche modalità di utilizzo alcuni di uso singolo altri con più modalità di utilizzo che caratterizzano il comportamento dell'oggetto
ATTRIBUTI
Qualsiasi qualità misurabile o enumerabile, alcuni sono presenti in tutti gli oggetti altri invece sono specifici di alcune classi
entità del problema o della realtà che vengono astratti, al loro interno vengono memorizzati attributi (sostantivi) e comportamenti (metodi cioè verbi) in modo tale da cooperare con altri oggetti svolgendo specifiche azioni
DEFINIZIONE
CLASSI
DEFINIZIONE
definire( e nascondere) la rappresentazione dati dell'utente
garantire che l'utente possa manipolare gli oggetti tramite operazioni del tipo di dato astratto (TDA) a cui gli oggetti appartengono (protezione)
definire tutte le operazioni applicabili agli oggetti del tipo di dato astratto
ㅤ
VISIBILITÀ
privata
(private"-") nasconde metodi e codice che
risulteranno non utilizzabili, ed è la 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 in cui risultano privati (private "-")
pubblica
(pubblic "+") permette l'utilizzo di variabili e metodi dall'esterno
RAPPRESENTAZIONE UML
PER LE CLASSI
completa
si utilizza un rettangolo con tre sezioni con indicati anche gli attributi e metodi
sintetica
si utilizza un rettangolo con tre sezioni dove viene indicato solo il nome della classe
PER GLI OGGETTI
completa
si utilizza un rettangolo con due sezioni contenente i valori relativi agli attributi che descrivono l'oggetto con la visibilità ottenuta scrivendo +(pubblic) e -(private)
sintetica
ha due sezioni dove viene indicato solo il nome dell'oggetto
unified modelling language ed è uno standard ogm (object managment group), è un linguaggio per specificare visualizzare e realizzare i prodotti di sistemi software, può rappresentare graficamente gli oggetti
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
POLIMORFISMO
capacità di far assumere agli oggetti comportamenti diversi determinati da una diversa implementazione dei suoi membri o da una diversa
firma
( i metodi della classe ereditata che differiscono dai metodi della classe base nel numero, nei parametri o entrambe)
*tipologie
*
overloading
è sovraccarico di metodi,cioè i metodi con lo stesso nome hanno argomenti diversi con comportamenti diversi e differiscono per la firma
overriding
è la sovrapposizione dei metodi cioè sovrascrive nella classe derivata un metodo ereditato cambiando le istruzioni che descrivono il comportamento ma con la stessa firma, al momento dell'esecuzione il programma decide quale metodo utilizzare a seconda dell'oggetto, base o derivato, al quale viene applicato il metodo
PRINCIPI FONDAMENTALI
INCAPSULAMENTO
possibilità di incorporare (incapsulare) sia gli attributi che i metodi isolando l'oggetto dalle cose esterne (barriera concettuale)
information hiding
fornisce all'utente un meccanismo di interfacciamento che garantisce un mascheramento all'interno dell'oggetto (astrazione)
solo attraverso l'interfaccia si interagisce con la classe e la classe stessa comunica con l'esterno per cosa fa e non per come lo fa
EREDITARIETÀ
Meccanismo per definire nuovi classi in termini di classi esistenti già definite in un più alto livello di astrazione, dalle quali ereditare attributi e metodi, in modo che possano essere gestite collettivamente e riusate.
CLASSIFICAZIONE GERARCHICA
SUPERCLASSE
la superclasse è una classe antenato di una nuova classe
SOTTOCLASSE
la sottoclasse è la classe discendente di una classe esistente, ogni istanza è (IS-A) è un istanza della sua sottoclasse (generalizzazione), vale la proprietà transitiva (ogni istanza della sua sottoclasse è un istanza di tutte le sue classi), una sotto classe può diventare una superlasse delle proprie sottoclassi tramite il meccanismo di ereditarietà, ogni sottoclasse eredita caratteristiche della sua superclasse con lo scopo di ottenre oggetti più specializzati.
relazione di appartenenza (IS-A)
è la relazione tra una classe e una più versioni specializzate di superclassi e per verificare la relazione si ci chiede se E' UN o E' UN TIPO DI
FUNZIONI DI MODELLAZIONE
PUÒ aggiungere nuovi campi attributi e nuovi campi metodi a quelli della superclasse
PUÒ ridefinire (sovrascrivere) alcuni metodi ereditati dalla superclasse, riscrivendone il codice utilizzato e 'lo stesso nome o firma(override)
PUÒ restringere un qualche modo la visibilità di una variabile o un metodo ereditato dalla superclasse
NON PUO' eliminare campi attributi o metodi della superclasse