!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9



Похожие документы
Object Oriented Programming

Corso di Informatica

Object Oriented Software Design

Modellazione dei dati in UML

Oggetti Lezione 3. aspetti generali e definizione di classi I

Modulo 4: Ereditarietà, interfacce e clonazione

Programmazione a Oggetti Lezione 10. Ereditarieta

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

Concetti di base di ingegneria del software

Automazione Industriale 4- Ingegneria del Software

Corso di Programmazione ad Oggetti

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Il paradigma OO e le relative metodologie di progettazione. Programmazione orientata agli oggetti

UML Diagrammi delle classi. UML Diagramma classi 1

Progettazione : Design Pattern Creazionali

Proff. Fabio Ciao e Raffaele Bortone

Strumenti di modellazione. Gabriella Trucco

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Programmazione a Oggetti Modulo B

Programmi e Oggetti Software

progettare buone gerarchie

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011.

Introduzione alla Programmazione ad Oggetti in C++

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2014/2015

Dalla progettazione concettuale alla modellazione di dominio

Esercitazione n 4. Obiettivi

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

UML Unified Modeling Language

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Java: Compilatore e Interprete

Soluzione dell esercizio del 2 Febbraio 2004

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Programmazione A.A Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII)

Concetto di Funzione e Procedura METODI in Java

GESTIONE DEI PROCESSI

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Abstract Data Type (ADT)

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

Introduzione alla Progettazione per Componenti

dall argomento argomento della malloc()

La Metodologia adottata nel Corso

Progettaz. e sviluppo Data Base

7. Architetture Software

Introduzione a Classi e Oggetti

Generazione Automatica di Asserzioni da Modelli di Specifica

Elementi di UML (7): Diagrammi dei componenti e di deployment

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Architetture software

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Progettare una basi di dati vuole dire progettare la struttura dei dati e le applicazioni

Progettaz. e sviluppo Data Base

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI

Approccio stratificato

Modellazione e progettazione con UML. Eduard Roccatello 3D GIS Specialist <eduard.roccatello@3dgis.it>

Corso di Programmazione ad Oggetti

UniRoma2 - Ingegneria del Software 1 1

Parola chiave extends

Alessandra Raffaetà. Basi di Dati

SOMMARIO. Sistemi Self-Adaptive Motivazioni Ciclo di vita della cellula Paradigma. Future Work

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

Algoritmi per suddividere il testo in righe in un editor di testo

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe È qualcosa che abbiamo già visto varie volte

Gestione degli eventi in Java

Inizializzazione, Assegnamento e Distruzione di Classi

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Progettazione del Software

Gestione Risorse Umane Web

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

Programmazione Java: Variabili membro, Metodi La parola chiave final

Corso sul linguaggio Java

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

SDD System design document

Class Diagram. Catia Trubiani. Laboratorio di Ingegneria del Software a.a

design patterns e GRASP

Progettazione ad oggetti

FONDAMENTI di INFORMATICA L. Mezzalira

L interfaccia grafica in Java

Telematica II 17. Esercitazione/Laboratorio 6

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Diagrammi dei package

Il documento rappresenta una guida sintetica per descrivere sia la filosofia che il modulo software per l implementazione dei workflow in recuper@2.

Corso di Informatica

Lezione 1. Introduzione e Modellazione Concettuale

Транскрипт:

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se possiede funzioni che ne rendono conveniente (semplice, sicuro, efficiente) l uso: librerie standard ambienti di programmazione controlli in compilazione e/o in esecuzione Slide 2

Programmazione Procedurale! Definire le procedure I linguaggi supportano questo paradigma se forniscono la possibilità di: passare argomenti restituire valori Slide 3 Programmazione Modulare! Definire i moduli /%'.)(('()#*%++++++++++++++++++++++-"$'*)(('()#*% 0%..%+1"#2%03"%+++++++++++++++++++0%)+0'&) Modulo: insieme di procedure poste in relazione ai dati che utilizzano (pila, lista,...) Risulta sufficiente lo stile di programmazione procedurale se non esiste la necessità di definire un insieme di procedure con dati associati Slide 4

