SlideShare a Scribd company logo
OBJECT - ORIENTED PROGRAMMING
Prof. Giovanni Carbonara
LA PROGRAMMAZIONE AD OGGETTI
La programmazione a oggetti si propone come una nuova
metodologia, con un approccio risolutivo completamente diverso,
l’approccio a oggetti. L’utilizzo di linguaggi orientati agli oggetti
costringe il programmatore ad adottare nuove metodologie di
programmazione.
L’impiego di un linguaggio OOP impone l’utilizzo dei principi
fondamentali della programmazione a oggetti, che si possono
riassumere in modularità, incapsulamento, protezione
dell’informazione, che sono le caratteristiche richieste al software di
buona qualità.
Con la programmazione a oggetti è possibile modellare la realtà in
modo più naturale e vicino all’uomo, offrendo nuovi strumenti con
cui poter descrivere tutti i livelli di astrazione del sistema software
nelle varie fasi della sua progettazione.
ASTRAZIONE
L’astrazione è il risultato di un processo, detto appunto
astrazione, secondo il quale, assegnato un sistema,
complesso quanto si voglia, si possono tenere nascosti
alcuni particolari evidenziando quelli che si ritengono
essenziali ai fini della corretta comprensione del
sistema.
L’astrazione nasce dall’individuazione di proprietà simili
tra certi oggetti, situazioni o processi del mondo reale e
dalla decisione di concentrarsi su queste proprietà simili
e di ignorare temporaneamente, le loro differenze.
LIVELLI DI ASTRAZIONE
L'informatica presenta comunemente livelli di astrazione,
dove ogni livello rappresenta un diverso modello della
stessa informazione o processo, ma usa un sistema di
espressione che implica un diverso set di oggetti e
composizioni che si applicano solo ad un particolare
dominio. I livelli più "alti" di astrazione tendono a
costruirsi su qualcosa di relativamente concreto, mentre
quelli più "bassi" tendono a dare progressivamente una
rappresentazione più "granulare".
OGGETTI, METODI, ATTRIBUTI, CLASSI
Gli oggetti sono raccolti in classi, che definiscono proprietà (attributi) e
metodi comuni a tutti gli oggetti (istanze) di un certo tipo.
Mediante il procedimento di astrazione, gli oggetti fisici vengono virtualizzati
in oggetti software che offrono le stesse informazioni e servizi degli oggetti
reali. Si scompone il sistema reale preso in esame in classi di oggetti,
ognuna delle quali possiede le proprie variabili e funzioni, che assumono il
nome di attributi (caratteristiche specifiche) e metodi (comportamenti
uguali).
I metodi possono essere di tre tipi, classificati in base al tipo di operazioni
che eseguono:
•costruttori, per creare gli oggetti della classe;
•visualizzatori, per accedere ai valori delle variabili;
•modificatori, per modificare i valori delle variabili.
EREDITARIETA’, INCAPSULAMENTO, POLIMORFISMO
La classe è l’elemento base della OOP, un programma a oggetti è
costituito da un insieme di classi che generano oggetti che
comunicano tra loro. Se una classe non soddisfa appieno le
esigenze specifiche di un caso particolare è possibile completarla,
aggiungendole tutto quello che necessita per la nuova esigenza. Si
parla di classe ereditata e l’ereditarietà è la vera potenzialità della
OOP, che va oltre realizzando quello che comunemente prende il
nome di information hiding, cioè l’incapsulamento all’interno della
classe sia della rappresentazione dei dati sia delle elaborazioni che
possono essere eseguite su di essi. Un’ulteriore caratteristica della
OOP è quella che prende il nome di polimorfismo, ovvero la
possibilità di applicare lo stesso operatore a classi diverse.
OGGETTI, CLASSI, VISIBILITA’ E
INCAPSULAMENTO
OGGETTI
Gli oggetti sono le istanze delle classi, quindi oggetti della stessa classe si
differenziano tra loro per le loro proprietà (attributi), ma hanno in comune
con tutti gli altri oggetti il comportamento.
Un oggetto è un’entità astratta dotata di specifici attributi e in grado di
cooperare con altri oggetti svolgendo specifiche azioni.
Un oggetto è quindi la rappresentazione di una qualsiasi cosa che ha uno
stato e un comportamento.
La creazione di un oggetto non è altro che l’allocazione in memoria dello
spazio necessario per utilizzare questo elemento, ovvero si memorizza lo
stato corrente dell’oggetto.
Gli attributi di istanza sono quelli di cui un oggetto dispone, detti anche più
semplicemente attributi, un attributo costante è un attributo il cui valore non
cambia nel tempo ma resta invariato. Un metodo di istanza è un metodo
che, per essere utilizzato, necessita della creazione di un oggetto della
classe a cui appartiene, su cui essere invocato.
CLASSI
Una classe è un modello per un insieme di oggetti analoghi, caratterizzati:
•dalla stessa rappresentazione interna;
•dalle stesse operazioni con lo stesso funzionamento.
Possiamo definire la classe come lo schema di base dal quale è possibile
creare i singoli oggetti, attributi e metodi di una classe sono detti membri
della classe.
Un attributo di classe è un attributo condiviso da tutte le istanze della
classe, ovvero da tutti gli oggetti creati con essa. Un metodo è un’azione
che può essere eseguita dall’oggetto. Un metodo di classe è un metodo
invocabile sulla classe stessa senza che sia necessario istanziare un
oggetto.
La definizione della classe deve naturalmente sempre precedere la
creazione dell’oggetto. La classe è un elemento statico, gli oggetti
appartenenti alla classe sono elementi dinamici.
PUBBLICO E PRIVATO
La parte pubblica di una classe, costituita dall’insieme
dei metodi e degli attributi public, costituisce l’interfaccia
che ha lo scopo di dichiarare che cosa può fare la classe
e come può essere utilizzata da un utente. La parte
privata, costituita dall’insieme dei metodi e degli attributi
private, di una classe definisce come lavora la classe.
INCAPSULAMENTO
Con il termine incapsulamento si intende il meccanismo
che permette di racchiudere all’interno della stessa
struttura sia dati che codice, in altre parole, una scatola
che protegge i propri dati e il proprio codice tramite
l’incapsulamento, dove i dati descrivono l’oggetto e il
codice opera sui dati dell’oggetto. Questo principio
prevede che si possa accedere alle informazioni di un
oggetto unicamente attraverso i suoi metodi, che
rappresentano l’interfaccia dell’oggetto.
METODI COSTRUTTORI,
DISTRUTTORI E OVERLOADING
COSTRUTTORE, DISTRUTTORE
Il metodo costruttore è quel particolare metodo che viene invocato alla
creazione dell’oggetto e che contiene tutte le istruzioni da eseguire per la
sua inizializzazione. Può essere definito anche un metodo costruttore con
parametri, in questo caso non sarà possibile instanziare la classe senza
passare i parametri. Un metodo costruttore è un metodo particolare che si
distingue dagli altri per tre elementi:
•ha lo stesso nome della classe;
•non ha tipo di ritorno, nemmeno void;
•ha visibilità public.
Il metodo distruttore è quel particolare metodo che si occupa di rilasciare le
risorse.
OVERLOADING
Una classe può contenere più costruttori e metodi con lo stesso
nome purché distinti da diverse intestazioni:
•con un numero diverso di parametri (forma numerica);
•con numero uguale di parametri ma di tipo diverso (forma tipale);
•numero e tipo di parametri è lo stesso, ma la loro posizione è
scambiata (forma posizionale).
Si dice anche che l’overloading consente di sovraccaricare il
metodo con più di un significato.
EREDITARIETA’ E
POLIMORFISMO
EREDITARIETA’
L’ereditarietà è un’importante funzionalità della OOP che permette
di definire nuove classi partendo da classi sviluppate in
precedenza. La nuova classe viene definita esprimendo solamente
le differenze che essa possiede rispetto alla classe di partenza. La
classe antenato di una nuova classe prende il nome di superclasse,
la classe discendente di una classe esistente prende il nome di
sottoclasse. Ogni sottoclasse eredita le caratteristiche della sua
superclasse.
POLIMORFISMO
In informatica, il termine polimorfismo (dal greco "avere molte forme") viene usato in
senso generico per riferirsi a espressioni che possono rappresentare valori di diversi
tipi (dette espressioni polimorfiche). Una funzione si dice polimorfa se è capace di
operare su oggetti di tipo diverso specializzando il suo comportamento in base al tipo
di oggetto su cui agisce. Il termine polimorfismo indica la possibilità di implementare
in modo speciale metodi e proprietà ereditati dalla classe antenato mantenendone il
nome.
Il polimorfismo per metodi è la modalità operativa che permette di utilizzare lo stesso
nome per metodi differenti e viene realizzato in due modi:
•mediante l’overloading, che significa letteralmente “sovraccaricare” ed indica la
possibilità di definire metodi che hanno lo stesso nome ma firma differente;
•mediante l’overridding, che significa letteralmente “sovrascrittura” ed indica la
possibilità che le sottoclassi hanno di ridefinire un metodo ereditato da una
superclasse, in questo caso si deve utilizzare la stessa identica firma.
Il polimorfismo per dati o per classi è il meccanismo che permette di assegnare un
riferimento di una superclasse all’istanza di una sottoclasse.

