Richiami su oggetti e OOP

Documenti analoghi
A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

Ingegneria del Software

Programmazione ad Oggetti

La programmazione ad oggetti: chiamate di metodi. Overloading. This

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Programmazione ad oggetti

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

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Progettazione orientata agli oggetti e UML

Object-Oriented Technology. Giuliano Armano 1

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

Progettazione orientata agli oggetti

Programmazione orientata agli oggetti

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

OOP: Object Oriented Programming

La programmazione ad oggetti (OOP)

Corso di Programmazione a oggetti

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

Principi di OOP con JAVA

Programmazione con Java

Object-Oriented Programming

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

La classe java.lang.object

Corso di Fondamenti di Informatica II

RICHIAMI DI PROGRAMMAZIONE A OGGETTI. Corso di Informatica Medica

Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2)

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

Object Oriented Programming

Informatica 3. Informatica 3. LEZIONE 8: Fondamenti di programmazione orientata agli oggetti (2) Lezione 8 - Modulo 1

Ereditarietà e Polimorfismo

Oggetti e classi. Cos è un oggetto

UML. Il linguaggio UML e ArgoUML. Ingegneria dei sistemi software 2009/ /09/2009

Analisi Orientata agli Oggetti

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Corso di Informatica

Paradigma a oggetti. Oggetti nel mondo reale. Oggetto Software. Oggetto Software. Classe Ogni oggetto appartiene ad una determinata

Esempio 2: Subtyping

3) Descrivere l architettura di un elaboratore tramite astrazione a livelli

Il paradigma OO e le Classi

Introduzione all OOP!

IL CONCETTO DI CLASSE

Proprietà delle Classi e degli Oggetti in Java

RETI DI CALCOLATORI Linguaggio Java: Ereditarietà

Introduzione alla programmazione Object Oriented. Luca Lista

Ereditarietà e polimorfismo

Esonero di Informatica I. Ingegneria Medica

Ereditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Linguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti.

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Dispensa di Informatica III.1

Fondamenti di Informatica T-1. Costruttori Ereditarietà

Introduzione agli oggetti

Programmazione orientata agli oggetti Ereditarietà

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

Programmazione Orientata agli Oggetti

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

Obiettivi. Comprendere i vantaggi offerti dal meccanismo dell ereditarietà Attivare processi di astrazione e specializzazione.

Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Basi di dati a oggetti

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

Proff. Fabio Ciao e Raffaele Bortone

18 - Classi parzialmente definite: Classi Astratte e Interfacce

Laboratorio di programmazione

Linguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti

LEZIONE 4 CLASS DIAGRAM E PACKAGE DIAGRAM

Laboratorio di Programmazione Lezione 4. Cristian Del Fabbro

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Principi della programmazione orientata agli oggetti. I principi della programmazione ad oggetti

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti

Java. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Il linguaggio Java è un linguaggio di programmazione ad alto livello

Java. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto

PROGRAMMAZIONE INFORMATICA SECONDO BIENNIO. Liceo Scientifico opzione Scienze Applicate

PRIMO MODULO. DURATA: 80 ore CONTENUTI

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Metodi Avanzati di Programmazione (II Anno) a.a. 2011/2012 Docente: Annalisa Appice Dipartimento di Informatica Università degli Studi Bari Aldo Moro

POO in JAVA e Robot EV3

OOP in Python L O R E N Z O D I S I L V E S T R O

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

ARCHITETTURA DI UN DBMS

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione a Oggetti. Ereditarieta

Programmazione orientata agli oggetti Oggetti Composti. Oggetti composti

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Esempi in Java di program.ne O-O

Algoritmi e Strutture Dati

Ingegneria del Software

Alcuni diagrammi. OCL (Object Constraint Language)

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

Programmazione con Java

oggetti: Cenni generali Programmazione ad Ingegneria Informatica e dell'informazione Michelangelo Diligenti

Riassunto. La programmazione OO. Oggi. Esempio

Esercitazione n 2. Obiettivi

Java. Java: compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto

Corso di Informatica

Laboratorio di Progettazione di Sistemi Software UML per Design Patterns e Refactoring

Linguaggi. - lezione 02 - Introduzione alla programmazione Object-Oriented. Corso di Laurea in Ingegneria delle Telecomunicazioni A.A.