Tipo di Dato Astratto! Definire tipi di dato e insieme completo di operazioni I tipi di dato astratto (o tipi definiti dall utente) presentano caratteristiche simili ai tipi di dato predefiniti dal linguaggio visibilità, controlli in fase di compilazione, ecc. Se non esiste la necessità di più istanze di un tipo di dato astratto, risulta sufficiente lo stile di programmazione con dati nascosti (programmazione modulare) Il tipo di dato astratto è, in generale, poco flessibile; non è possibile adattarlo ad un nuovo utilizzo, se non modificandone la definizione. Slide 5 Paradigma di Programmazione ad Oggetti! Occorre uno strumento che consenta di operare una distinzione tra le proprietà di tipi di dati più generali e le proprietà specifiche di singoli sottotipi Nota: se non vi è alcuna similitudine tra i tipi del problema è sufficiente l astrazione di dato. Programmazione Orientata agli Oggetti! Analisi del problema in termini di concetti (oggetti) che lo costituiscono (modello concettuale del problema) Slide 6

Paradigma di Programmazione ad Oggetti! Intende promuovere nei programmi caratteristiche ritenute fondamentali: Modularità Information hiding (incapsulamento) Riusabilità Progettazione incrementale Rapida prototipizzazione! I linguaggi di programmazione orientati agli oggetti sono accomunati da tre fattori:!"-':40&'8,"5% ; <45,"7+(+&+56# ;.%&+8%)=+48% Incapsulamento, consente di nascondere i dati ed esporre solo (alcuni) metodi Estendibilità, introduce il concetto di classificazione degli oggetti. Polimorfismo, è caratterizzato dalla frase un interfaccia più metodi. Slide 7 Gli Oggetti! Un oggetto è un area di memoria inizializzata! Un oggetto è un aggregazione software di attributi (stato) e relativi metodi/servizi (comportamento)! Un oggetto è un astrazione che descrive oggetti reali del problema e concetti astratti che fanno parte della sua soluzione Metodi (pubblici) Attributi + Metodi (dettagli implementativi privati) Slide 8

Concetto di Classe! Entitá /tipo che definisce le proprietà (attributi, metodi) che accomunano una famiglia di oggetti: Uno stesso insieme di operazioni Una stessa struttura esterna Uno stesso comportamento! Consente la creazione di istanze (oggetti)! Riunisce proprietà dei tipi di dato e dei moduli Slide 9 Classi e Istanze (Oggetti)! Un oggetto è un istanza di una classe (che è il suo tipo ed il modulo che ne regola l accesso). Istanziare un oggetto di una determinata classe significa: Dichiarare una variabile di quel tipo Allocare dinamicamente spazio per un oggetto di quel tipo Oggetti della stessa classe hanno operazioni uguali (metodi), ma specifici valori per gli attributi (dati diversi). Un metodo può accedere ai dati dell oggetto (parte privata del modulo).! Come si indica al metodo su quale oggetto agire? Istanza corrente di un oggetto (this o self). Slide 10

Chiamata a Metodo!"##$%&'()*+)%,$("%-$."*,&*#)(/0-$1&)%"*,"..$*223 res = obj.meth(par) Slide 11 Programma = Rete di Oggetti! Tutto è un oggetto Ogni componente concettuale del problema viene rappresentata da un oggetto. Un programma è costituito da un insieme di oggetti che si scambiano messaggi (ordini e richieste). Ogni oggetto è fatto di altri oggetti (o di tipi base).! I programmi saranno costituiti da una rete di oggetti connessi da relazioni client-server.! La rete che rappresenta l architettura del programma avrà spesso una struttura gerarchica. Slide 12

Classi - double x - double y - numofpoints Point + Point(double x, double y) + void move(double dx, double dy) + int howmany()! Una classe Point, espressa nella notazione standard UML (Unified Modeling Language). Dati privati. Funzioni pubbliche. Membri di istanza. Membri di classe. Slide 13 Oggetti apoint:point x:double = 1.3 y:double = -5.8! Un oggetto in notazione UML. Un oggetto è un istanza di una classe (che è il suo tipo ed il modulo che ne regola l accesso). Un oggetto ha struttura ed operazioni della sua classe, ma specifici valori per gli attributi. Slide 14