More Related Content

Similar to Object oriented programming (20)

Presentazione principi oop
Presentazione principi oopPresentazione principi oop
Presentazione principi oop
gcorreddu
 
Object oriented
Object orientedObject oriented
Object oriented
KingRace97
 
Presentazione primi principi oop
Presentazione primi principi oopPresentazione primi principi oop
Presentazione primi principi oop
yrcorr
 
Lezione 10 - Programmazione ad oggetti
Lezione 10 - Programmazione ad oggettiLezione 10 - Programmazione ad oggetti
Lezione 10 - Programmazione ad oggetti
Giuseppe Cramarossa
 
Pensiero Orientato Agli Oggetti
Pensiero Orientato Agli OggettiPensiero Orientato Agli Oggetti
Pensiero Orientato Agli Oggetti
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
Matteo Valoriani
 
(E book ita) java introduzione alla programmazione orientata ad oggetti in ...
(E book ita) java   introduzione alla programmazione orientata ad oggetti in ...(E book ita) java   introduzione alla programmazione orientata ad oggetti in ...
(E book ita) java introduzione alla programmazione orientata ad oggetti in ...
Raffaella D'angelo
 
OOP with C#
OOP with C#OOP with C#
OOP with C#
Manuel Scapolan
 
Corso ABAP OO 02
Corso ABAP OO   02Corso ABAP OO   02
Corso ABAP OO 02
Piergiorgio Bossù
 