SOMMARIO DIAGRAMMI DELLE CLASSI E DEGLI OGGETTI INGEGNERIA DEL SOFTWARE. Introduzione. Proprietà e Operazioni. Proprietà e Operazioni

Obiettivi. Unità B1. Le basi della programmazione a oggetti OOP. Gli oggetti del mondo reale

Transcript:

Richiami su oggetti e OOP Un oggetto (object) è una entità caratterizzata da una struttura dati alla quale si associa l insieme delle operazioni che è possibile compiere su di essa. Un oggetto può essere concreto (es: un file) o concettuale (es: una politica di scheduling) Una attività è dunque orientata agli oggetti se opera su di essi, come ad esempio: object-oriented analysis (OOA) object-oriented design (OOD) object-oriented programming (OOP) UniRoma2 - Ingegneria del Software 1 1

Oggetti: caratteristiche Classificazione (Classification) Identità (Identity) Ereditarietà (Inheritance) Polimorfismo (Polymorphism) UniRoma2 - Ingegneria del Software 1 2

Classificazione Oggetti con identica struttura dati (attributes) ed operazioni (operations) sono raggruppati in classi (classes) Ogni oggetto è una istanza di una classe Ogni oggetto contiene un riferimento implicito alla classe di appartenenza Ogni oggetto condivide struttura dati ed operazioni con le altre istanze della sua classe di appartenenza L istanziazione di un oggetto implica l assegnamento di valori agli attributi UniRoma2 - Ingegneria del Software 1 3

Identità Ogni oggetto ha una sua propria identità Due oggetti sono entità distinte anche se tutti i valori istanziati per gli attributi sono identici Gli oggetti sono identificabili attraverso un riferimento esplicito (handle) UniRoma2 - Ingegneria del Software 1 4

Notazione grafica Notazione per classe Esempio di classe Class1 +attribute1 +operation1() Impiegato +Nome : String +Data di nascita : Date +Calcola età() : int Object1 : Class1 attribute1 = value Imp1 : Impiegato Nome : String = Manuel Fantoni Data di nascita : Date = 1/11/1947 Notazione per oggetto (istanza) Esempio di oggetto UniRoma2 - Ingegneria del Software 1 5

Ereditarietà L ereditarietà è la condivisione di attributi ed operazioni tra classi in una qualche relazione gerarchica Una classe può essere raffinata attraverso un insieme di sottoclassi (subclasses), costituendo una superclasse (superclass) delle suddette sottoclassi Ogni sottoclasse eredita tutte le proprietà della relativa superclasse UniRoma2 - Ingegneria del Software 1 6

Ereditarietà: : esempio Archivio +File_name : String +open() +create() +close() +backup() +restore() Metodi ed attributi relativi ad entrambe le classi EREDITA DA ArchivioUtenti +ricerca_per_nome() +ricerca_per_codfiscale() Metodi ed attributi relativi alla sola classe ArchivioUtenti UniRoma2 - Ingegneria del Software 1 7

Polimorfismo Oggetti appartenenti a classi in una qualche relazione gerarchica possono condividere operazioni senza condividere forzatamente l implementazione relativa ad ognuna di esse Una operazione rappresenta una particolare manipolazione dei dati istanziati per un oggetto Ci si riferisce all implementazione di una operazione specifica per una particolare classe come ad un metodo (method) di tale classe Ad una operazione possono essere associati più metodi che la implementano UniRoma2 - Ingegneria del Software 1 8

Polimorfismo: esempio GUI +Xpos : int +Ypos : int +move() +show() +hide() EREDITA DA Stesse operazioni con differenti implementazioni Window +move() +show() +hide() UniRoma2 - Ingegneria del Software 1 9

Vantaggi nell'utilizzo degli oggetti Gli oggetti consentono di incrementare la qualità del software (in particolare riusabilità e manutenibilità), riducendo il TTM (Time To Market), grazie ai meccanismi di: Incapsulamento delle strutture dati (attributi) e delle operazioni (metodi) che le manipolano (encapsulation) Separazione tra la struttura dati propria di un oggetto e la struttura dati accessibile dall esterno (information hiding) Astrazione del comportamento delle operazioni a prescindere dalla loro implementazione (abstraction) Condivisione di strutture dati ed operazioni, attraverso ereditarietà e polimorfismo (sharing) UniRoma2 - Ingegneria del Software 1 10

