SlideShare a Scribd company logo
1 of 39
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 dati di input permettono di ottenere  dei  risultati   in output
Come si programma : Applicando i principi  della  programmazione strutturata : ,[object Object],[object Object],[object Object],[object Object],[object Object]
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
Come si programma in O.O.P. ? …  applicando i principi  della  programmazione strutturata  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Quindi quello che cambia è solamente  del problema... sequenza interazione la visione algoritmo sistema
[object Object],[object Object],[object Object],Non a caso si parla di programmazione orientata   agli oggetti
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 ricapitolando... Programmazione imperativa orientata agli oggetti Programmazione
Classi di oggetti e Oggetti (secondo il formalismo UML)
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
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
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
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à 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
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 Superclasse) Sottoclasse
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   spegni accelera frena Moto cupolino numero ruote piega accelera impenna
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  .
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
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
Oggetti .  Attributi  e   Metodi .  Incapsulamento .  Struttura  degli oggetti .  Interazione  tra oggetti .  L’interfaccia  verso l’esterno
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
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 +
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
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
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
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 ?
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
metodi Quando un oggetto  invoca  un metodo  di un altro oggetto  ? Interazione  fra gli oggetti ,[object Object],[object Object],( in sostanza  conoscere  o  modificare  il valore dei suoi  attributi  )
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
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
orientati agli oggetti Linguaggi  di programmazione
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
# 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++
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+””); } } } Java
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
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

More Related Content

What's hot

Java - Generic programming
Java - Generic programmingJava - Generic programming
Java - Generic programmingRiccardo Cardin
 
ITFT-Classes and object in java
ITFT-Classes and object in javaITFT-Classes and object in java
ITFT-Classes and object in javaAtul Sehdev
 
Basic oop concepts - C++
Basic oop concepts - C++Basic oop concepts - C++
Basic oop concepts - C++Aleena Varghese
 
Object Oriented Programming with Java
Object Oriented Programming with JavaObject Oriented Programming with Java
Object Oriented Programming with Javabackdoor
 
Javascript arrays
Javascript arraysJavascript arrays
Javascript arraysHassan Dar
 
Introduction to java beans
Introduction to java beansIntroduction to java beans
Introduction to java beansHitesh Parmar
 
Polymorphism presentation in java
Polymorphism presentation in javaPolymorphism presentation in java
Polymorphism presentation in javaAhsan Raja
 
5 collection framework
5 collection framework5 collection framework
5 collection frameworkMinal Maniar
 
OOP Introduction with java programming language
OOP Introduction with java programming languageOOP Introduction with java programming language
OOP Introduction with java programming languageMd.Al-imran Roton
 
This keyword in java
This keyword in javaThis keyword in java
This keyword in javaHitesh Kumar
 
Colecciones en Java
Colecciones en JavaColecciones en Java
Colecciones en JavaRonny Parra
 
Python unit 3 m.sc cs
Python unit 3 m.sc csPython unit 3 m.sc cs
Python unit 3 m.sc csKALAISELVI P
 
WHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVAWHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVAsivasundari6
 

What's hot (20)

Java - Generic programming
Java - Generic programmingJava - Generic programming
Java - Generic programming
 
OOP with C#
OOP with C#OOP with C#
OOP with C#
 
ITFT-Classes and object in java
ITFT-Classes and object in javaITFT-Classes and object in java
ITFT-Classes and object in java
 
Basic oop concepts - C++
Basic oop concepts - C++Basic oop concepts - C++
Basic oop concepts - C++
 
Object Oriented Programming with Java
Object Oriented Programming with JavaObject Oriented Programming with Java
Object Oriented Programming with Java
 
Object-oriented concepts
Object-oriented conceptsObject-oriented concepts
Object-oriented concepts
 
Javascript arrays
Javascript arraysJavascript arrays
Javascript arrays
 
Corso ABAP OO 04
Corso ABAP OO  04Corso ABAP OO  04
Corso ABAP OO 04
 
Introduction to java beans
Introduction to java beansIntroduction to java beans
Introduction to java beans
 
Polymorphism presentation in java
Polymorphism presentation in javaPolymorphism presentation in java
Polymorphism presentation in java
 
5 collection framework
5 collection framework5 collection framework
5 collection framework
 
Object oriented programming With C#
Object oriented programming With C#Object oriented programming With C#
Object oriented programming With C#
 
OOP Introduction with java programming language
OOP Introduction with java programming languageOOP Introduction with java programming language
OOP Introduction with java programming language
 
This keyword in java
This keyword in javaThis keyword in java
This keyword in java
 
Colecciones en Java
Colecciones en JavaColecciones en Java
Colecciones en Java
 
Python unit 3 m.sc cs
Python unit 3 m.sc csPython unit 3 m.sc cs
Python unit 3 m.sc cs
 
Ado.Net Tutorial
Ado.Net TutorialAdo.Net Tutorial
Ado.Net Tutorial
 
Java inheritance
Java inheritanceJava inheritance
Java inheritance
 
Chapter2 Encapsulation (Java)
Chapter2 Encapsulation (Java)Chapter2 Encapsulation (Java)
Chapter2 Encapsulation (Java)
 
WHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVAWHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVA
 

Viewers also liked (10)