Java lezione 4
Java lezione 4Java lezione 4
Java lezione 4
Sergio Ronchi
 
Corso ABAP OO 03
Corso ABAP OO  03Corso ABAP OO  03
Corso ABAP OO 03
Piergiorgio Bossù
 
Approccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignApproccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven Design
Luca Milan
 
Java 01
Java 01Java 01
Java 01
davide ficano
 
Java OCA teoria 4
Java OCA teoria 4Java OCA teoria 4
Java OCA teoria 4
Valerio Radice
 
Java - Lezione 1
Java - Lezione 1 Java - Lezione 1
Java - Lezione 1
I.S.I.S. "Antonio Serra" - Napoli
 
Linguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e OggettiLinguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e Oggetti
I.S.I.S. "Antonio Serra" - Napoli
 
Python base lezione 5
Python base lezione 5Python base lezione 5
Python base lezione 5
Annalisa Vignoli
 
Vb.net
 Vb.net Vb.net
Vb.net
ululallanotte
 

More from Giovanni Carbonara (7)

Soluzioni server linux
Soluzioni server   linuxSoluzioni server   linux
Soluzioni server linux
Giovanni Carbonara
 
Soluzioni server microsoft
Soluzioni server   microsoftSoluzioni server   microsoft
Soluzioni server microsoft
Giovanni Carbonara
 
Soluzioni server
Soluzioni serverSoluzioni server
Soluzioni server
Giovanni Carbonara
 
DATABASE (Basi di dati)
DATABASE (Basi di dati)DATABASE (Basi di dati)
DATABASE (Basi di dati)
Giovanni Carbonara
 
Le Reti di Computer
Le Reti di ComputerLe Reti di Computer
Le Reti di Computer
Giovanni Carbonara
 
Il sistema informativo
Il sistema informativoIl sistema informativo
Il sistema informativo
Giovanni Carbonara
 
L'azienda
L'aziendaL'azienda
L'azienda
Giovanni Carbonara
 

Recently uploaded (20)