Object Oriented Programming (OOP) Dichiarazione di una Classe Impiegato +nome : String +data_di_nascita : Date +calcola_età() : int Class Impiegato { string nome date data_di_nascita Impiegato() {... int calcola_età() {... ~Impiegato() {... Costruttore Distruttore UniRoma2 - Ingegneria del Software 1 11

OOP: istanziazione di un oggetto L istanziazione di un oggetto è resa possibile dall apposito operatore new, attraverso il quale: viene riservato spazio in memoria per l oggetto viene generato il riferimento per l oggetto Impiegato Nuovo_Impiegato; Nuovo_Impiegato = new Impiegato( Manuel Fantoni, 1/11/1947 ) ESEMPIO L operatore new richiama il costruttore della classe attraverso il quale è possibile inizializzare i valori degli attributi Impiegato(string Mio_Nome, date Mia_Data) { this.nome = Mio_Nome; this.data_di_nascita = Mia_Data; ESEMPIO UniRoma2 - Ingegneria del Software 1 12

OOP: distruzione di un oggetto La distruzione di un oggetto consiste nel: liberare la memoria allocata per l oggetto eliminare il riferimento dell oggetto La distruzione di un oggetto è ottenibile attraverso: operatore delete (es: C++) garbage collector (es: Java) Prima che un oggetto venga realmente disallocato viene richiamato, qualora esista, il metodo distruttore, attraverso il quale è possibile specificare un insieme di operazioni da compiersi prima della distruzione UniRoma2 - Ingegneria del Software 1 13

OOP: data encapsulation Class Posizione { Public Double Latitudine; Public Double Longitudine;... Public Double calcola_distanza(posizione p); Public Double calcola_direzione(posizione p);... UniRoma2 - Ingegneria del Software 1 14

OOP: information hiding Class Posizione { Private Double Latitudine; Private Double Longitudine;... Public Void set_latitudine(double lat); Public Void set_longitudine(double long); Public Double get_latitudine(); Public Double get_longitudine(); Public Double calcola_distanza(posizione p); Public Double calcola_direzione(posizione p);... UniRoma2 - Ingegneria del Software 1 15

Associazioni tra classi Nazione +nome diagramma delle classi (class diagram) ha capitale 1 1 Città +nome Class Nazione { String Nome; Città *Ha_Capitale; Esempio OOP : Nazione nome = Italia : Città nome = Roma Class Città { String Nazione Nome; *E _Capitale_di diagramma degli oggetti (object diagram) UniRoma2 - Ingegneria del Software 1 16

Ulteriori tipi di associazione Studente +nome Directory frequenta * * contiene Corso +nome +docente File Esempio OOP Class Studente { String Nome; Corso *Segue[n]; Workstation 1 0..* ha -Console 1 0..1 Terminale Class Corso { String Nome; String Docente; Studente *Frequentano[m] UniRoma2 - Ingegneria del Software 1 17

Associazione ternaria Progetto Progetto * Sviluppatore * * Sviluppatore Linguaggio Linguaggio * Class Progetto { Sviluppatore **Assegnato; Linguaggio **Sviluppato; Class Sviluppatore { Linguaggio **Sviluppa; Progetto **Partecipa; Class Linguaggio { Progetto **Sviluppa; Sviluppatore **Conosciuto; Esempio OOP * * UniRoma2 - Ingegneria del Software 1 18

Association classes Assignment start_date role Contractor * * Project Associazioni qualificate Directory file_name contiene 1 0..1 File UniRoma2 - Ingegneria del Software 1 19

Archivio +filename : String +open() +create() +close() Ereditarietà Esempio OOP Class Archivio {... Class ArchivioUtenti : public Archivio {... ArchivioUtenti +ricerca_per_nome() +ricerca_per_cf() ArchivioLibri +ricerca_per_titolo() +ricerca_per_autore() UniRoma2 - Ingegneria del Software 1 20

Aggregazione 0..1 Finestra è contenuta contiene 0..* Menu PulsanteOpzione ListBox Class Menu {... Class PulsanteOpzione {... Class ListBox {... Esempio OOP Class Finestra { Menu PulsanteOpzione ListBox Finestra Finestra... Menu_in_Finestra; PO_in_Finestra; LB_in_Finestra; **Contiene; *E _Contenuta; UniRoma2 - Ingegneria del Software 1 21