programmazione ad oggetti

Preview:

Citation preview

LaLa Programmazione Programmazione

Orientata Orientata agliagli Oggetti Oggetti

(O.O.P.)

Object-Oriented Programming

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

Come si programma :

Applicando i principi della programmazione strutturata:

•metodologia di analisi Top-Down

• Strutture di controllo

-sequenza

-selezione

-iterazione

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

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

Quindi quello che cambia è solamente del problema...

la visionela visione

algoritmoalgoritmo

sequenzasequenza interazioneinterazione

sistemasistema

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

Programmi Programmi Algoritmi Algoritmi dati dati +

Per la risoluzione di un Problema

metodi metodi attributi attributi Oggetti Oggetti +

Per la gestione di un Sistema

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...

Classi di oggettiClassi di oggetti

e

OggettiOggetti

(secondo il formalismo UML)

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

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

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 )

ClassiClassi

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

. . TipiTipi di ereditarietàdi ereditarietà

. . PolimorfismoPolimorfismo

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

Gerarchia Gerarchia di ereditarietàdi ereditarietà

Mezzi di trasporto

Veicoli a motore Mezzi non a motore

Auto a gas

Barca Auto Moto CavalloBici

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)

Tipi Tipi di ereditarietàdi ereditarietà

Eredità singola

Eredità multipla

Mezzi non a motore

CavalloBici

AnimaliMezzi non a motore

Cavallo

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à

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 .

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

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

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

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

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

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

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

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 )

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

?

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( )

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 )

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

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

orientati agli oggettiorientati agli oggettiLinguaggi Linguaggi di programmazionedi programmazione

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

# 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++

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

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

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

Recommended