Algebraic And Geometric Ideas In The Theory Of Discrete Optimization 2013th E...
Algebraic And Geometric Ideas In The Theory Of Discrete Optimization 2013th E...Algebraic And Geometric Ideas In The Theory Of Discrete Optimization 2013th E...
Algebraic And Geometric Ideas In The Theory Of Discrete Optimization 2013th E...
emritzkouada
 
CatalogoCorsi_PrimaCompetenza_WISE_ING.pdf
CatalogoCorsi_PrimaCompetenza_WISE_ING.pdfCatalogoCorsi_PrimaCompetenza_WISE_ING.pdf
CatalogoCorsi_PrimaCompetenza_WISE_ING.pdf
Wise Ing
 
Conoscere la IA come alleata per l’alfabetizzazione digitale e la biblioteca ...
Conoscere la IA come alleata per l’alfabetizzazione digitale e la biblioteca ...Conoscere la IA come alleata per l’alfabetizzazione digitale e la biblioteca ...
Conoscere la IA come alleata per l’alfabetizzazione digitale e la biblioteca ...
Damiano Orru
 
Test Bank for International Business 14th Edition Daniels Radebaugh Sullivan ...
Test Bank for International Business 14th Edition Daniels Radebaugh Sullivan ...Test Bank for International Business 14th Edition Daniels Radebaugh Sullivan ...
Test Bank for International Business 14th Edition Daniels Radebaugh Sullivan ...
muraidawodo3
 
Tensions and Paradoxes in Temporary Organizing 1st Edition Joseph Lampel
Tensions and Paradoxes in Temporary Organizing 1st Edition Joseph LampelTensions and Paradoxes in Temporary Organizing 1st Edition Joseph Lampel
Tensions and Paradoxes in Temporary Organizing 1st Edition Joseph Lampel
nateelalude
 
Presentazione Saper gestire i debiti.pptx
Presentazione Saper gestire i debiti.pptxPresentazione Saper gestire i debiti.pptx
Presentazione Saper gestire i debiti.pptx
firmisergio
 
Fundamentals of Advanced Accounting 4th Edition Hoyle Solutions Manual
Fundamentals of Advanced Accounting 4th Edition Hoyle Solutions ManualFundamentals of Advanced Accounting 4th Edition Hoyle Solutions Manual
Fundamentals of Advanced Accounting 4th Edition Hoyle Solutions Manual
zaaheejaffal56
 
La posta elettronica gmail email filtri etc
La posta elettronica gmail email filtri etcLa posta elettronica gmail email filtri etc
La posta elettronica gmail email filtri etc
SalvatoreCianciabell
 
Art.. 29, 30 e 31 Cost. - La famiglia nella Costituzione: diritti, doveri e i...
Art.. 29, 30 e 31 Cost. - La famiglia nella Costituzione: diritti, doveri e i...Art.. 29, 30 e 31 Cost. - La famiglia nella Costituzione: diritti, doveri e i...
Art.. 29, 30 e 31 Cost. - La famiglia nella Costituzione: diritti, doveri e i...
SaradeLucia
 
Corso Power Point, Presentazioni, Microsoft
Corso Power Point, Presentazioni, MicrosoftCorso Power Point, Presentazioni, Microsoft
Corso Power Point, Presentazioni, Microsoft
Salvatore Cianciabella
 
Thermofluid Dynamics Of Turbulent Flows Fundamentals And Modelling Michele Ci...
Thermofluid Dynamics Of Turbulent Flows Fundamentals And Modelling Michele Ci...Thermofluid Dynamics Of Turbulent Flows Fundamentals And Modelling Michele Ci...
Thermofluid Dynamics Of Turbulent Flows Fundamentals And Modelling Michele Ci...
mukboltoskaa
 
Test Bank for Essentials of Health Information Management 3rd Edition by Bowie
Test Bank for Essentials of Health Information Management 3rd Edition by BowieTest Bank for Essentials of Health Information Management 3rd Edition by Bowie
Test Bank for Essentials of Health Information Management 3rd Edition by Bowie
sminkpopmajp
 
Synchronization A Universal Concept In Nonlinear Sciences 1st Edition Arkady ...
Synchronization A Universal Concept In Nonlinear Sciences 1st Edition Arkady ...Synchronization A Universal Concept In Nonlinear Sciences 1st Edition Arkady ...
Synchronization A Universal Concept In Nonlinear Sciences 1st Edition Arkady ...
kintisbenzi
 
