OO - Introduzione. Oggetti. OO - Panoramica. Progettazione orientata agli oggetti

Documenti analoghi
Progettazione orientata agli oggetti

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++

Prima di iniziare. Diamo qualche definizione :

Progettazione Object-Oriented

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13

Architetture di rete. 4. Le applicazioni di rete

Unità A2. Progettazione concettuale. Obiettivi. Astrazione. Astrazione per aggregazione

Analisi Orientata agli Oggetti

Programmazione con Java

Fondamenti di Informatica e Programmazione

INFORMATICA OOP Relazioni tra classi Roberta Gerboni

Fondamenti di Informatica A. A / 1 9

UML UNIFIED MODELING LANGUAGE

I database. Introduzione alla teoria delle basi di dati

Corso di Programmazione Dati e Istruzioni. Comunicazione dell algoritmo all elaboratore. Programmazione. Dott. Pasquale Lops

ITI M. FARADAY. Programmazione a. s

ISO- OSI e architetture Client-Server

SISTEMI INFORMATIVI E DATABASE

Fondamenti di Informatica

Corso di Informatica

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti

Lezione 13 Programmazione ad Oggetti

Diagrammi di classe e sistemi orientati agli oggetti

Programmi e Oggetti Software

Progettazione orientata agli oggetti

INFORMATICA NOVITÀ IL LINGUAGGIO JAVA. Massimiliano Bigatti. Guida alla programmazione di base IN ALLEGATO AL VOLUME

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

Introduzione alla programmazione. Walter Didimo

Progettazione Logica. Alice Pavarani

Linguaggi, Traduttori e le Basi della Programmazione

DIAGRAMMI DEI PACKAGE

Vincenzo Gervasi, Laura Semini Ingegneria del Software Dipartimento di Informatica Università di Pisa

Alcuni diagrammi. OCL (Object Constraint Language)

Ingegneria del Software 16. Progettazione dettaglio. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Basi di Dati 1 Esercitazione 4 27/11/2012. Matteo Picozzi

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

PROGETTAZIONE CONCETTUALE

Introduzione alle Basi di Dati

Programmi e Oggetti Software

Basi di Dati 1! Esercitazione 4. Matteo Picozzi!

Le basi di dati. Lez. 2: Progettazione di un DB. Laboratorio di informatica gestionale

Corso di Linguaggi di Programmazione

Metodologie e modelli di progetto

2 - Metodologie e modelli per la progettazione di BD. Informatica II Basi di Dati (08/09) Parte 1. Introduzione alla progettazione

Elementi di programmazione

PIANO DI STUDIO DELLA DISCIPLINA DISCIPLINA: Informatica

-- class -- Verso gli oggetti. struct + metodi = classi?... No!

3.1. CorsodiElementidiBasididati Il modello Entita Relazione (72) vendita ordine studente. Impiegato. Dipartimento. città. Città.

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

Disciplina: INFORMATICA

SISTEMI OPERATIVI, RETI, INTERNET

Object-Oriented Programming

SYLLABUS TRIENNIO. prof. Mauro Malatesta. Approvata dal Dipartimento di il. Approvata dal Consiglio di classe il...

Progettazione orientata agli oggetti e UML

Il paradigma Object Oriented. Iolanda Salinari

MATRICE TUNING competenze versus unità didattiche, Corso di Laurea in Informatica (classe L-31), Università degli Studi di Cagliari

Il software. Il solo hardware non è sufficiente per usare un calcolatore

Entità. Relazioni. Cardinalità delle relazioni. Ogni entità ha un nome che la identifica

Per capire cos è un oggetto prendiamo spunto dalla vita reale: un oggetto è un automobile, un computer, una casa, e così via

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Progettazione concettuale usando il modello Entità-Relazione (ER)

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

DATABASE - MODELLO E-R ENTITÀ E RELAZIONI TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL 2, HOEPLI. Informatica

Introduzione. Corso di Tecniche di Simulazione, a.a. 2005/2006. Francesca Mazzia. Dipartimento di Matematica Università di Bari.

Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A4_3 V2.1. Progettazione. Metodi e Linguaggi

Progettazione di ORDBMS

Introduzione alla OOP Object Oriented Programming. Programmazione Orientata agli Oggetti

MODELLI ISO/OSI e TCP/IP

Progettazione di dettaglio

Introduzione alla OOP Object Oriented Programming

SOFTWARE. Programmi e dati che indicano al computer come svolgere un determinato compito

Basi di dati a oggetti

Luca Tesei. Laboratorio di Sviluppo Web: Le Basi. Modulo IFTS. Fermo 31/03, 03/04, 07/ Prof. Luca Tesei Università di Camerino 1

