Programmazione ad oggetti
-
Upload
mariacaporale -
Category
Documents
-
view
3.454 -
download
0
Transcript of Programmazione ad oggetti
![Page 1: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/1.jpg)
LaLa Programmazione Programmazione
Orientata Orientata agliagli Oggetti Oggetti
(O.O.P.)
Object-Oriented Programming
![Page 2: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/2.jpg)
Programmazione
imperativaimperativa
algoritmoalgoritmo
si basa sul concetto di :
Sappiamo che la
Insieme di istruzioni
che a partire daidati di input
permettono di ottenere dei risultati in output
![Page 3: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/3.jpg)
Come si programma :
Applicando i principi della programmazione strutturata:
•metodologia di analisi Top-Down
• Strutture di controllo
-sequenza
-selezione
-iterazione
![Page 4: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/4.jpg)
La Programmazione
si fonda invece sul concetto di :
orientata agli oggettiorientata agli oggetti
in cui ogniogni componenteè caratterizzato da
proprietà (attributi )
eazioni (metodi )
sistema sistema è un’insiemedi
entitàinteragenti
(oggetti )
sistemasistema
![Page 5: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/5.jpg)
Come si programma in O.O.P. ?
… applicando i principi della programmazione strutturata
cioè ...
•metodologia di analisi Top-Down
•strutture di controllo
-sequenza
-selezione
-iterazione
![Page 6: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/6.jpg)
Quindi quello che cambia è solamente del problema...
la visionela visione
algoritmoalgoritmo
sequenzasequenza interazioneinterazione
sistemasistema
![Page 7: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/7.jpg)
Per cui è necessario individuare :
•le entità (gli oggetti) presenti all’interno del sistema
•le modalità di interazione reciproca
Non a caso si parla di programmazioneorientata agli oggetti
![Page 8: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/8.jpg)
Programmi Programmi Algoritmi Algoritmi dati dati +
Per la risoluzione di un Problema
metodi metodi attributi attributi Oggetti Oggetti +
Per la gestione di un Sistema
![Page 9: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/9.jpg)
Programmazioneimperativaimperativa
Problema complesso
Problema complesso
scomposizione in
procedurescomposizione in
procedurescomposizione in
entità interagenti(oggetti)
scomposizione in
entità interagenti(oggetti)
Sistema complesso
Sistema complesso
orientata agli oggettiorientata agli oggettiProgrammazione
ricapitolando...
![Page 10: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/10.jpg)
Classi di oggettiClassi di oggetti
e
OggettiOggetti
(secondo il formalismo UML)
![Page 11: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/11.jpg)
OggettoOggetto = istanzaistanza di una ClasseClasse
automobileautomobile
velocitàcolore
livello carburanteposizione marcia
velocitàcolore
livello carburanteposizione marcia
avviaaccelera
girafermati
cambia marciarifornisci
avviaaccelera
girafermati
cambia marciarifornisci
ClasseClasseFord Focus 1.4
Velocità = 108colore = nero
livello carburante = 15,6posizione marcia = 5
oggetto
Fiat Punto 60
Velocità = 65colore = verde
livello carburante = 32,4posizione marcia = 3
oggetto
![Page 12: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/12.jpg)
nome classe
attributo1 attributo2 attributo3 attributo4
metodo1 metodo2 metodo3 metodo4 metodo5 metodo6
Diagramma delle Diagramma delle ClassiClassi
automobileautomobile
velocitàcolore
livello carburanteposizione marcia
velocitàcolore
livello carburanteposizione marcia
avviatiaccelerasterza
spegniticambia marcia
frena
avviatiaccelerasterza
spegniticambia marcia
frena
caratteristiche specifiche
comportamenti generali
![Page 13: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/13.jpg)
Ford Focus 1.4
Velocità = 108colore = nero
livello carburante = 15,6posizione marcia = 5
nome oggetto
attributo 1 = val1 attributo 2 = val2 attributo 3 = val3 attributo 4 = val4
Diagramma degli Diagramma degli OggettiOggetti
Ferrari GA 04
Velocità = 83colore = rosso
livello carburante = 85,1posizione marcia = 2
cambiano le caratteristiche specifiche a
seconda dell’oggetto istanziato
( i comportamenti non ci sono perché comuni a tutti gli oggetti appartenenti a quella classe )
![Page 14: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/14.jpg)
ClassiClassi
. . EreditarietàEreditarietà ee GerarchiaGerarchia di ereditarietàdi ereditarietà
. . TipiTipi di ereditarietàdi ereditarietà
. . PolimorfismoPolimorfismo
![Page 15: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/15.jpg)
EreditarietàEreditarietà
automobile a gasautomobile a gas
velocitàcolore
livello carburanteposizione marcia
tipo di gas
velocitàcolore
livello carburanteposizione marcia
tipo di gas
avviaaccelerasterzafrena
cambia marciaaccendi luci
scambia gas-benz.
avviaaccelerasterzafrena
cambia marciaaccendi luci
scambia gas-benz.
NuovaNuova Classe Classe
automobileautomobile
velocitàcolore
livello carburanteposizione marcia
velocitàcolore
livello carburanteposizione marcia
avviaaccelerasterzafrena
cambia marciaaccendi luci
avviaaccelerasterzafrena
cambia marciaaccendi luci
ClasseClasse
classe genitrice
costruisco nuove classi partendo da quelle già esistenti
![Page 16: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/16.jpg)
Gerarchia Gerarchia di ereditarietàdi ereditarietà
Mezzi di trasporto
Veicoli a motore Mezzi non a motore
Auto a gas
Barca Auto Moto CavalloBici
![Page 17: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/17.jpg)
Gerarchia Gerarchia di ereditarietàdi ereditarietà
Mezzi di trasporto
Veicoli a motore
Auto a gas
Barca Auto Moto Classe
Sopraclasse (o Superclasse)
Sottoclasse
![Page 18: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/18.jpg)
Tipi Tipi di ereditarietàdi ereditarietà
Eredità singola
Eredità multipla
Mezzi non a motore
CavalloBici
AnimaliMezzi non a motore
Cavallo
![Page 19: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/19.jpg)
Mezzi di trasportoMezzi di trasporto
velocitànumero persone
senza patente
velocitànumero persone
senza patente
Veicoli a motoreVeicoli a motore
consumoconsumo
accendi spegni
accelerafrena
accendi spegni
accelerafrena
MotoMoto
cupolinonumero ruote
cupolinonumero ruote
piegaacceleraimpenna
piegaacceleraimpenna
EsempioEsempio di ereditarietàdi ereditarietà
![Page 20: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/20.jpg)
EreditarietàEreditarietà
Classe
Sottoclasse
per Estensione quando la sottoclasse aggiunge nuovi attributi e metodi
1 .
La Sottoclasse si differenzia:
per Ridefinizione quando la sottoclasse ridefinisce i metodi riscrivendone il codice ereditato
( overriding del metodo )
2 .
![Page 21: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/21.jpg)
Polimorfismo Polimorfismo . 1°. 1°
Indica la possibilità per i metodi di assumere forme diverse
(cioè implementazioni diverse) all’interno della gerarchia delle
classi
Veicoli a motore
AutoMoto
accelera accelera
accelera
implementazione
![Page 22: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/22.jpg)
Polimorfismo Polimorfismo . 2°. 2°
Classe AutoClasse Auto
Frena Frena (mano, 3)
Frena Frena ( )
Frena Frena (motore)
parametri
=nome
( overloading dei metodi )
Indica la possibilità per i metodi di assumere forme diverse
(cioè implementazioni diverse) all’interno della stessa classe
![Page 23: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/23.jpg)
OggettiOggetti
. . Attributi Attributi ee Metodi Metodi
. . IncapsulamentoIncapsulamento
. . Struttura Struttura degli oggettidegli oggetti
. . Interazione Interazione tra oggettitra oggetti
. L’interfaccia . L’interfaccia verso l’esternoverso l’esterno
![Page 24: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/24.jpg)
metodimetodimetodimetodiattributiattributiattributiattributiOggettiOggetti +
attributoattributo1 attributo2 attributo3 attributo4
metodometodo1 metodo2 metodo3 metodo4 metodo5 metodo6
Costituiscono la memoria dell’oggetto e consentono di tenere traccia dello stato dell’oggetto
Sono le operazioni che un oggetto è in grado di compiere (comportamenti)
Attraverso i metodi un oggetto può accedere alla sua memoria e modificare il suo stato
![Page 25: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/25.jpg)
OggettiOggetti metodimetodimetodimetodiattributiattributiattributiattributi +
attributiattributi attributiattributiDescrivono le proprietà statiche dell’oggetto
Nella programmazione gli attributi vengono realizzati attraverso l’uso delle variabili utilizzate dall’oggetto per memorizzare i dati
![Page 26: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/26.jpg)
metodimetodimetodimetodiattributiattributiattributiattributiOggettiOggetti +
metodimetodi metodimetodiDescrivono le proprietà dinamiche dell’oggetto
Nella programmazione i metodi vengono realizzati attraverso la scrittura di codice (procedure e funzioni) che implementano le operazioni dell’oggetto
![Page 27: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/27.jpg)
IncapsulamentoIncapsulamento
Viene visto come una scatola nera scatola nera (o blackbox) permettendo così il
mascheramento dell’informazione mascheramento dell’informazione ( ( information hidinginformation hiding )
La proprietà dell’oggetto di incorporare al suo interno attributi e metodi viene detta incapsulamento
metodimetodiattributiattributi
metodiattributiSezione PubblicaPubblica
Sezione PrivataPrivata
L’oggetto è quindi un contenitorecontenitore sia di strutture dati e sia di procedure che li utilizzano
![Page 28: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/28.jpg)
Sezione PubblicaPubblica attributiattributi e e metodimetodi che si vogliono rendere visibilivisibili all’esterno
( e quindi utilizzabili dagli altri oggetti )
pubblicapubblica
Struttura Struttura degli oggettidegli oggetti
privataprivata
Sezione PrivataPrivata attributiattributi e e metodimetodi che non sono accessibilinon sono accessibili ad altri oggetti
( e quindi si rendono invisibili all’esterno )
![Page 29: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/29.jpg)
L’interfaccia L’interfaccia verso l’esternoverso l’esterno
Un oggetto può essere utilizzato inviando ad esso dei messaggi
Ambienteesterno
L’interfaccia non consente di vedere come sono implementati i metodi, ma ne permette il loro utilizzo e l’accesso agli attributi pubblici
L’insieme dei messaggiL’insieme dei messaggi rappresenta l’interfaccial’interfaccia di quell’oggetto
Sezione
PubblicaPubblica
avvia( )accelera( )sterza( )frena( )
liv.carburantevelocità
Sezione
PrivataPrivata
?
![Page 30: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/30.jpg)
Interazione Interazione fra gli oggettifra gli oggetti
Un programma ad oggettiprogramma ad oggetti è caratterizzato dalla presenza di tanti oggetti che interagisconointeragiscono fra loro attraverso il meccanismo dello
Ferrari GA 04
Velocità = 83colore = rosso
liv.carburante = 85,1posizione marcia = 2
Schumacher
Data Nascita = 3/1/69nazione = germania
peso = 74altezza = 174
scambio di messaggiscambio di messaggi
Metodi:accelera( )sterza( )frena( )
Messaggi:
FerrariGA2004.accelera( )
FerrariGA2004.frena( )
![Page 31: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/31.jpg)
metodimetodi metodimetodi
Quando un oggetto invoca un metodo di un altro oggetto ?
Interazione Interazione fra gli oggettifra gli oggetti
• quando vuole avere un’informazione sul secondo oggetto
• quando vuole modificare lo stato del secondo oggetto
( in sostanza conoscere o modificare il valore dei suoi attributi )
![Page 32: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/32.jpg)
Ferrari GA 04
Velocità = 83colore = rosso
liv.carburante = 85,3posizione marcia = 2
giri motore = 8700
Schumacher
Data Nascita = 3/1/69nazione = germania
peso = 74altezza = 174
Es. di scambio di messaggiEs. di scambio di messaggi
Metodo: accelera( )FerrariGA04.accelera( )
Serbatoio
quantità = 85,3tipo benz. = superF1
riserva = 15peso = 77,3
Serbatoio.diminuisci( )
Attributi: velocità = 92giri motore= 9300
Metodo: diminuisci( )
FerrariGA04.liv.carburante = 85,1
Attributo: quantità = 85,1
Attributo: liv.carburante =85,1
A B
C
A
B
C
![Page 33: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/33.jpg)
Nuova MetodologiaNuova Metodologia
Per costruire un programma orientato agli oggetti occorre:
. Stabilire come gli oggetti interagisconointeragiscono fra loro.
. Definire le classiclassi, indicando gli attributiattributi e i metodimetodi
. Identificare gli oggettioggetti che caratterizzano il modello del problema
![Page 34: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/34.jpg)
orientati agli oggettiorientati agli oggettiLinguaggi Linguaggi di programmazionedi programmazione
![Page 35: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/35.jpg)
Linguaggi PuriPuri ogni cosa è un oggettoogni cosa è un oggetto
( ...anche un numero intero è definito come oggetto )
. SmalltalkSmalltalk
. Eiffel. Eiffel
Linguaggi ibridiibridi alcuni tipi di dati non sononon sono oggetti
( maggiore libertà a scapito di una maggiore chiarezza )
. C++C++
. Java . Java
. Visual Basic. Visual Basic
. Delphi. Delphi
![Page 36: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/36.jpg)
# include <iostream.h>
class Base {
friend void funzione {Base&};
public:
int pubblico;
void Pubblico() {cout <<‘Pubblico: ‘<<pubblico<<end1;};
private:
int privato;
void Privato() {cout <<‘Pubblico: ‘<<pubblico<<end1;};
protected:
int protetto;
void Protetto() {cout <<‘Protetto: ‘<<protetto<<end1;};
};
void funzione{Base &istanza} {
istanza.pubblico =1;
istanza.privato =2;
istanza.protetto=3;
istanza.Pubblico();
istanza.Privato();
istanza.Protetto();
}
void main() {
Base istanzabase;
istanzabase.pubblico =10;
funzione(istanzabase);
}
C++C++
![Page 37: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/37.jpg)
import java.applet.*;
import java.awt.*;
public class semplice extends Applet
{
private TextArea ta;
private Label l;
public void init()
{
ta = new TextArea(10,8);
l = new Label(“numeri casuali”, Label.CENTER);
l.setBackground(Color.Yellow);
setLayout(new BorderLayout());
add(l, “center”);
add(ta “east”);
generaNumeri();
}
Public void generaNumeri()
{
int casuale;
for (int i=1; i<=10; i++)
{
casuale = (int (Math.random()*1000);
ta.append(“-> ”+casuale+”\n”);
}
}
}
JavaJava
![Page 38: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/38.jpg)
Private Sub Command1_Click()
N = Val(InputBox(“Numero di cui vuoi la radice quadrata :”,”Radice Quadrata”))
Msg = “La radice quadrata di “& N
SqrN = RadiceQ(N)
Select Case SqrN
Case 0
Msg = Msg & “è zero.”
Case –1
Msg = Msg & “è un numero immaginario.”
Case Else
Msg = Msg & “è” & SqrN
End Select
MsgBox Msg
End Sub
Visual BasicVisual Basic
![Page 39: Programmazione ad oggetti](https://reader038.fdocuments.net/reader038/viewer/2022110308/557b31e7d8b42a16488b4879/html5/thumbnails/39.jpg)
unit somma;
Interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1 : TButton;
Edit1 : TEdit;
Edit2 : TEdit;
Edit3 : TEdit;
Button2 : TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit3.text := IntToStr(StrToInt(Edit1.text) + StrToInt(Edit2.text));
end;
end.
DelphiDelphi