Art. 9 Cost. - IIS Volta .pdf
Art. 9 Cost. - IIS Volta .pdfArt. 9 Cost. - IIS Volta .pdf
Art. 9 Cost. - IIS Volta .pdf
SaradeLucia
 
7.1 La guerra nel Novecento.pptx cbbcbbbb
7.1 La guerra nel Novecento.pptx cbbcbbbb7.1 La guerra nel Novecento.pptx cbbcbbbb
7.1 La guerra nel Novecento.pptx cbbcbbbb
jfzptw9cqq
 
The Love Dare 1st Edition Stephen Kendrick Alex Kendrick
The Love Dare 1st Edition Stephen Kendrick Alex KendrickThe Love Dare 1st Edition Stephen Kendrick Alex Kendrick
The Love Dare 1st Edition Stephen Kendrick Alex Kendrick
peladekauajo
 
Christ And The Decree Christology And Predestination In Reformed Theology Fro...
Christ And The Decree Christology And Predestination In Reformed Theology Fro...Christ And The Decree Christology And Predestination In Reformed Theology Fro...
Christ And The Decree Christology And Predestination In Reformed Theology Fro...
koryokesey
 
Napoli Powerpoint for Italian Class 1202.pptx
Napoli Powerpoint for Italian Class 1202.pptxNapoli Powerpoint for Italian Class 1202.pptx
Napoli Powerpoint for Italian Class 1202.pptx
boiyaugly7
 
Three Things I Know Are True Betty Culley
Three Things I Know Are True Betty CulleyThree Things I Know Are True Betty Culley
Three Things I Know Are True Betty Culley
xatzmikae7
 
International Bibliography Of Historical Sciences Band 73 2004 Reprint 2013 M...
International Bibliography Of Historical Sciences Band 73 2004 Reprint 2013 M...International Bibliography Of Historical Sciences Band 73 2004 Reprint 2013 M...
International Bibliography Of Historical Sciences Band 73 2004 Reprint 2013 M...
pickusadiqe
 
Algebraic And Geometric Ideas In The Theory Of Discrete Optimization 2013th E...
Algebraic And Geometric Ideas In The Theory Of Discrete Optimization 2013th E...Algebraic And Geometric Ideas In The Theory Of Discrete Optimization 2013th E...
Algebraic And Geometric Ideas In The Theory Of Discrete Optimization 2013th E...
emritzkouada
 
CatalogoCorsi_PrimaCompetenza_WISE_ING.pdf
CatalogoCorsi_PrimaCompetenza_WISE_ING.pdfCatalogoCorsi_PrimaCompetenza_WISE_ING.pdf
CatalogoCorsi_PrimaCompetenza_WISE_ING.pdf
Wise Ing
 
Conoscere la IA come alleata per l’alfabetizzazione digitale e la biblioteca ...
Conoscere la IA come alleata per l’alfabetizzazione digitale e la biblioteca ...Conoscere la IA come alleata per l’alfabetizzazione digitale e la biblioteca ...
Conoscere la IA come alleata per l’alfabetizzazione digitale e la biblioteca ...
Damiano Orru
 
Test Bank for International Business 14th Edition Daniels Radebaugh Sullivan ...
Test Bank for International Business 14th Edition Daniels Radebaugh Sullivan ...Test Bank for International Business 14th Edition Daniels Radebaugh Sullivan ...
Test Bank for International Business 14th Edition Daniels Radebaugh Sullivan ...
muraidawodo3
 
Tensions and Paradoxes in Temporary Organizing 1st Edition Joseph Lampel
Tensions and Paradoxes in Temporary Organizing 1st Edition Joseph LampelTensions and Paradoxes in Temporary Organizing 1st Edition Joseph Lampel
Tensions and Paradoxes in Temporary Organizing 1st Edition Joseph Lampel
nateelalude
 
Presentazione Saper gestire i debiti.pptx
Presentazione Saper gestire i debiti.pptxPresentazione Saper gestire i debiti.pptx
Presentazione Saper gestire i debiti.pptx
firmisergio
 
Fundamentals of Advanced Accounting 4th Edition Hoyle Solutions Manual
Fundamentals of Advanced Accounting 4th Edition Hoyle Solutions ManualFundamentals of Advanced Accounting 4th Edition Hoyle Solutions Manual
Fundamentals of Advanced Accounting 4th Edition Hoyle Solutions Manual
zaaheejaffal56
 
