programmazione ad oggetti

39
La La Programmazione Programmazione Orientata Orientata agli agli Oggetti Oggetti (O.O.P.) Object- Oriented Programming

Upload: mariacaporale

Post on 13-Jun-2015

1.623 views

Category:

Education


2 download

TRANSCRIPT

Page 1: programmazione ad oggetti

LaLa Programmazione Programmazione

Orientata Orientata agliagli Oggetti Oggetti

(O.O.P.)

Object-Oriented Programming

Page 2: programmazione ad oggetti

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

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

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

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

Quindi quello che cambia è solamente del problema...

la visionela visione

algoritmoalgoritmo

sequenzasequenza interazioneinterazione

sistemasistema

Page 7: programmazione ad oggetti

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

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

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

Classi di oggettiClassi di oggetti

e

OggettiOggetti

(secondo il formalismo UML)

Page 11: programmazione ad oggetti

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

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

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

ClassiClassi

. . EreditarietàEreditarietà ee GerarchiaGerarchia di ereditarietàdi ereditarietà

. . TipiTipi di ereditarietàdi ereditarietà

. . PolimorfismoPolimorfismo

Page 15: programmazione ad oggetti

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

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

Gerarchia Gerarchia di ereditarietàdi ereditarietà

Mezzi di trasporto

Veicoli a motore

Auto a gas

Barca Auto Moto Classe

Sopraclasse (o Superclasse)

Sottoclasse

Classe

Sopraclasse (o Superclasse)

Sottoclasse

Classe

Sopraclasse (o Superclasse)

Page 18: programmazione ad oggetti

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

orientati agli oggettiorientati agli oggettiLinguaggi Linguaggi di programmazionedi programmazione

Page 35: programmazione ad oggetti

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

# 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

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

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

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