際際滷

際際滷Share a Scribd company logo
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 : metodologia di analisi  Top-Down Strutture  di controllo   sequenza selezione  iterazione
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  cio竪 ... metodologia di analisi Top-Down strutture di controllo   sequenza selezione  iterazione
Quindi quello che cambia 竪 solamente  del problema... sequenza interazione la visione algoritmo sistema
Per cui 竪 necessario individuare  : le   entit   (gli oggetti)   presenti allinterno del sistema le   modalit   di interazione reciproca 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 delloggetto 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 Classe Sopraclasse   (o Superclasse) Sottoclasse Classe Sopraclasse   (o Superclasse)
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)  allinterno 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)  allinterno della  stessa classe  parametri = nome
Oggetti .  Attributi  e   Metodi .  Incapsulamento .  Struttura  degli oggetti .  Interazione  tra oggetti .  Linterfaccia  verso lesterno
metodi attributi Oggetti + attributo 1  attributo2  attributo3  attributo4  metodo 1  metodo2  metodo3  metodo4  metodo5  metodo6  Costituiscono la  memoria  delloggetto e consentono di tenere traccia dello  stato  delloggetto 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  delloggetto Nella  programmazione  gli attributi vengono realizzati attraverso luso delle  variabili  utilizzate dalloggetto per memorizzare i dati metodi attributi +
metodi attributi Oggetti + metodi Descrivono le propriet  dinamiche  delloggetto Nella  programmazione  i metodi vengono realizzati attraverso la scrittura di codice ( procedure  e  funzioni ) che implementano le operazioni delloggetto
Incapsulamento Viene visto come una  scatola nera  ( o blackbox )  permettendo cos狸 il mascheramento dellinformazione  (  information hiding   ) La propriet delloggetto di  incorporare   al suo interno  attributi  e  metodi   viene detta   incapsulamento   metodi attributi metodi attributi Sezione   Pubblica Sezione   Privata Loggetto 竪 quindi un  contenitore  sia di strutture dati e sia di procedure che li utilizzano
Sezione   Pubblica attributi   e  metodi   che si vogliono rendere  visibili   allesterno  ( 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  allesterno ) pubblica privata
Linterfaccia  verso lesterno Un oggetto   pu嘆 essere utilizzato  inviando ad esso dei messaggi Ambiente esterno Linterfaccia   non consente di vedere  come sono implementati i metodi, ma ne permette il loro utilizzo e laccesso agli attributi pubblici Linsieme dei messaggi   rappresenta  linterfaccia   di quelloggetto 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 quando vuole  avere uninformazione  sul secondo oggetto quando vuole  modificare lo stato  del secondo oggetto  ( 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+\n); } } } 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 (20)

Polymorphism
PolymorphismPolymorphism
Polymorphism
Kumar Gaurav
Java: Primitive Data Types
Java: Primitive Data TypesJava: Primitive Data Types
Java: Primitive Data Types
Tareq Hasan
Generics in java
Generics in javaGenerics in java
Generics in java
suraj pandey
Windowforms controls c#
Windowforms controls c#Windowforms controls c#
Windowforms controls c#
prabhu rajendran
Html ppt
Html pptHtml ppt
Html ppt
Iblesoft
Java Generics - by Example
Java Generics - by ExampleJava Generics - by Example
Java Generics - by Example
CodeOps Technologies LLP
HTML Forms
HTML FormsHTML Forms
HTML Forms
Ravinder Kamboj
Dom date and objects and event handling
Dom date and objects and event handlingDom date and objects and event handling
Dom date and objects and event handling
smitha273566
JavaScript - Chapter 8 - Objects
 JavaScript - Chapter 8 - Objects JavaScript - Chapter 8 - Objects