(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 ...
 
Lezione 10 - Programmazione Ad Oggetti, Vb Accenni
Lezione 10 - Programmazione Ad Oggetti, Vb AccenniLezione 10 - Programmazione Ad Oggetti, Vb Accenni
Lezione 10 - Programmazione Ad Oggetti, Vb Accenni
 
Programmazione a oggetti tramite la macchina del caffé (1/3)
Programmazione a oggetti tramite la macchina del caffé (1/3)Programmazione a oggetti tramite la macchina del caffé (1/3)
Programmazione a oggetti tramite la macchina del caffé (1/3)
 
Lezione 1: I/O in Java
Lezione 1: I/O in JavaLezione 1: I/O in Java
Lezione 1: I/O in Java
 
Digital Marketing
Digital MarketingDigital Marketing
Digital Marketing
 
Programmaoggetti[1]
Programmaoggetti[1]Programmaoggetti[1]
Programmaoggetti[1]
 
Lezione android esercizi
Lezione android esercizi Lezione android esercizi
Lezione android esercizi
 
Terza lezioneandroid
Terza lezioneandroidTerza lezioneandroid
Terza lezioneandroid
 
Lezione Android prima parte
Lezione Android prima parteLezione Android prima parte
Lezione Android prima parte
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
 

Similar to Programmazione ad oggetti

programmazione ad oggetti
programmazione ad oggettiprogrammazione ad oggetti
programmazione ad oggettimariacaporale
 
Presentazione principi oop
Presentazione principi oopPresentazione principi oop
Presentazione principi oopgcorreddu
 
Presentazione primi principi oop
Presentazione primi principi oopPresentazione primi principi oop
Presentazione primi principi oopyrcorr
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQueryXeDotNet
 
Introduzione a scala prima parte
Introduzione a scala   prima parteIntroduzione a scala   prima parte
Introduzione a scala prima parteOnofrio Panzarino
 
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseFelice Pescatore
 
Django: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalitàDjango: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalitàskam
 
Javascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesignerJavascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesignerMatteo Magni
 
Build a LINQ-enabled Repository
Build a LINQ-enabled RepositoryBuild a LINQ-enabled Repository
Build a LINQ-enabled RepositoryAndrea Saltarello
 
Presentazione Corso - Parte 2
Presentazione Corso - Parte 2Presentazione Corso - Parte 2
Presentazione Corso - Parte 2Giorgio Carpoca
 
Object oriented
Object orientedObject oriented
Object orientedKingRace97
 
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Libraryjgiudici
 
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Libraryjgiudici
 

Similar to Programmazione ad oggetti (20)

programmazione ad oggetti
programmazione ad oggettiprogrammazione ad oggetti
programmazione ad oggetti
 
Presentazione principi oop
Presentazione principi oopPresentazione principi oop
Presentazione principi oop
 
Presentazione primi principi oop
Presentazione primi principi oopPresentazione primi principi oop
Presentazione primi principi oop
 
Java lezione 4
Java lezione 4Java lezione 4
Java lezione 4
 
Pensiero Orientato Agli Oggetti
Pensiero Orientato Agli OggettiPensiero Orientato Agli Oggetti
Pensiero Orientato Agli Oggetti
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQuery
 
Introduzione a scala prima parte
Introduzione a scala   prima parteIntroduzione a scala   prima parte
Introduzione a scala prima parte
 
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione Base
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
Django: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalitàDjango: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalità
 
Repository pattern
Repository patternRepository pattern
Repository pattern
 
eZ publish - Extension
eZ publish - ExtensioneZ publish - Extension
eZ publish - Extension
 
Javascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesignerJavascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesigner
 
Vb.Net
Vb.NetVb.Net
Vb.Net
 
Build a LINQ-enabled Repository
Build a LINQ-enabled RepositoryBuild a LINQ-enabled Repository
Build a LINQ-enabled Repository
 
Presentazione Corso - Parte 2
Presentazione Corso - Parte 2Presentazione Corso - Parte 2
Presentazione Corso - Parte 2
 
Corso Java
Corso JavaCorso Java
Corso Java
 
Object oriented
Object orientedObject oriented
Object oriented
 
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Library
 
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Library
 

Programmazione ad oggetti

  • 1. La Programmazione Orientata agli Oggetti (O.O.P.) Object-Oriented Programming
  • 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.
  • 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.
  • 6. Quindi quello che cambia è solamente del problema... sequenza interazione la visione algoritmo sistema
  • 7.
  • 8. Programmi Algoritmi dati + Per la risoluzione di un Problema metodi attributi Oggetti + Per la gestione di un Sistema
  • 9. Problema complesso scomposizione in procedure scomposizione in entità interagenti (oggetti) Sistema complesso ricapitolando... Programmazione imperativa orientata agli oggetti Programmazione
  • 10. Classi di oggetti e Oggetti (secondo il formalismo UML)
  • 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. 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. 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. Classi . Ereditarietà e Gerarchia di ereditarietà . Tipi di ereditarietà . Polimorfismo
  • 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. Gerarchia di ereditarietà Mezzi di trasporto Veicoli a motore Mezzi non a motore Auto a gas Barca Auto Moto Cavallo Bici
  • 17. Gerarchia di ereditarietà Mezzi di trasporto Veicoli a motore Auto a gas Barca Auto Moto Classe Sopraclasse (o Superclasse) Sottoclasse
  • 18. Tipi di ereditarietà Eredità singola Eredità multipla Mezzi non a motore Cavallo Bici Animali Mezzi non a motore Cavallo
  • 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. 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. 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. 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. Oggetti . Attributi e Metodi . Incapsulamento . Struttura degli oggetti . Interazione tra oggetti . L’interfaccia verso l’esterno
  • 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. 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. 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. 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. 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. 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. 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.
  • 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. 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. orientati agli oggetti Linguaggi di programmazione
  • 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. # 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. 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+””); } } } Java
  • 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. 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