La posta elettronica gmail email filtri etc
La posta elettronica gmail email filtri etcLa posta elettronica gmail email filtri etc
La posta elettronica gmail email filtri etc
SalvatoreCianciabell
 
Art.. 29, 30 e 31 Cost. - La famiglia nella Costituzione: diritti, doveri e i...
Art.. 29, 30 e 31 Cost. - La famiglia nella Costituzione: diritti, doveri e i...Art.. 29, 30 e 31 Cost. - La famiglia nella Costituzione: diritti, doveri e i...
Art.. 29, 30 e 31 Cost. - La famiglia nella Costituzione: diritti, doveri e i...
SaradeLucia
 
Corso Power Point, Presentazioni, Microsoft
Corso Power Point, Presentazioni, MicrosoftCorso Power Point, Presentazioni, Microsoft
Corso Power Point, Presentazioni, Microsoft
Salvatore Cianciabella
 
Thermofluid Dynamics Of Turbulent Flows Fundamentals And Modelling Michele Ci...
Thermofluid Dynamics Of Turbulent Flows Fundamentals And Modelling Michele Ci...Thermofluid Dynamics Of Turbulent Flows Fundamentals And Modelling Michele Ci...
Thermofluid Dynamics Of Turbulent Flows Fundamentals And Modelling Michele Ci...
mukboltoskaa
 
Test Bank for Essentials of Health Information Management 3rd Edition by Bowie
Test Bank for Essentials of Health Information Management 3rd Edition by BowieTest Bank for Essentials of Health Information Management 3rd Edition by Bowie
Test Bank for Essentials of Health Information Management 3rd Edition by Bowie
sminkpopmajp
 
Synchronization A Universal Concept In Nonlinear Sciences 1st Edition Arkady ...
Synchronization A Universal Concept In Nonlinear Sciences 1st Edition Arkady ...Synchronization A Universal Concept In Nonlinear Sciences 1st Edition Arkady ...
Synchronization A Universal Concept In Nonlinear Sciences 1st Edition Arkady ...
kintisbenzi
 
Art. 9 Cost. - IIS Volta .pdf
Art. 9 Cost. - IIS Volta .pdfArt. 9 Cost. - IIS Volta .pdf
Art. 9 Cost. - IIS Volta .pdf
SaradeLucia
 
7.1 La guerra nel Novecento.pptx cbbcbbbb
7.1 La guerra nel Novecento.pptx cbbcbbbb7.1 La guerra nel Novecento.pptx cbbcbbbb
7.1 La guerra nel Novecento.pptx cbbcbbbb
jfzptw9cqq
 
The Love Dare 1st Edition Stephen Kendrick Alex Kendrick
The Love Dare 1st Edition Stephen Kendrick Alex KendrickThe Love Dare 1st Edition Stephen Kendrick Alex Kendrick
The Love Dare 1st Edition Stephen Kendrick Alex Kendrick
peladekauajo
 
Christ And The Decree Christology And Predestination In Reformed Theology Fro...
Christ And The Decree Christology And Predestination In Reformed Theology Fro...Christ And The Decree Christology And Predestination In Reformed Theology Fro...
Christ And The Decree Christology And Predestination In Reformed Theology Fro...
koryokesey
 
Napoli Powerpoint for Italian Class 1202.pptx
Napoli Powerpoint for Italian Class 1202.pptxNapoli Powerpoint for Italian Class 1202.pptx
Napoli Powerpoint for Italian Class 1202.pptx
boiyaugly7
 
Three Things I Know Are True Betty Culley
Three Things I Know Are True Betty CulleyThree Things I Know Are True Betty Culley
Three Things I Know Are True Betty Culley
xatzmikae7
 
International Bibliography Of Historical Sciences Band 73 2004 Reprint 2013 M...
International Bibliography Of Historical Sciences Band 73 2004 Reprint 2013 M...International Bibliography Of Historical Sciences Band 73 2004 Reprint 2013 M...
International Bibliography Of Historical Sciences Band 73 2004 Reprint 2013 M...
pickusadiqe
 

