Please enable JavaScript.
Coggle requires JavaScript to display documents.
Object Oriented Programming, generalità, definizione, oggetti simili -…
Object Oriented Programming
regolata da:
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(tipo di dato astratto TDA)
insieme ai valori che può assumere le operazioni possibili su dati di quel tipo
definire( e nascondere) la rappresentazione dei dati all'utente
visibilità
privata (private "-") nasconde metodi di 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 (private"-")
pubblica (pubblic "+") permette l'utilizzo di variabili e metodi dall'esterno
oggetti
composti da:
metodi
setters
ella sezione public sono stati inseriti i metodi generalmente chiamati setters e getters (set per impostare get per leggere) che permettono di interfacciarsi con gli attributi preseenti nella sezione privata
getters
nella sezione private sono stati inseriti gli attributi con la dichiarazione di tipo (int, real, char, bool) dove gli oggetti possono comunicare (information hiding) attraverso interfacce ( sezione pubblica ) generalizzando il concetto di tda
definizione
gli oggetti hanno delle specifiche modalità di utilizzo (es il coltello taglia, il piano cottura scalda la forchetta infilza )
alcuni alcuni di uso singolo altri con modalità più di utilizzo (il coltello taglia spalma infilza ) che caratterizzano il loro comportamento.
attributi
attributi
qualsiasi qualità misurabile o enumerabile può costituire un attributo (es peso delle patate, dimensione del piano cottura ) alcuni attributi sono presenti in tutti gli oggetti altri invece sono caratteristici di una sola classe
oggetti simili
rappresentazione di una qualsiasi cosa che ha compotamenti uguali(metodi) e caratteristiche specifiche (attributi) che li differenziano tra loro (es coltello , machete)
oggetto
entità del problema che vengono astratti, vengono memorizzati al suo interno degli specifici attributi e comportamenti(metodi) in modo tale da cooperare con altri OGGETTI svolgendo specifiche azioni
Modello di programmazione più diffuso e utilizzato a partire dagli anni ottanta del 900
il primo vero linguaggio a oggetti "puro" usato tutt'oggi fu il linguaggio SmallTalk introdotto negli anni '70 inizialmente da alan kay e successivamente ripreso da Adele Goldberg e daniel ingalls, entrambi ricercatori allo xerox park di palo alto, california.
Oggi i linguaggi a oggetti più rappresentativi sono java eifel e C++
rappresentazione UML
UML unified modelling language standart OGM
object management group e standart iso (19505:2012)
un liguaggio per specificare visualizzare e realizzare i prodotti di sistemi software
per gli oggetti
2 completa si utilizza un rettangolo con due sezioni con indicati anche i valori relativi gli attributi che descrivono l'oggetto con la visibilità ottenuta scrivendo +(public) e - (private)
1 sintetica si utilizza un rettangolo con due sezioni dove viene indicato solo il nome dell'oggetto
per le classi
2 completa si utilizza un rettangolo con tre sezioni con indicati anche gli attributi e i metodi
1 sintetica si utilizza un rettangolo con tre sezioni dove viene indicato solo il nome della classe
caratteristiche
sono tra le sorgenti d'ispirazione del concetto di componente software
aiutano a integrare computazione e interazione
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 migliore prestazione)
principi fondamentali
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 il mascheramento(astrazione) del funzionamento interno dell'oggetto
polimorfismo
capacità di far assumere gli oggetti comportamenti diversi determinati da una diversa implementazione dei suoi membri o da una firma
Overloading o sovraccarico dei metodi, cioè metodi con lo stesso nome hanno argomenti diversi con comportamenti diversi; differiscono per la firma (nel numero oppure nel tipo di parametri)
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 (numero e tipo di parametri) al momento dell'esecuzione il programma decide quale metodo utilizzare a seconda dell'oggetto, base o derivato al quale viene applicato
ereditarietà
con ereditarietà si intende un meccanismo per definire nuove classi esistenti già definite con più di un livello di astrazione, dalle quali ereditare attirbuti e metodi in modo che possano essere gestite collettivamente e riusate.
queste sono organizzate secondo una classificazione gerarchica determinando un concetto di antenato e discendente
classsificazione gerarchica
super classe
la classe antenato di una nuova classe prende il nome di super classe
la classe discendente di una classe esistente prende il nome di sottoclasse
ogni sottoclasse eredità le caratteristiche della sua super classe con lo scopo di ottenere oggetti più specializzati
ogni stanza di una sottoclasse(IS-A) un'istanza della sua superclasse(generalizzazione)
vale la proprietà transitiva(ogni istanza di una sottoclasse è un'istanza di tutte le sue classi antenato)
il meccanismo di ereditarietà è ricorsivo una sottoclasse può diventare superclasse delle proprie sottoclassi
Funzioni della sottoclasse
può aggiungere nuovi campi attributi e nuovi campi metodi a quelli della super classe
può ridefinire(sovrascrivere) alcuni dei metodi ereditati dalla super classe, riscrivendone il codice utilizzando lo stesso nome e firma(override)
può restringere in qualche modo la visibilità di una variabile o un metodo ereditato dalla super classe
NON PUO' eliminare campi attributi o metodi della super classe
la relazione (IS-A) è la relazione tra una classe (super classe o classe base) e una o più versioni specializzate(sottoclassi o classi derivate)
generalità
definizione
oggetti simili