La  Programmazione Orientata  agli  Oggetti (O.O.P.) Object-Oriented Programming
Programmazione imperativa algoritmo si basa sul concetto di : Sappiamo che la Insieme di   istruzioni che a partire dai da...
Come si programma : Applicando i principi  della  programmazione strutturata : <ul><ul><li>metodologia di analisi  Top-Dow...
La  Programmazione si fonda invece sul concetto di : orientata agli oggetti in cui  ogni  componente è caratterizzato   da...
Come si programma in O.O.P. ? …  applicando i principi  della  programmazione strutturata  <ul><ul><li>cioè ... </li></ul>...
Quindi quello che cambia è solamente  del problema... sequenza interazione la visione algoritmo sistema
<ul><li>Per cui è necessario individuare  : </li></ul><ul><ul><li>le   entità   (gli oggetti)   presenti all’interno del s...
Programmi Algoritmi dati + Per la  risoluzione  di un  Problema metodi attributi Oggetti + Per la  gestione  di un  Sistema
Problema   complesso scomposizione in   procedure scomposizione in  entità interagenti (oggetti) Sistema  complesso ricapi...
Classi di oggetti e Oggetti (secondo il formalismo UML)
Oggetto   =  istanza   di una  Classe automobile velocità colore livello carburante posizione marcia avvia accelera gira f...
Diagramma delle  Classi caratteristiche  specifiche comportamenti  generali nome classe  attributo1  attributo2  attributo...
Diagramma degli  Oggetti cambiano  le caratteristiche specifiche a  seconda dell’oggetto istanziato ( i comportamenti non ...
Classi .  Ereditarietà   e   Gerarchia   di ereditarietà .  Tipi   di ereditarietà .  Polimorfismo
Ereditarietà classe genitrice costruisco   nuove classi   partendo da quelle già   esistenti automobile a gas velocità col...
Gerarchia  di  ereditarietà Mezzi di trasporto Veicoli a motore Mezzi non a motore Auto a gas Barca Auto Moto Cavallo Bici
Gerarchia  di  ereditarietà Mezzi di trasporto Veicoli a motore Auto a gas Barca Auto Moto Classe Sopraclasse   (o Supercl...
Tipi  di  ereditarietà Eredità  singola Eredità  multipla Mezzi non a motore Cavallo Bici Animali Mezzi non a motore Cavallo
Esempio   di  ereditarietà Mezzi di trasporto velocità numero persone senza patente Veicoli a motore consumo accendi   spe...
Ereditarietà Classe Sottoclasse La   Sottoclasse   si differenzia: per  Estensione  quando la sottoclasse  aggiunge  nuovi...
Polimorfismo  . 1° Indica la possibilità per i  metodi  di  assumere   forme diverse  (cioè  implementazioni diverse)  all...
Polimorfismo  . 2° Classe Auto Frena  (mano, 3) Frena  ( ) Frena  (motore) (  overloading  dei metodi  ) Indica la possibi...
Oggetti .  Attributi  e   Metodi .  Incapsulamento .  Struttura  degli oggetti .  Interazione  tra oggetti .  L’interfacci...
metodi attributi Oggetti + attributo 1  attributo2  attributo3  attributo4  metodo 1  metodo2  metodo3  metodo4  metodo5  ...
Oggetti attributi Descrivono le proprietà  statiche  dell’oggetto Nella  programmazione  gli attributi vengono realizzati ...
metodi attributi Oggetti + metodi Descrivono le proprietà  dinamiche  dell’oggetto Nella  programmazione  i metodi vengono...
Incapsulamento Viene visto come una  scatola nera  ( o blackbox )  permettendo così il mascheramento dell’informazione  ( ...
Sezione   Pubblica attributi   e  metodi   che si vogliono rendere  visibili   all’esterno  ( e quindi  utilizzabili  dagl...
L’interfaccia  verso l’esterno Un oggetto   può essere utilizzato  inviando ad esso dei messaggi Ambiente esterno L’interf...
Interazione  fra gli oggetti Un  programma ad oggetti  è caratterizzato dalla presenza di tanti oggetti che  interagiscono...
metodi Quando un oggetto  invoca  un metodo  di un altro oggetto  ? Interazione  fra gli oggetti <ul><li>quando vuole  ave...
Es. di scambio di messaggi Metodo :  accelera( ) FerrariGA04 . accelera( ) Serbatoio . diminuisci( ) Attributi :  velocità...
Nuova Metodologia Per costruire un programma orientato agli oggetti occorre: .   Stabilire come gli oggetti   interagiscon...
orientati agli oggetti Linguaggi  di programmazione
Linguaggi   Puri ogni cosa è un oggetto ( ...anche un numero intero è definito come oggetto ) .  Smalltalk . Eiffel Lingua...
# include  <iostream.h> class  Base { friend void  funzione {Base&}; public : int  pubblico; void  Pubblico() {cout <<‘Pub...
import  java.applet.*; import  java.awt.*; public class  semplice  extends  Applet { private  TextArea ta; private  Label ...
Private  Sub Command1_Click() N = Val(InputBox(“Numero di cui vuoi la radice quadrata :”,”Radice Quadrata”)) Msg = “La rad...
unit  somma; Interface uses Windows, Messages, SysUtils, Classes,  Graphics, Controls, Forms, Dialogs,  StdCtrls; type TFo...
Upcoming SlideShare
Loading in...5
×

programmazione ad oggetti

1,632

Published on

Published in: Education
2 Comments
3 Likes
Statistics
Notes
No Downloads
Views
Total Views
1,632
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
80
Comments
2
Likes
3
Embeds 0
No embeds

No notes for slide

programmazione ad oggetti

  1. 1. La Programmazione Orientata agli Oggetti (O.O.P.) Object-Oriented Programming
  2. 2. Programmazione imperativa algoritmo si basa sul concetto di : Sappiamo che la Insieme di istruzioni che a partire dai dati di input permettono di ottenere dei risultati in output
  3. 3. Come si programma : Applicando i principi della programmazione strutturata : <ul><ul><li>metodologia di analisi Top-Down </li></ul></ul><ul><li>Strutture di controllo </li></ul><ul><ul><ul><li>sequenza </li></ul></ul></ul><ul><ul><ul><li>selezione </li></ul></ul></ul><ul><ul><ul><li>iterazione </li></ul></ul></ul>
  4. 4. La Programmazione si fonda invece sul concetto di : orientata agli oggetti in cui ogni componente è caratterizzato da proprietà ( attributi ) e azioni ( metodi ) sistema è un’ insieme di entità interagenti ( oggetti ) sistema
  5. 5. Come si programma in O.O.P. ? … applicando i principi della programmazione strutturata <ul><ul><li>cioè ... </li></ul></ul><ul><ul><li>metodologia di analisi Top-Down </li></ul></ul><ul><ul><li>strutture di controllo </li></ul></ul><ul><ul><ul><li>sequenza </li></ul></ul></ul><ul><ul><ul><li>selezione </li></ul></ul></ul><ul><ul><ul><li>iterazione </li></ul></ul></ul>
  6. 6. Quindi quello che cambia è solamente del problema... sequenza interazione la visione algoritmo sistema
  7. 7. <ul><li>Per cui è necessario individuare : </li></ul><ul><ul><li>le entità (gli oggetti) presenti all’interno del sistema </li></ul></ul><ul><ul><li>le modalità di interazione reciproca </li></ul></ul>Non a caso si parla di programmazione orientata agli oggetti
  8. 8. Programmi Algoritmi dati + Per la risoluzione di un Problema metodi attributi Oggetti + Per la gestione di un Sistema
  9. 9. Problema complesso scomposizione in procedure scomposizione in entità interagenti (oggetti) Sistema complesso ricapitolando... Programmazione imperativa orientata agli oggetti Programmazione
  10. 10. Classi di oggetti e Oggetti (secondo il formalismo UML)
  11. 11. Oggetto = istanza di una Classe automobile velocità colore livello carburante posizione marcia avvia accelera gira fermati cambia marcia rifornisci Classe Ford Focus 1.4 Velocità = 108 colore = nero livello carburante = 15,6 posizione marcia = 5 oggetto Fiat Punto 60 Velocità = 65 colore = verde livello carburante = 32,4 posizione marcia = 3 oggetto
  12. 12. Diagramma delle Classi caratteristiche specifiche comportamenti generali nome classe attributo1 attributo2 attributo3 attributo4 metodo1 metodo2 metodo3 metodo4 metodo5 metodo6 automobile velocità colore livello carburante posizione marcia avviati accelera sterza spegniti cambia marcia frena
  13. 13. Diagramma degli Oggetti cambiano le caratteristiche specifiche a seconda dell’oggetto istanziato ( i comportamenti non ci sono perché comuni a tutti gli oggetti appartenenti a quella classe ) Ford Focus 1.4 Velocità = 108 colore = nero livello carburante = 15,6 posizione marcia = 5 nome oggetto attributo 1 = val1 attributo 2 = val2 attributo 3 = val3 attributo 4 = val4 Ferrari GA 04 Velocità = 83 colore = rosso livello carburante = 85,1 posizione marcia = 2
  14. 14. Classi . Ereditarietà e Gerarchia di ereditarietà . Tipi di ereditarietà . Polimorfismo
  15. 15. Ereditarietà classe genitrice costruisco nuove classi partendo da quelle già esistenti automobile a gas velocità colore livello carburante posizione marcia tipo di gas avvia accelera sterza frena cambia marcia accendi luci scambia gas-benz. Nuova Classe automobile velocità colore livello carburante posizione marcia avvia accelera sterza frena cambia marcia accendi luci Classe
  16. 16. Gerarchia di ereditarietà Mezzi di trasporto Veicoli a motore Mezzi non a motore Auto a gas Barca Auto Moto Cavallo Bici
  17. 17. Gerarchia 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)
  18. 18. Tipi di ereditarietà Eredità singola Eredità multipla Mezzi non a motore Cavallo Bici Animali Mezzi non a motore Cavallo
  19. 19. Esempio di ereditarietà Mezzi di trasporto velocità numero persone senza patente Veicoli a motore consumo accendi spegni accelera frena Moto cupolino numero ruote piega accelera impenna
  20. 20. Ereditarietà Classe Sottoclasse La Sottoclasse si differenzia: per Estensione quando la sottoclasse aggiunge nuovi attributi e metodi 1 . per Ridefinizione quando la sottoclasse ridefinisce i metodi riscrivendone il codice ereditato ( overriding del metodo ) 2 .
  21. 21. Polimorfismo . 1° Indica la possibilità per i metodi di assumere forme diverse (cioè implementazioni diverse) all’interno della gerarchia delle classi Veicoli a motore Auto Moto accelera accelera accelera  implementazione
  22. 22. Polimorfismo . 2° Classe Auto Frena (mano, 3) Frena ( ) Frena (motore) ( overloading dei metodi ) Indica la possibilità per i metodi di assumere forme diverse (cioè implementazioni diverse) all’interno della stessa classe  parametri = nome
  23. 23. Oggetti . Attributi e Metodi . Incapsulamento . Struttura degli oggetti . Interazione tra oggetti . L’interfaccia verso l’esterno
  24. 24. metodi attributi Oggetti + attributo 1 attributo2 attributo3 attributo4 metodo 1 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
  25. 25. Oggetti attributi Descrivono le proprietà statiche dell’oggetto Nella programmazione gli attributi vengono realizzati attraverso l’uso delle variabili utilizzate dall’oggetto per memorizzare i dati metodi attributi +
  26. 26. metodi attributi Oggetti + metodi Descrivono 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
  27. 27. Incapsulamento Viene visto come una scatola nera ( o blackbox ) permettendo così il mascheramento dell’informazione ( information hiding ) La proprietà dell’oggetto di incorporare al suo interno attributi e metodi viene detta incapsulamento metodi attributi metodi attributi Sezione Pubblica Sezione Privata L’oggetto è quindi un contenitore sia di strutture dati e sia di procedure che li utilizzano
  28. 28. Sezione Pubblica attributi e metodi che si vogliono rendere visibili all’esterno ( e quindi utilizzabili dagli altri oggetti ) Struttura degli oggetti Sezione Privata attributi e metodi che non sono accessibili ad altri oggetti ( e quindi si rendono invisibili all’esterno ) pubblica privata
  29. 29. L’interfaccia verso l’esterno Un oggetto può essere utilizzato inviando ad esso dei messaggi Ambiente esterno 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 messaggi rappresenta l’interfaccia di quell’oggetto Sezione Pubblica avvia( ) accelera( ) sterza( ) frena( ) liv.carburante velocità Sezione Privata ?
  30. 30. Interazione fra gli oggetti Un programma ad oggetti è caratterizzato dalla presenza di tanti oggetti che interagiscono fra loro attraverso il meccanismo dello scambio di messaggi Metodi: accelera( ) sterza( ) frena( ) Messaggi: FerrariGA2004 .accelera( ) FerrariGA2004 .frena( ) Ferrari GA 04 Velocità = 83 colore = rosso liv.carburante = 85,1 posizione marcia = 2 Schumacher Data Nascita = 3/1/69 nazione = germania peso = 74 altezza = 174
  31. 31. metodi Quando un oggetto invoca un metodo di un altro oggetto ? Interazione fra gli oggetti <ul><li>quando vuole avere un’informazione sul secondo oggetto </li></ul><ul><li>quando vuole modificare lo stato del secondo oggetto </li></ul>( in sostanza conoscere o modificare il valore dei suoi attributi )
  32. 32. Es. di scambio di messaggi Metodo : accelera( ) FerrariGA04 . accelera( ) Serbatoio . diminuisci( ) Attributi : velocità = 92 giri motore= 9300 Metodo : diminuisci( ) FerrariGA04 . liv.carburante = 85,1 Attributo : quantità = 85,1 Attributo : liv.carburante = 85,1 Ferrari GA 04 Velocità = 83 colore = rosso liv.carburante = 85,3 posizione marcia = 2 giri motore = 8700 Schumacher Data Nascita = 3/1/69 nazione = germania peso = 74 altezza = 174 Serbatoio quantità = 85,3 tipo benz. = superF1 riserva = 15 peso = 77,3 A B C A B C
  33. 33. Nuova Metodologia Per costruire un programma orientato agli oggetti occorre: . Stabilire come gli oggetti interagiscono fra loro . . Definire le classi , indicando gli attributi e i metodi . Identificare gli oggetti che caratterizzano il modello del problema
  34. 34. orientati agli oggetti Linguaggi di programmazione
  35. 35. Linguaggi Puri ogni cosa è un oggetto ( ...anche un numero intero è definito come oggetto ) . Smalltalk . Eiffel Linguaggi ibridi alcuni tipi di dati non sono oggetti ( maggiore libertà a scapito di una maggiore chiarezza ) . C++ . Java . Visual Basic . Delphi
  36. 36. # 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++
  37. 37. 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”); } } } Java
  38. 38. 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 Basic
  39. 39. 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. Delphi
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×