JavaScript - Chapter 8 - Objects
WebStackAcademy
Java Constructors
Java ConstructorsJava Constructors
Java Constructors
Saumya Som
Javascript arrays
Javascript arraysJavascript arrays
Javascript arrays
Hassan Dar
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYAPYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
Maulik Borsaniya
Serialization in java
Serialization in javaSerialization in java
Serialization in java
Janu Jahnavi
friend function(c++)
friend function(c++)friend function(c++)
friend function(c++)
Ritika Sharma
Object oriented programming With C#
Object oriented programming With C#Object oriented programming With C#
Object oriented programming With C#
Youssef Mohammed Abohaty
Java abstract class & abstract methods
Java abstract class & abstract methodsJava abstract class & abstract methods
Java abstract class & abstract methods
Shubham Dwivedi
Object Oriented Programming with C#
Object Oriented Programming with C#Object Oriented Programming with C#
Object Oriented Programming with C#
foreverredpb
Chapter 07 inheritance
Chapter 07 inheritanceChapter 07 inheritance
Chapter 07 inheritance
Praveen M Jigajinni
PHP Arrays - indexed and associative array.
PHP Arrays - indexed and associative array. PHP Arrays - indexed and associative array.
PHP Arrays - indexed and associative array.
wahidullah mudaser
C# Inheritance
C# InheritanceC# Inheritance
C# Inheritance
Prem Kumar Badri
Java: Primitive Data Types
Java: Primitive Data TypesJava: Primitive Data Types
Java: Primitive Data Types
Tareq Hasan
Generics in java
Generics in javaGenerics in java
Generics in java
suraj pandey
Windowforms controls c#
Windowforms controls c#Windowforms controls c#
Windowforms controls c#
prabhu rajendran
Html ppt
Html pptHtml ppt
Html ppt
Iblesoft
Dom date and objects and event handling
Dom date and objects and event handlingDom date and objects and event handling
Dom date and objects and event handling
smitha273566
JavaScript - Chapter 8 - Objects
 JavaScript - Chapter 8 - Objects JavaScript - Chapter 8 - Objects
JavaScript - Chapter 8 - Objects
WebStackAcademy
Java Constructors
Java ConstructorsJava Constructors
Java Constructors
Saumya Som
Javascript arrays
Javascript arraysJavascript arrays
Javascript arrays
Hassan Dar
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYAPYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
Maulik Borsaniya
Serialization in java
Serialization in javaSerialization in java
Serialization in java
Janu Jahnavi
friend function(c++)
friend function(c++)friend function(c++)
friend function(c++)
Ritika Sharma
Java abstract class & abstract methods
Java abstract class & abstract methodsJava abstract class & abstract methods
Java abstract class & abstract methods
Shubham Dwivedi
Object Oriented Programming with C#
Object Oriented Programming with C#Object Oriented Programming with C#
Object Oriented Programming with C#
foreverredpb
PHP Arrays - indexed and associative array.
PHP Arrays - indexed and associative array. PHP Arrays - indexed and associative array.
PHP Arrays - indexed and associative array.
wahidullah mudaser

Viewers also liked (9)

Principi della oop - Ereditariet e polimorfismo
Principi della oop  - Ereditariet e polimorfismoPrincipi della oop  - Ereditariet e polimorfismo
Principi della oop - Ereditariet e polimorfismo
yrcorr
Java: Inheritance
Java: InheritanceJava: Inheritance
Java: Inheritance
Tareq Hasan
inheritance c++
inheritance c++inheritance c++
inheritance c++
Muraleedhar Sundararajan
Java Inheritance
Java InheritanceJava Inheritance
Java Inheritance
Rosie Jane Enomar
C++ Inheritance
C++ InheritanceC++ Inheritance
C++ Inheritance
Jussi Pohjolainen
Inheritance in C++
Inheritance in C++Inheritance in C++
Inheritance in C++
Laxman Puri
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
cprogrammings
Inheritance
InheritanceInheritance
Inheritance
Selvin Josy Bai Somu
Inheritance
InheritanceInheritance
Inheritance
Sapna Sharma
Principi della oop - Ereditariet e polimorfismo
Principi della oop  - Ereditariet e polimorfismoPrincipi della oop  - Ereditariet e polimorfismo
Principi della oop - Ereditariet e polimorfismo
yrcorr
Java: Inheritance
Java: InheritanceJava: Inheritance
Java: Inheritance
Tareq Hasan
Inheritance in C++
Inheritance in C++Inheritance in C++
Inheritance in C++
Laxman Puri
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
cprogrammings

Similar to programmazione ad oggetti (20)

Programmaoggetti[1]
Programmaoggetti[1]Programmaoggetti[1]
Programmaoggetti[1]
Anna_1969
Presentazione principi oop
Presentazione principi oopPresentazione principi oop
Presentazione principi oop
gcorreddu
Java lezione 4
Java lezione 4Java lezione 4
Java lezione 4
Sergio Ronchi
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQuery
XeDotNet
Pensiero Orientato Agli Oggetti
Pensiero Orientato Agli OggettiPensiero Orientato Agli Oggetti
Pensiero Orientato Agli Oggetti
Silvano Natalizi - ITIS ALESSANDRO VOLTA PERUGIA
Introduzione a scala prima parte
Introduzione a scala   prima parteIntroduzione a scala   prima parte
Introduzione a scala prima parte
Onofrio Panzarino
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
Pasquale Paola
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
Rice Cipriani
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione Base
Felice Pescatore
Django: utilizzo avanzato e nuove funzionalit
Django: utilizzo avanzato e nuove funzionalitDjango: utilizzo avanzato e nuove funzionalit
Django: utilizzo avanzato e nuove funzionalit
skam
Vb.Net
Vb.NetVb.Net
Vb.Net
Maurizio Farina
Javascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesignerJavascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesigner
Matteo Magni
Repository pattern
Repository patternRepository pattern
Repository pattern
Christian Nastasi
Presentazione Corso - Parte 2
Presentazione Corso - Parte 2Presentazione Corso - Parte 2
Presentazione Corso - Parte 2
Giorgio Carpoca
Build a LINQ-enabled Repository
Build a LINQ-enabled RepositoryBuild a LINQ-enabled Repository
Build a LINQ-enabled Repository
Andrea Saltarello
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con Scala
Franco Lombardo
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Library
jgiudici
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Library
jgiudici
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Library
jgiudici
Programmaoggetti[1]
Programmaoggetti[1]Programmaoggetti[1]
Programmaoggetti[1]
Anna_1969
Presentazione principi oop
Presentazione principi oopPresentazione principi oop
Presentazione principi oop
gcorreddu
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQuery
XeDotNet
Introduzione a scala prima parte
Introduzione a scala   prima parteIntroduzione a scala   prima parte
Introduzione a scala prima parte
Onofrio Panzarino
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
Pasquale Paola
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
Rice Cipriani
Object Oriented with Java Programmazione Base
Object Oriented with Java Programmazione BaseObject Oriented with Java Programmazione Base
Object Oriented with Java Programmazione Base
Felice Pescatore
Django: utilizzo avanzato e nuove funzionalit
Django: utilizzo avanzato e nuove funzionalitDjango: 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 & WebDesigner
Matteo Magni
Presentazione Corso - Parte 2
Presentazione Corso - Parte 2Presentazione Corso - Parte 2
Presentazione Corso - Parte 2
Giorgio Carpoca
Build a LINQ-enabled Repository
Build a LINQ-enabled RepositoryBuild a LINQ-enabled Repository
Build a LINQ-enabled Repository
Andrea Saltarello
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con Scala
Franco Lombardo
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Library
jgiudici
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Library
jgiudici
JSP Tag Library
JSP Tag LibraryJSP Tag Library
JSP Tag Library
jgiudici

Recently uploaded (18)

Test Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: KendallTest Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: Kendall
alawamajina
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazioneCustomer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
belodevici
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
orakategy
Digital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions ManualDigital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions Manual
idderkribo
La tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptxLa tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptx
Fabio Scandurra
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim WalkerImproving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
aokasmaany
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
orrahnaf
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : SueTest Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
dementogge
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon ManningLearning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
jelieltoinks
2 - Presentazione disturbo spettro autismo.pdf
2 - Presentazione disturbo spettro  autismo.pdf2 - Presentazione disturbo spettro  autismo.pdf
2 - Presentazione disturbo spettro autismo.pdf
GiovanniBertoni
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
orakategy
New Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy AlbersNew Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy Albers
uxhcablende
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
osanoarak
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario AutovalutazioneCustomer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
belodevici
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark JohnstonTest Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
pplqadiri
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
izmarmelum
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Damiano Orru
Designing Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael FrahmDesigning Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael Frahm
ewoadetozito
Test Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: KendallTest Bank for Systems Analysis and Design 8th Edition: Kendall
Test Bank for Systems Analysis and Design 8th Edition: Kendall
alawamajina
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazioneCustomer Satisfaction a.s. 2022-23 - Questionario autovalutazione
Customer Satisfaction a.s. 2022-23 - Questionario autovalutazione
belodevici
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...Essentials of Accounting for Governmental and Not for Profit Organizations 13...
Essentials of Accounting for Governmental and Not for Profit Organizations 13...
orakategy
Digital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions ManualDigital Business Networks 1st Edition Dooley Solutions Manual
Digital Business Networks 1st Edition Dooley Solutions Manual
idderkribo
La tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptxLa tossicodipendenza pi湛 difficile da trattare.pptx
La tossicodipendenza pi湛 difficile da trattare.pptx
Fabio Scandurra
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim WalkerImproving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
Improving Code Quality 1st Edition Yiannis Kanellopoulos & Tim Walker
aokasmaany
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
Test Bank for Foundations of Financial Markets and Institutions, 4th Edition:...
orrahnaf
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : SueTest Bank for Understanding Abnormal Behavior, 10th Edition : Sue
Test Bank for Understanding Abnormal Behavior, 10th Edition : Sue
dementogge
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon ManningLearning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
Learning Swift Building Apps for OSX, iOS, and Beyond Jon Manning
jelieltoinks
2 - Presentazione disturbo spettro autismo.pdf
2 - Presentazione disturbo spettro  autismo.pdf2 - Presentazione disturbo spettro  autismo.pdf
2 - Presentazione disturbo spettro autismo.pdf
GiovanniBertoni
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
Essentials of Accounting for Governmental and Not-for-Profit Organizations 12...
orakategy
New Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy AlbersNew Methods of Literacy Research 1st Edition Peggy Albers
New Methods of Literacy Research 1st Edition Peggy Albers
uxhcablende
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
(eBook PDF) Auditing: A Practical Approach with Data Analytics by Raymond N. ...
osanoarak
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario AutovalutazioneCustomer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
Customer Satisfaction a.s. 2023-24 - Questionario Autovalutazione
belodevici
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark JohnstonTest Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
Test Bank for Marketing Management, 3rd Edition, Greg Marshall, Mark Johnston
pplqadiri
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
Test Bank for Canadian Organizational Behaviour, 10th Edition, Steven McShane...
izmarmelum
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Presentazione della Dichiarazione di Dubai sulle OER alla comunit italiana -...
Damiano Orru
Designing Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael FrahmDesigning Intelligent Construction Projects Michael Frahm
Designing Intelligent Construction Projects Michael Frahm
ewoadetozito

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. Come si programma : Applicando i principi della programmazione strutturata : metodologia di analisi Top-Down Strutture di controllo sequenza selezione iterazione
  • 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. 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
  • 6. Quindi quello che cambia 竪 solamente del problema... sequenza interazione la visione algoritmo sistema
  • 7. Per cui 竪 necessario individuare : le entit (gli oggetti) presenti allinterno del sistema le modalit di interazione reciproca Non a caso si parla di programmazione orientata agli oggetti
  • 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 delloggetto 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 Classe Sopraclasse (o Superclasse) Sottoclasse Classe Sopraclasse (o Superclasse)
  • 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) allinterno 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) allinterno della stessa classe parametri = nome
  • 23. Oggetti . Attributi e Metodi . Incapsulamento . Struttura degli oggetti . Interazione tra oggetti . Linterfaccia verso lesterno
  • 24. metodi attributi Oggetti + attributo 1 attributo2 attributo3 attributo4 metodo 1 metodo2 metodo3 metodo4 metodo5 metodo6 Costituiscono la memoria delloggetto e consentono di tenere traccia dello stato delloggetto 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 delloggetto Nella programmazione gli attributi vengono realizzati attraverso luso delle variabili utilizzate dalloggetto per memorizzare i dati metodi attributi +
  • 26. metodi attributi Oggetti + metodi Descrivono le propriet dinamiche delloggetto Nella programmazione i metodi vengono realizzati attraverso la scrittura di codice ( procedure e funzioni ) che implementano le operazioni delloggetto
  • 27. Incapsulamento Viene visto come una scatola nera ( o blackbox ) permettendo cos狸 il mascheramento dellinformazione ( information hiding ) La propriet delloggetto di incorporare al suo interno attributi e metodi viene detta incapsulamento metodi attributi metodi attributi Sezione Pubblica Sezione Privata Loggetto 竪 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 allesterno ( 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 allesterno ) pubblica privata
  • 29. Linterfaccia verso lesterno Un oggetto pu嘆 essere utilizzato inviando ad esso dei messaggi Ambiente esterno Linterfaccia non consente di vedere come sono implementati i metodi, ma ne permette il loro utilizzo e laccesso agli attributi pubblici Linsieme dei messaggi rappresenta linterfaccia di quelloggetto 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. metodi Quando un oggetto invoca un metodo di un altro oggetto ? Interazione fra gli oggetti quando vuole avere uninformazione sul secondo oggetto quando vuole modificare lo stato del secondo oggetto ( in sostanza conoscere o modificare il valore dei suoi attributi )
  • 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+\n); } } } 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