Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a. 2002-2003.

Slides:



Advertisements
Presentazioni simili
Il paradigma Object Oriented
Advertisements

Programmazione ad oggetti
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Unified Modeling Language
Recupero debito quarto anno Primo incontro
Recupero debito quarto anno Secondo incontro
Informatica Recupero debito quarto anno Terzo incontro.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Metodologie di Programmazione = decomposizione basata su astrazioni
Generalità Linguaggio e Macchina Astratta
Principi di Programmazione Object-Oriented
Principi di Programmazione Object-Oriented
Programmazione orientata agli oggetti OOP Object Oriented Programming
©Carlo Tasso 1999 Object Oriented Programming Slide 1 OO Analysis Vs. OO Design OOA – Object Oriented Analysis. –Specifica COSA, IN QUALE CONTESTO il sistema.
8. Progettazione del Software
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione al linguaggio C++ 5 lezioni
Corso di Informatica (Programmazione)
Overriding.
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 4 1 Sulla realizzazione dellereditarietà 4 Ereditarietà: statica / dinamica 4 Binding: statico.
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
CAPITOLO 3 ELEMENTI DI PROGRAMMAZIONE OBJECT-ORIENTED.
© CEFRIEL Ricettario dei principali pattern GoF Docente: Gabriele Lombardi
Type int_stack = struct { int top; int P[100]; } int_stack creapila() { int_stack s = new int_stack; s.top = 0; return s; } int_stack push(int_stack s,
Type int_stack = struct { int top; int P[100]; } int_stack creapila() { int_stack s = new int_stack; s.top = 0; return s; } int_stack push(int_stack s,
Lab. Calc. 2005/06 Ereditarietà. Lab. Calc. 2005/06 Scopo di questa lezione: Imparare a creare nuove classi ereditando da classi già esistenti. Capire.
1 laboratorio di calcolo II AA 2003/04 quarta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
1 Ereditarietà Una classe può essere derivata da una classe esistente usando la sintassi: public, protected e private specificano il tipo di accesso ai.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Java base IV: Java e la programmazione O.O.
Java concetti A.Natali Marzo Java Dai concetti ai costrutti.
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Programmazione in Java (8)
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
Ereditarietà e Polimorfismo
L’ingegneria del software
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
Introduzione alla programmazione Object Oriented
Il linguaggio UML Luca Lista.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Esercitazioni di Ingegneria del Software con UML
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Polimorfismo.
Programmazione ad oggetti
Lezione 1 Panoramica sui paradigmi di programmazione
Incapsulamento e information hiding
Programmazione ad oggetti
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
OBJECT ORIENTED DATABASE introduzione. OGGETTO Ha due componenti:  stato: valore di alcune variabili (variabili di istanza)  comportamento: insieme.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 4 -Progettazione del software Ernesto Damiani Università degli Studi.
Fondamenti di Informatica 2 Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
La Programmazione ad Oggetti
Informazione ?. Informazione è Quale è il centravanti del Napoli?  La soluzione è ….. Scelta di un centravanti fra quelli di serie A! è Che giorno è.
Attività 1 Introduzione alla OOP
La programmazione ad oggetti
UML Unified Modelling Language Linguaggio per la modellazione unificato.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a

Programmazione ad Oggetti Per gestire la complessità del sistema da realizzare occorre considerare solamente le proprietà essenziali dei moduli software che si devono implementare (criterio di astrazione) in una classe di problema ben specificata (dominio del problema). Si devono omettere i dettagli non necessari alla risoluzione del problema nel suo dominio.

Programmazione ad Oggetti L’astrazione può essere effettuata a due livelli ASTRAZIONE SUI DATI consiste nell’astrarre le entità (oggetti) costituenti il sistema, descritte in termini di una struttura dati e delle operazioni possibili su di essa. ASTRAZIONE SUL CONTROLLO consiste nell'astrarre una data funzionalità dai dettagli della sua implementazione

Programmazione ad Oggetti Nei linguaggi procedurali, il tipo di dato è l’insieme dei valori che può assumere una variabile dello stesso tipo. Nella programmazione ad oggetti, il tipo di dato astratto (Abstract Data Type o ADT) estende questa definizione includendo anche tutte le possibili operazioni che possono essere effettuate su quel determinato tipo. La struttura dati è pertanto incapsulata nelle operazioni su di essa definite

Programmazione ad Oggetti Nella Programmazione ad Oggetti (in inglese Object Oriented Programming o OOP) le unità base per la costruzione del sistema sono gli oggetti, che sono istanze di classi. Una classe rappresenta l’astrazione di oggetti aventi le stesse caratteristiche nel dominio del problema da risolvere. Es: la classe delle automobili; la classe dei radar;

Programmazione ad Oggetti Le caratteristiche che definiscono una classe sono: gli attributi o dati membro, che sono le variabili associate ad una classe I metodi o funzioni membro, che sono le procedure o servizi che la classe mette a disposizione (chiamate anche interfaccia o protocollo). Le classi pertanto definiscono gli ADT e da esse si istanziano (cioè si creano) gli oggetti

Programmazione ad Oggetti classe attr1 attr2….. ATTRIBUTI METODI f1(…) f2(..)….. NOME CLASSE Graficamente, una classe sarà rappresentata nel seguente modo La rappresentazione grafica è usata da UML (Unified Modeling Language) per la progettazione di sistemi software

Programmazione ad Oggetti I linguaggi per la programmazione ad oggetti hanno le seguenti caratteristiche in comune: Incapsulamento Ereditarietà Composizione Polimorfismo Binding Dinamico

Programmazione ad Oggetti L’incapsulamento è la proprietà per cui le struttura interna dell’oggetto è nascosta agli altri oggetti. La comunicazione tra oggetti avviene tramite l’invio di messaggi. L’implementazione dei messaggi avviene tramite le chiamate a funzione dei metodi degli oggetti. L’incapsulamento fa sì che le operazioni dell’oggetto non possono essere in nessun modo influenzate da altri oggetti.

Programmazione ad Oggetti L’ereditarietà (inheritance) è il meccanismo per cui un oggetto acquisisce le proprietà di un altro oggetto in base al concetto di classificazione gerarchica. La classe che eredita le proprietà si chiama sottoclasse La classe che fornisce le proprie caratteristiche si chiama superclasse La sottoclasse “eredita” le caratteristiche della superclasse (secondo determinate modalità) Una classe può essere sottoclasse di differenti superclassi (eredità multipla o multiple inheritance)

Programmazione ad Oggetti SIMBOLO DI EREDITARIETA’ superclasse attr1 attr2….. f1(…) f2(..)….. sottoclasseA attr1 attr2….. f1(…) f2(..)….. sottoclasseB attrx attry….. fx(…) fy(..)….. In UML la rappresentazione grafica per la ereditarietà è la seguente:

Vi è la possibilità di definire un oggetto come composto da oggetti diversi. Una struttura in cui un oggetto è composto da più oggetti si chiama composizione o aggregazione o APO (a-part-of). Es: La classe auto è composta dalle classi motore, scocca, ruota, etc. Ognuna di queste classi puà eventualmente essere scomposta in altre APO a seconda della natura del problema da risolvere. Programmazione ad Oggetti:

Programmazione ad Oggetti SIMBOLO DI COMPOSIZIONE classe attr1 attr2….. f1(…) f2(..)….. parteA attr1 attr2….. f1(…) f2(..)….. In UML la rappresentazione grafica per la composizione è la seguente: 1 n

Programmazione ad Oggetti Il polimorfismo è la capacità che hanno oggetti diversi, ma correlati in quanto derivanti da una superclasse comune, di rispondere in maniera diversa ad uno stesso messaggio. Es: La classe rettangolo e esagono derivano dalla classe poligono. Il calcolo dell’area è un metodo che ha senso nella classe poligono, ma ha un diverso comportamento per il rettangolo e per l’esagono. Nel C++, il polimorfismo è implementato tramite le funzioni virtuali

Programmazione ad Oggetti Poligono regolare... lato Classe a …... esagono... Area(lato) quadrato Area(lato)... Area(lato_x) Le classi quadrato ed esagono si comportano differentemente a fronte della ricezione del messaggio Area(lato_x)

Programmazione ad Oggetti Il binding dinamico (o binding tardivo o late binding) di un linguaggio orientato agli oggetti è l’abilità di determinare la classe dell’oggetto a run-time e allocare memoria per esso. Il binding dinamico è trasparente allo sviluppatore. In altre parole, chi sviluppa un programma non deve usare nessuna istruzione particolare affinché si esegua il binding dinamico. Il binding dinamico ha la sua controparte nel binding statico o precoce (early binding), dove l’allocazione è effettuata dal compilatore.

Programmazione ad Oggetti riuso: l'ereditarietà consente di riusare la definizione di una classe nel definire nuove sottoclassi information hiding: sia le strutture dati che gli algoritmi sono nascosti alla visibilità dall'esterno di un oggetto; estensibilità: l'ereditarietà, il polimorfismo ed il binding dinamico agevolano l'aggiunta di nuove funzionalità, minimizzando le modifiche necessarie al sistema esistente quando si vuole estenderlo.

Programmazione ad Oggetti modularità: le classi sono i moduli del sistema software; coesione dei moduli: una classe è un componente software ben coeso in quanto rappresentazione di una entità disaccoppiamento dei moduli:gli oggetti hanno un alto grado di disaccoppiamento in quanto i metodi operano sulla struttura dati interna ad un oggetto; il sistema complessivo viene costruito componendo operazioni sugli oggetti;

Programmazione ad Oggetti I passi principali da effettuare sono: 1. Identificare le classi e gli oggetti che descrivono il problema e la soluzione 2. Identificare i rispettivi attributi e i metodi 3. Descrivere il comportamento dei metodi in termini di pseudocodice 4. Implementare nel linguaggio OO

Programmazione ad Oggetti RADAR RicercaAereo VisualizzaTracciato VelocitàTracking Posizione ATTRIBUTI METODI Es. CLASSE RADAR in C++ 2 istanze di oggetti di classe RADAR Simulazione di 2 radar