Ereditarietà! L ereditarietà è un meccanismo base della OOP, ma ha più aspetti diversi.! La prima distinzione da fare è tra ereditarietà di interfaccia ed ereditarietà di implementazione. Slide 15 Subtyping! Se le classi sono tipi, l ereditarietà è una relazione tra tipi, che chiamiamo subtyping.! Se il tipo C è un sotto-tipo del tipo B, cosa significa C is-a B? Tutto quello che posso fare ad un B lo posso fare anche ad un C.! Principio di Sostituibilità di Liskov. Slide 16

Inheritance! L ereditarietà è una relazione tra moduli, che chiamiamo inheritance.! L inheritance garantisce l Open/Closed Principle. Un sotto-modulo avrà accesso privilegiato al modulo base (accesso protected in C++ e Java). Un sotto-modulo potrà cambiare o estendere l implementazione del modulo base. Slide 17 Sintassi per l ereditarietà in Java!"#$%"&'%$("&%)'*+ Shape public abstract class Shape { // } class Square extends Shape { // } Circle Triangle Square Slide 18

Sintassi per l ereditarietà in Java,-.*$-$%#+/&'%$("&%)'*+ «interface» Shape public interface Shape { // } class Square implements Shape { // } Circle Triangle Square Slide 19 Sintassi per l ereditarietà in Java 0$1&2+/&'%$(-3*#&.*+ public abstract class Shape { //... } Shape «interface» Persistent public interface Persistent { //... } Circle Triangle Square class Square extends Shape implements Persistent { //... } Slide 20

Gerarchie di ereditarietà Object Component Generico Button Checkbox Choice List Scrollbar Canvas Container Label TextComponent Panel Applet ScrollPane Window Dialog Frame FileDialog TextArea TextField Specializzato Slide 21 Polimorfismo! Il polimorfismo è una caratteristica essenziale dei linguaggi orientati agli oggetti.! Permette di trattare in modo uniforme tipi simili, ma rispettandone le differenze.! Spesso il polimorfismo si usa per garantire il Single Choice Principle. Slide 22

Polimorfismo! Si individuano delle operazioni comuni per interfaccia, ma diverse per comportamento.! Una classe dichiara la funzione e delle sottoclassi ne forniscono diverse implementazioni. Shape + void draw(gc& actx) Circle Triangle Square + void draw(gc& actx) + void draw(gc& actx) + void draw(gc& actx) Slide 23 Polimorfismo! Per il Principio di Sostituibilità: Un riferimento di tipo Shape può puntare a oggetti di tipo Shape o di una sottoclasse.! Esiste un tipo statico ed un tipo dinamico: /+:%#45'5+-%# 5+:%#7,&#)+=,)+8,"5%># 7+-?+')'5%#'#-%8:+&,#5+8, /+:%#7+"'8+-%#######5+:%#7,&&@%AA,55%# :0"5'5%#'#)0" 5+8, Slide 24

Relazioni part of! Tra gli oggetti spesso sussiste una relazione part of (detta anche di composizione). Slide 25 Delega! Attraverso la relazione part of è possibile realizzare un importante comportamento: la delega (delegation).!! Una classe demanda ad un altra classe alcune parti del servizio che la prima deve rendere disponibile. Modularità nel codice: ogni classe si occupa di realizzare una specifica funzionalità, senza mescolare aspetti concettualmente diversi tra loro Nel disegnare l architettura di un programma dobbiamo decidere quale tipo di relazione utilizzare per connettere le nostre classi: is a (ereditarietà) o part of (delega) Slide 26

OOP! Le tecnologie OO permeano tutto il ciclo di sviluppo del software OOA - (Object Oriented Analysis) OOD - (Object Oriented Design) OOP - (Object Oriented Programming)! Le soluzioni proposte dalla OOP nascono da considerazioni generali di Ingegneria del Software. Le tecnologie orientate agli oggetti cercano di favorire la progettazione di software di qualità. Slide 27