DATABASE MODELLAZIONE DATI TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL 2, HOEPLI. Informatica

MODELLI ISO/OSI e TCP/IP

I livelli dei linguaggi. Introduzione alla OOP Object Oriented Programming. La programmazione procedurale separa il calcolo dalla memoria

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Le Reti Informatiche

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Progettazione concettuale A. Ferrari

La programmazione orientata agli oggetti. Simone Campagna Massimiliano Culpo

La fase di Progettazione

Relazioni. Andrea Polini. Laboratorio di Ingegneria del Software Corso di Laurea in Informatica L-31 Università di Camerino

PROGRAMMAZIONE INFORMATICA TRIENNIO. Opzione Scienze Applicate

PROGRAMMA PER LA PROVA DI ACCERTAMENTO

Fondamenti di Informatica

In passato, occuparsi di informatica era sinonimo di programmare computer

UML come abbozzo. Introduzione all UML. UML come linguaggio x programmi. UML come progetto dettagliato

Introduzione ai casi d uso

Informatica. Alfredo Cuzzocrea. Reti di Calcolatori

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Fondamenti di Informatica T-1. Classi & Oggetti

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Linguaggi di Programmazione

Transcript:

OO - Introduzione Progettazione orientata agli oggetti Introduzione alle tecniche orientate agli oggetti Modelli ad oggetti Oggetti, classi, associazioni, aggregazione Il compito del programmatore: collegare lo spazio del problema (problem space) con quello della soluzione (solution space) L approccio ad oggetti: descrizione in termini dello spazio del problema non in quello della macchina programmazione ad oggetti 2 OO - Panoramica Un sistema software viene realizzato mediante un insieme di oggetti che cooperano alla soluzione Gli oggetti comunicano tramite messaggi (una metafora che evidenzia la separazione tra gli oggetti) Gli oggetti sono descritti da classi, che ne definiscono le caratteristiche (metodi e proprietà) Le classi sono collegate tramite relazioni di varie tipologie Le relazioni tra le classi valgono anche per gli oggetti da esse definiti Oggetti Un sistema complesso viene suddiviso in oggetti collegati tra loro e cooperanti Gli oggetti sono scatole nere completamente blindate: l unica parte visibile di un oggetto è la sua superficie (interfaccia) definita sulla base dei messaggi che scambia con gli altri oggetti Corrispondono agli attori, alle entità fondamentali di un sistema o una situazione (termini definitori presi nel problem space) programmazione ad oggetti 3 programmazione ad oggetti 4

Classi Ogni oggetto deriva da una classe (si dice che è l istanza di una classe) La classe descrive caratteristiche e comportamenti di un insieme di oggetti Le classi sono organizzate in gerarchie e sono in relazione tra loro Classi: fabbriche di oggetti Le classi sono fabbriche di oggetti Ogni volta che serve un oggetto, si usa la classe come uno stampo per generare un nuovo oggetto avente le proprietà definite dalla classe (si istanzia la classe nell oggetto) Cfr. con tipi di dato e variabili (classe come tipo, oggetto come variabile) programmazione ad oggetti 5 programmazione ad oggetti 6 Esempi Modularità classe Franco Claudio oggetto E molto difficile descrivere un sistema complesso (controllo di reti idriche, rete di comunicazione, base di dati geografici...) come una unica entità. oggetto Protocollo di Rete classe Hyper Text Transfer Protocol oggetto File Transfer Protocol oggetto Oggetti e classi permettono di decomporre il sistema in unità più piccole aventi comportamento e caratteristiche più semplici da comprendere... divide et impera... programmazione ad oggetti 7 programmazione ad oggetti 8

Minima distanza semantica Diagrammi Le entità con cui abbiamo a che fare in un sistema OO sono una traduzione quasi diretta degli attori che compaiono nel problema: la distanza semantica tra modello e originale è molto piccola Rivenditore Veicolo Veicolo Rivenditore Diagrammi delle classi struttura logica del sistema componenti e relazioni tra essi descrizioni generiche di sistemi (casi generali) Diagrammi degli oggetti particolari istanze di sistemi (casi particolari) programmazione ad oggetti 9 programmazione ad oggetti 10 Esempio Attributi SV 314510 Rivenditore Veicolo Rivenditore Veicolo SV 314510 classi oggetti Gli attributi modellano le caratteristiche fondamentali degli oggetti o delle classi (cfr. variabili) Ad ogni attributo in una classe corrisponde un valore in un oggetto eta nome istanza Paolo () Mario Rossi AutoPiù v. Garibaldi 28 17100 Savona AutoPiù Mario Rossi eta: integer nome: string istanza Lara () eta=28 nome="paolo" eta=18 nome="lara" programmazione ad oggetti 11 programmazione ad oggetti 12

Messaggi e metodi Gli oggetti collaborano tra loro scambiandosi messaggi - qualunque scambio di informazione in un sistema ad oggetti è modellato in questo modo Ogni oggetto reagisce alla ricezione di un messaggio in un determinato modo, chiamato metodo (codice in C++) I metodi sono uguali per tutti gli oggetti di una stessa classe - il comportamento di un oggetto dipende dalla sua classe Messaggi e metodi eta: integer nome: string scrivinome scrivieta { cout << nome; } Implementazione del metodo Insieme dei dei metodi e definizione dei dei messaggi che che un un oggetto di di classe può può ricevere: Interfaccia programmazione ad oggetti 13 programmazione ad oggetti 14 Incapsulamento Associazioni Incapsulamento significa occultamento della informazione: ogni componente di un sistema deve conoscere del resto del sistema solo ciò che gli è indispensabile L interfaccia di ciascun componente (l insieme dei suoi metodi, a rigore) deve essere tale da rivelare il meno possibile della sua struttura interna (importanza delle interfacce) Progettare a compartimenti stagni significa facilitare il riuso Sono connessioni concettuali tra oggetti o classi Le associazioni sono generalmente bidirezionali Le associazioni in C++ vengono implementate con puntatori: per questo spesso è utile definire un verso di navigazione preferenziale della relazione programmazione ad oggetti 15 programmazione ad oggetti 16

Associazioni Associazioni La relazione di associazione implica una interazione tra oggetti o classi: due oggetti o classi in associazione di solito interagiscono attraverso l invio di messaggi 1: dammilistaveicoli Veicoloentrato-da Casello Autostradale 2: dammitarga uomo cliente sposato-con donna oggetto/ classe comunica con... usa i servizi di... è in relazione con...... oggetto2/ classe2 Dipendente lavora per Azienda acquisto automobile programmazione ad oggetti 17 programmazione ad oggetti 18 Esattamente uno molti (zero o più) Molteplicità Associazioni e attributi Una associazione può essere caratterizzata da attributi opzionale (zero o uno) Automobile 1+ Acquisto data di acquisto 3..10 programmazione ad oggetti 19 programmazione ad oggetti 20

Associazione, attributo o classe? Ruoli Uomo Uomo Coniuge sposato-con sposato-con anno-dimatrimonio Donna Donna Un ruolo è un nome che identifica univocamente un estremo della associazione Un ruolo viene utilizzato per attraversare l associazione senza menzionarla eliminando eventuali ambiguità di interpretazione Un ruolo spesso è rappresentato con un sostantivo e una associazione con un verbo Uomo Matrimonio Donna programmazione ad oggetti 21 programmazione ad oggetti 22 Ruoli Aggregazione Utente possessore possiede Directory contiene E una associazione che indica contiene, è costituito da... possessore possiede contiene contenitore contenuto 4 File Stanza Parete programmazione ad oggetti 23 programmazione ad oggetti 24

Aggregazione Modello ad Oggetti di VCR - TV Gli oggetti componenti diventano proprietà esclusiva dell oggetto composto che diventa così la loro interfaccia per i messaggi ricevuti da altri oggetti 1: MettiInMoto Automobile 4 Ruota 2: CominciaRotazione Propagazione del messaggio programmazione ad oggetti 25 programmazione ad oggetti 26 Modello ad Oggetti di VCR - TV VCR-TV Modello ad Oggetti di un Calcolatore Modo VCR Play Pausa Registra Avanti Veloce Riavvoglimento Stop Eject Canale TV Canale avanti Canale indietro Ora Orologio Meccanica nastro NastroInserito Set Play Pausa Registra Avanti veloce Riavvolgimento Stop programmazione ad oggetti Eject 27 programmazione ad oggetti 28

Calcolatore Modello ad Oggetti di un Calcolatore Part Of Tasto Premi Contiene GeoFacts -- Un piccolo database turistico Display Tasto Diplay Taso Operazione Relazione Clear AggiungiCifra Cifra Decimale Valore Mostra IsA Punto decimale programmazione ad oggetti 29 programmazione ad oggetti 30 GeoFacts Diagramma ad Oggetti GeoFacts Esercizi Continente Nome Costruire un modello ad oggetti che descriva il funzionamento di uno dei programmi grafici che state utilizzando (es. finestra di login ) Antartide Fatto IsA Nord America Sud America Campagna Africa Asia Europa Nome Lago Costruire un modello ad oggetti che descriva le relazioni tra utenti, processi, directory, file in un sistema operativo tipo Unix Deserto Fiume Ghiacciaio Isola Città Banchisa programmazione ad oggetti 31 Montagna programmazione ad oggetti 32