Object oriented programming

  • 1. OBJECT - ORIENTED PROGRAMMING Prof. Giovanni Carbonara
  • 2. LA PROGRAMMAZIONE AD OGGETTI La programmazione a oggetti si propone come una nuova metodologia, con un approccio risolutivo completamente diverso, l’approccio a oggetti. L’utilizzo di linguaggi orientati agli oggetti costringe il programmatore ad adottare nuove metodologie di programmazione. L’impiego di un linguaggio OOP impone l’utilizzo dei principi fondamentali della programmazione a oggetti, che si possono riassumere in modularità, incapsulamento, protezione dell’informazione, che sono le caratteristiche richieste al software di buona qualità. Con la programmazione a oggetti è possibile modellare la realtà in modo più naturale e vicino all’uomo, offrendo nuovi strumenti con cui poter descrivere tutti i livelli di astrazione del sistema software nelle varie fasi della sua progettazione.
  • 3. ASTRAZIONE L’astrazione è il risultato di un processo, detto appunto astrazione, secondo il quale, assegnato un sistema, complesso quanto si voglia, si possono tenere nascosti alcuni particolari evidenziando quelli che si ritengono essenziali ai fini della corretta comprensione del sistema. L’astrazione nasce dall’individuazione di proprietà simili tra certi oggetti, situazioni o processi del mondo reale e dalla decisione di concentrarsi su queste proprietà simili e di ignorare temporaneamente, le loro differenze.
  • 4. LIVELLI DI ASTRAZIONE L'informatica presenta comunemente livelli di astrazione, dove ogni livello rappresenta un diverso modello della stessa informazione o processo, ma usa un sistema di espressione che implica un diverso set di oggetti e composizioni che si applicano solo ad un particolare dominio. I livelli più "alti" di astrazione tendono a costruirsi su qualcosa di relativamente concreto, mentre quelli più "bassi" tendono a dare progressivamente una rappresentazione più "granulare".
  • 5. OGGETTI, METODI, ATTRIBUTI, CLASSI Gli oggetti sono raccolti in classi, che definiscono proprietà (attributi) e metodi comuni a tutti gli oggetti (istanze) di un certo tipo. Mediante il procedimento di astrazione, gli oggetti fisici vengono virtualizzati in oggetti software che offrono le stesse informazioni e servizi degli oggetti reali. Si scompone il sistema reale preso in esame in classi di oggetti, ognuna delle quali possiede le proprie variabili e funzioni, che assumono il nome di attributi (caratteristiche specifiche) e metodi (comportamenti uguali). I metodi possono essere di tre tipi, classificati in base al tipo di operazioni che eseguono: •costruttori, per creare gli oggetti della classe; •visualizzatori, per accedere ai valori delle variabili; •modificatori, per modificare i valori delle variabili.
  • 6. EREDITARIETA’, INCAPSULAMENTO, POLIMORFISMO La classe è l’elemento base della OOP, un programma a oggetti è costituito da un insieme di classi che generano oggetti che comunicano tra loro. Se una classe non soddisfa appieno le esigenze specifiche di un caso particolare è possibile completarla, aggiungendole tutto quello che necessita per la nuova esigenza. Si parla di classe ereditata e l’ereditarietà è la vera potenzialità della OOP, che va oltre realizzando quello che comunemente prende il nome di information hiding, cioè l’incapsulamento all’interno della classe sia della rappresentazione dei dati sia delle elaborazioni che possono essere eseguite su di essi. Un’ulteriore caratteristica della OOP è quella che prende il nome di polimorfismo, ovvero la possibilità di applicare lo stesso operatore a classi diverse.
  • 8. OGGETTI Gli oggetti sono le istanze delle classi, quindi oggetti della stessa classe si differenziano tra loro per le loro proprietà (attributi), ma hanno in comune con tutti gli altri oggetti il comportamento. Un oggetto è un’entità astratta dotata di specifici attributi e in grado di cooperare con altri oggetti svolgendo specifiche azioni. Un oggetto è quindi la rappresentazione di una qualsiasi cosa che ha uno stato e un comportamento. La creazione di un oggetto non è altro che l’allocazione in memoria dello spazio necessario per utilizzare questo elemento, ovvero si memorizza lo stato corrente dell’oggetto. Gli attributi di istanza sono quelli di cui un oggetto dispone, detti anche più semplicemente attributi, un attributo costante è un attributo il cui valore non cambia nel tempo ma resta invariato. Un metodo di istanza è un metodo che, per essere utilizzato, necessita della creazione di un oggetto della classe a cui appartiene, su cui essere invocato.
  • 9. CLASSI Una classe è un modello per un insieme di oggetti analoghi, caratterizzati: •dalla stessa rappresentazione interna; •dalle stesse operazioni con lo stesso funzionamento. Possiamo definire la classe come lo schema di base dal quale è possibile creare i singoli oggetti, attributi e metodi di una classe sono detti membri della classe. Un attributo di classe è un attributo condiviso da tutte le istanze della classe, ovvero da tutti gli oggetti creati con essa. Un metodo è un’azione che può essere eseguita dall’oggetto. Un metodo di classe è un metodo invocabile sulla classe stessa senza che sia necessario istanziare un oggetto. La definizione della classe deve naturalmente sempre precedere la creazione dell’oggetto. La classe è un elemento statico, gli oggetti appartenenti alla classe sono elementi dinamici.
  • 10. PUBBLICO E PRIVATO La parte pubblica di una classe, costituita dall’insieme dei metodi e degli attributi public, costituisce l’interfaccia che ha lo scopo di dichiarare che cosa può fare la classe e come può essere utilizzata da un utente. La parte privata, costituita dall’insieme dei metodi e degli attributi private, di una classe definisce come lavora la classe.
  • 11. INCAPSULAMENTO Con il termine incapsulamento si intende il meccanismo che permette di racchiudere all’interno della stessa struttura sia dati che codice, in altre parole, una scatola che protegge i propri dati e il proprio codice tramite l’incapsulamento, dove i dati descrivono l’oggetto e il codice opera sui dati dell’oggetto. Questo principio prevede che si possa accedere alle informazioni di un oggetto unicamente attraverso i suoi metodi, che rappresentano l’interfaccia dell’oggetto.
  • 13. COSTRUTTORE, DISTRUTTORE Il metodo costruttore è quel particolare metodo che viene invocato alla creazione dell’oggetto e che contiene tutte le istruzioni da eseguire per la sua inizializzazione. Può essere definito anche un metodo costruttore con parametri, in questo caso non sarà possibile instanziare la classe senza passare i parametri. Un metodo costruttore è un metodo particolare che si distingue dagli altri per tre elementi: •ha lo stesso nome della classe; •non ha tipo di ritorno, nemmeno void; •ha visibilità public. Il metodo distruttore è quel particolare metodo che si occupa di rilasciare le risorse.
  • 14. OVERLOADING Una classe può contenere più costruttori e metodi con lo stesso nome purché distinti da diverse intestazioni: •con un numero diverso di parametri (forma numerica); •con numero uguale di parametri ma di tipo diverso (forma tipale); •numero e tipo di parametri è lo stesso, ma la loro posizione è scambiata (forma posizionale). Si dice anche che l’overloading consente di sovraccaricare il metodo con più di un significato.
  • 16. EREDITARIETA’ L’ereditarietà è un’importante funzionalità della OOP che permette di definire nuove classi partendo da classi sviluppate in precedenza. La nuova classe viene definita esprimendo solamente le differenze che essa possiede rispetto alla classe di partenza. La classe antenato di una nuova classe prende il nome di superclasse, la classe discendente di una classe esistente prende il nome di sottoclasse. Ogni sottoclasse eredita le caratteristiche della sua superclasse.
  • 17. POLIMORFISMO In informatica, il termine polimorfismo (dal greco "avere molte forme") viene usato in senso generico per riferirsi a espressioni che possono rappresentare valori di diversi tipi (dette espressioni polimorfiche). Una funzione si dice polimorfa se è capace di operare su oggetti di tipo diverso specializzando il suo comportamento in base al tipo di oggetto su cui agisce. Il termine polimorfismo indica la possibilità di implementare in modo speciale metodi e proprietà ereditati dalla classe antenato mantenendone il nome. Il polimorfismo per metodi è la modalità operativa che permette di utilizzare lo stesso nome per metodi differenti e viene realizzato in due modi: •mediante l’overloading, che significa letteralmente “sovraccaricare” ed indica la possibilità di definire metodi che hanno lo stesso nome ma firma differente; •mediante l’overridding, che significa letteralmente “sovrascrittura” ed indica la possibilità che le sottoclassi hanno di ridefinire un metodo ereditato da una superclasse, in questo caso si deve utilizzare la stessa identica firma. Il polimorfismo per dati o per classi è il meccanismo che permette di assegnare un riferimento di una superclasse all’istanza di una sottoclasse.
  翻译: