Object Oriented Programming



Похожие документы
!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Automazione Industriale 4- Ingegneria del Software

Programmazione a Oggetti Modulo B

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

Concetto di Funzione e Procedura METODI in Java

Programmi e Oggetti Software

Strumenti di modellazione. Gabriella Trucco

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

Progettazione della componente applicativa

Fasi di creazione di un programma

Java: Compilatore e Interprete

Esercitazione n 4. Obiettivi

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

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Progettaz. e sviluppo Data Base

Oggetti Lezione 3. aspetti generali e definizione di classi I

Object Oriented Software Design

Esercizio 1: trading on-line

Modellazione dei dati in UML

Realizzazione di una classe con un associazione

Automazione Industriale (scheduling+mms) scheduling+mms.

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

Programmazione a Oggetti Lezione 10. Ereditarieta

Esercizio data base "Biblioteca"

Modulo 4: Ereditarietà, interfacce e clonazione

Corso di Informatica

Stefania Marrara - Esercitazioni di Tecnologie dei Sistemi Informativi. Integrazione di dati di sorgenti diverse

Soluzione dell esercizio del 2 Febbraio 2004

3. Introduzione all'internetworking

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

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

La specifica del problema

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Generazione Automatica di Asserzioni da Modelli di Specifica

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Raccolta dei Requisiti con i Casi D'uso. Corso di Ingegneria del Software Anno Accademico 2012/13

Capitolo 13. Interrogare una base di dati

Programmazione in Java Parte I: Fondamenti

Codifica: dal diagramma a blocchi al linguaggio C++

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

Architettura MVC-2: i JavaBeans

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

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando)

LINGUAGGI DI PROGRAMMAZIONE

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

Modellazione di sistema

Dispensa di Informatica I.1

Linguaggi e Paradigmi di Programmazione

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

Lezione 8. La macchina universale

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Introduzione alla Programmazione ad Oggetti in C++

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

Progettazione : Design Pattern Creazionali

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

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Gestione della memoria centrale

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Gli attributi di STUDENTE saranno: Matricola (chiave primaria), Cognome, Nome.

Sistema operativo: Gestione della memoria

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise


Breed Novità della release. Sommario

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:

Lifephone. Introduzione. Database. Sito

Struttura di un programma Java

Guida all uso di Java Diagrammi ER

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Concetti di base di ingegneria del software

GESTIONE DEI PROCESSI

UML Unified Modeling Language

Database. Si ringrazia Marco Bertini per le slides

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Corrispondenze e funzioni

Gestione Risorse Umane Web

Guida Compilazione Piani di Studio on-line

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Gestione del workflow

Access. P a r t e p r i m a

Come creare il test di Conconi tramite l applicazione Training Center

Linguaggi di programmazione

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

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

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Abstract Data Type (ADT)

CamiGas-Digigas: Manuale Referente

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

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

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

UML Component and Deployment diagram

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Codifiche a lunghezza variabile

Introduzione alla teoria dei database relazionali. Come progettare un database

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

Introduzione alla programmazione in C

Registratori di Cassa

Транскрипт:

OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in un'unica entità (la classe) sia le strutture dati che le procedure che operano su di esse Si creano "oggetti" software dotati di proprietà (dati) e metodi (procedure) che operano sui dati dell'oggetto stesso. 1

OOD (Object Oriented Design) La progettazione orientata agli oggetti ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale. Si avvale del concetto di classe: gli oggetti di una determinata classe hanno le stesse caratteristiche Questa parte di mondo che viene ricostruita in modo virtuale è detta dominio applicativo. Il livello di astrazione I linguaggi gg di programmazione si sono evoluti in modo che i codici sorgenti potessero astrarsi sempre più dal modo in cui gli stessi, una volta compilati, sarebbero stati eseguiti. Nella OOP non ci si vuole più porre i problemi dal punto di vista del calcolatore, ma si vogliono risolvere facendo interagire oggetti del dominio applicativo come fossero oggetti del mondo reale. L obiettivo è di dare uno strumento t al programmatore, per formalizzare soluzioni ai propri problemi, pensando come una persona e senza doversi sforzare a pensare come una macchina. 2

Programmazione imperativa vs Programmazione ad oggetti Linguaggi procedurali Nei linguaggi procedurali (C, Fortran, Pascal) la programmazione è orientata all azione. L unità di programmazione è la funzione Metodologia: scomposizione funzionale Linguaggi ad oggetti Nel linguaggi ad oggetti (C++, Java) la programmazione è orientata all oggetto L unità di programmazione è la classe Metodologia: OOD Il processo di astrazione: le classi Per popolare il dominio applicativo utilizzato dall applicazione è necessario creare gli oggetti, e per fare questo è necessario definire le classi. Una classe è lo strumento con cui si identifica e si crea un oggetto. 3

Classi e tipi di dato Una classe è a tutti gli effetti un tipo di dato (come gli interi e le stringhe e ogni altro tipo già definito) Nella programmazione orientata agli oggetti, è quindi possibile sia utilizzare tipi di dato esistenti, sia definirne di nuovi tramite le classi UML (Unified Modeling Language) UML ("linguaggio gg di modellazione unificato") è un linguaggio gg di modellazione e specifica basato sul paradigma object-oriented. Il nucleo del linguaggio fu definito nel 1996 da Grady Booch, Jim Rumbaugh e Ivar Jacobson (detti "i tre amigos") sotto l'egida dello OMG, che tuttora gestisce lo standard di UML. Il linguaggio nacque con l'intento di unificare approcci precedenti (dovuti ai tre padri di UML e altri), raccogliendo le best practices nel settore e definendo così uno standard industriale unificato. UML svolge un'importantissima funzione di lingua franca nella comunità della progettazione e programmazione a oggetti. Gran parte della letteratura di settore usa UML per descrivere soluzioni analitiche e progettuali in modo sintetico e comprensibile a un vasto pubblico. http://www.uml.org/ Wikipedia 4

UML - Diagramma delle classi La prima sezione contiene il nome della classe La seconda sezione definisce i suoi attributi (in C++ variabili membro) Nella terza sezione sono definiti i metodi, le operazioni che si possono compiere sull oggetto di quel tipo. (in C++ funzioni membro) Esempio C++ #include <iostream> using namespace std; class Tempo { public: int ore; int minuti; void visualizza() { cout<<ore<<":"<<minuti<<endl; } private: }; int main() { Tempo t; t.ore=9; t.minuti=30; t.visualizza(); } 5

Gli oggetti Gli oggetti sono le entità di un programma che interagiscono tra loro per raggiungere un obiettivo Gli oggetti vengono creati in fase di esecuzione ed ognuno di essi fa parte di una categoria (di una classe) Ogni classe può creare più oggetti, ognuno dei quali pur essendo dello stesso tipo è distinto dagli altri Un oggetto è l istanza di una classe Un esempio di classe Se vogliamo catalogare i cd musicali in nostro possesso, abbiamo bisogno di implementare un programma nel cui dominio applicativo è presente la classe CD I metodi della classe CD servono per impostare e recuperare i valori degli attributi 6

Diagramma degli oggetti I diagrammi che rappresentano gli oggetti (Object Diagram in UML) mettono in luce i valori che assumono gli attributi Stato di un oggetto L insieme Linsieme dei valori degli attributi di un oggetto è chiamato stato dell oggetto e generalmente può variare in funzione del tempo 7

Creazione di un oggetto Per creare un oggetto si effettua un istanziazione di una classe. In questa fase viene riservato uno spazio di memoria per conservare i valori degli attributi dell oggetto che si sta creando (per mantenere memorizzato da qualche parte lo stato dell oggetto) Istanziare un oggetto in C++ A seconda del linguaggio utilizzato si impiegano diversi costrutti di programmazione per creare un oggetto 8

Variabili membro Le variabili membro sono quelle posseduti da un oggetto, sono chiamate anche attributi dell oggetto. L attributo di un oggetto è una variabile che ne descrive una caratteristica o proprietà Le azioni degli oggetti Una funzione membro (metodo) è un azione che l oggetto può eseguire. La dichiarazione di una funzione è composta da: Modificatore Nome del metodo Tipo di dato da ritornare Tipo e nome dei parametri di ingresso Tutto questo è detto firma del metodo. 9

Funzioni membro Una funzione membro, per essere utilizzata, ha bisogno della creazione di un oggetto della classe a cui appartiene su cui essere invocata. Esempio di firma public int studia(string testo) public è il modificatore int è il tipo del metodo studia è il nome del metodo string testo è il tipo e nome dei parametri 10

Un esempio: attributi Si vuole realizzare una classe che permetta di gestire e risolvere equazioni di secondo grado In una equazione individuiamo tre attributi: a, b, c che rappresentano i coefficienti di x 2, di x ed il termine noto L equazione 3x 2-2x+1=0 avrà come attributi i valori 3, -2 e 1 Un esempio: metodi Definiamo un insieme di metodi che ci permetta di: Modificare i valori dei coefficienti Ottenere i valori dei coefficienti Conoscere il tipo di equazione Ottenere la prima soluzione Ottenere la seconda soluzione 11

Diagramma UML della classe Esercizio Implementare la classe Equazione Istanziare due equazioni: 5x 2-3x+2=0 2x 2-4=0 12

Metodo costruttore Il costruttore è un metodo particolare che viene invocato alla creazione dell oggetto e che contiene tutte le istruzioni da eseguire per la sua inizializzazione. Modificatori public: consente a qualunque q classe o oggetto di qualsiasi tipo di avere accesso all attributo o al metodo a cui è applicato. protected: consente l accesso solo alle classi e agli oggetti il cui tipo è una sottoclasse di quella in cui è utilizzato. Le sottoclassi saranno trattate in successive lezioni. private: consente l accesso solo agli oggetti della classe stessa in cui è utilizzato. t 13

Incapsulamento L incapsulamento p (information hiding) è un concetto fondamentale dell ingegneria del software. Questo principio prevede che si possa accedere alle informazioni di un oggetto unicamente attraverso i suoi metodi. La tecnica di programmazione che consente di applicare l incapsulamento si avvale dei modificatori di visibilità per nascondere gli attributi di un oggetto al mondo esterno. Mettere in atto questa tecnica significa non avere mai attributi di un oggetto di tipo public, salvo eccezioni particolari per costanti o attributi di classe da gestire in base al caso specifico. Accesso agli attributi Per accedere dall esterno agli attributi, si inseriscono metodi public che possono essere chiamati da chiunque per impostare o richiedere il valore dell attributo. I metodi hanno di solito un nome particolare: set (seguito dal nome dell attributo) per modificarne (settare) il valore get (seguito dal nome dell attributo) per recuperare (get) il valore 14

Incapsulamento: perché? Potrebbe sembrare che non vi sia alcuna differenza rispetto ad accedere direttamente agli attributi Sembra che questa tecnica serva solo a rendere più complessa la loro gestione Le motivazioni sono: un maggiore controllo sulle operazioni effettuate sugli attributi, limitando l utilizzo improprio che se ne può fare e guadagnando così in sicurezza. La possibilità di nascondere il modo in cui i dati sono memorizzati negli attributi Interazione tra gli oggetti Per comunicare, gli oggetti possono utilizzare i metodi, scambiandosi messaggi l uno con l altro. Quando un oggetto invoca un metodo di un altro, quest ultimo reagisce eseguendo il metodo opportuno. L invocazione dei metodi può richiedere parametri di input di qualsiasi tipo, compresi quindi oggetti del nostro dominio applicativo. Un oggetto potrà quindi essere in grado di passarne un altro attraverso un metodo, o addirittura potrà passare se stesso. Un messaggio ha la seguente sintassi: <NomeOggetto>.<nomeMetodo>(<paramteri>) 15