Object Oriented Programming

Documenti analoghi
è possibile interagire con ciascun distributore per inserire monete, scegliere la bibita, prendere la bibita e prendere il resto.

Introduzione all OOP!

Programmazione con Java

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

Classi ed Oggetti. Fondamenti di Informatica A-K

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

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

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Informatica 3. LEZIONE 0: Panoramica dei linguaggi di programmazione. Politecnico di Milano - Prof. Sara Comai 1

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 1.0

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Programmazione ad oggetti

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Java: Definire Classi e Creare Oggetti

Corso di Informatica

Modello procedurale versus modello O-O

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Introduzione agli oggetti

Unità di apprendimento 6. Dal problema al programma

POO in JAVA e Robot EV3

La programmazione: tradizionale vs Orientata agli Oggetti (OOP)

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

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

Dichiarazione di una classe. Dichiarazione ereditarietà

Programmazione I - corso B a.a prof. Viviana Bono

Linguaggi di programmazione

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

Introduzione alla Programmazione. Giselda De Vita

Programmazione: Sommario

Progettazione Object-Oriented

Strutture come parametri di funzioni

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

MODULO 07. La soluzione dei problemi mediante gli algoritmi

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi

UML UNIFIED MODELING LANGUAGE

Le basi del linguaggio Java

Fondamenti di informatica T-1 (A K) Esercitazione 7: metodi, classi, oggetti

Ereditarietà: concetti di base

Il paradigma Object Oriented. Iolanda Salinari

Programmazione M.A. Alberti. Comunicazione digitale AA 2009/ Classi in Java 1. Le classi in Java. Oggetti. Classi. Classi. Visibilità dei dati

Informatica Ereditarietà Java. Ereditarietà

Programmi e Oggetti Software

ECDL MODULO 1. Sezione 2 Software

Programmi e Oggetti Software

PRINCIPI DELLA OOP. Ereditarietà e polimorfismo

PROBLEMI ALGORITMI E PROGRAMMAZIONE

PROBLEMI E ALGORITMI

Introduzione al corso. Obiettivo del corso

Gli oggetti. Ogni oggetto ha un interfaccia e ogni oggetto ha un tipo. Incapsulamento. Oggetti. Contatore. Invio di Messaggi

Ingegneria del Software

Programmazione Orientata agli Oggetti in Linguaggio Java

Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.

Introduzione alla programmazione. Walter Didimo

A. Ferrari Object Oriented Design

Scelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if

Concetto di Funzione e Procedura METODI in Java

Paradigmi della PO. Incapsulamento. Ereditarietà. Polimorfismo. Software per TLC - AA 2008/2009 1

Corso di Programmazione a oggetti

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

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

RICHIAMI DI PROGRAMMAZIONE A OGGETTI. Corso di Informatica Medica

Corso sul linguaggio Java

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

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

Linguaggi di programmazione e astrazione

Cos è. In un linguaggio di programmazione si possono distinguere:

Capitolo 6. Linguaggi di Programmazione. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

Introduzione alla programmazione

Alcune info sulle prossime lezioni

SOFTWARE. Interattività

Fondamenti di Informatica T-1. Classi & Oggetti

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

Il linguaggio di programmazione Python

SOFTWARE. Interattività

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

Parte prima: le basi della programmazione Java

Concetti introduttivi

Definizione di classi

Informatica Generale Andrea Corradini I linguaggi di programmazione

Object-Oriented Programming

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

La programmazione ad oggetti (OOP)

Programmazione ad oggetti (cenni)

Linguaggi, Traduttori e le Basi della Programmazione

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Programmazione ad oggetti

INFORMATICA OOP Relazioni tra classi Roberta Gerboni

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

SOFTWARE. Interattività

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

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Introduzione alle Classi e agli Oggetti. Prof. Francesco Accarino IIS Altiero Spinelli Via leopardi 132 Sesto San Giovanni

Transcript:

Object Oriented Programming Paradigmi di programmazione Linguaggi procedurali Linguaggi a oggetti Linguaggio macchina VisualBasic Delphi VB.NET Fortran Cobol Basic Pascal C C++ Java C# 1940 1950 1960 1970 1980 1990 2000 2010 linguaggi procedurali (imperativi): il programmatore impartisce all elaboratore una serie di istruzioni da eseguire, specificando come si deve operare per risolvere il problema Fortran (FORmula TRANslation) per applicazioni scientifiche 1957 autore John Backus Cobol (Common Business Oriented Language) per applicazioni gestionali - 1961 Basic (Beginners All purpose Symbolic Instruction Code) adatto a principianti, privilegia la facilità d uso - 1964 Pascal introduce la programmazione strutturata, utile per scopi didattici creato da Niklaus Wirth - 1970 C linguaggio efficiente utilizzato anche per Linguaggi ad oggetti C++ introduce la nell ambiente dei programmatore in linguaggio C (programmazione orientata agli oggetti) creato da Bjarne Stroustrup 1983 Java rende migliore ed allo stesso tempo più semplice la programmazione ad oggetti, linguaggio multipiattaforma, Sun Microsystems, 1996 C# la programmazione di sistemi operativi, creato da Dennis Ritchie - 1972 1

(Object Oriented Programming) permette al programmatore di lavorare pensando al problema, piuttosto che al computer su cui verrà eseguito il codice. Ci si basa quindi sull osservazione del mondo reale, popolato di oggetti di vario tipo che interagiscono fra di loro scambiandosi messaggi: lo stesso schema viene riproposto a livello di paradigma di programmazione. A B Distributore_bibite numero_bottigliette_acqua numero_lattine-aranciata numero_lattine-the C Inserisci-monete Scegli_bibita Prendi_bibita Prendi_resto Il progetto è formato dal modello dei dati e dall algoritmo risolutivo Il progetto si presenta come un insieme di classi di oggetti che incapsulano al loro interno sia i modelli dei dati che le operazioni (metodi). 2

Classe di oggetti Nella programmazione OO, una applicazione è composta da un insieme di CLASSI che rappresentano OGGETTI del mondo reale che interagiscono tra di loro. Una classe è una astrazione (idea astratta o modello) che definisce un insieme di OGGETTI di uno stesso tipo, ovvero una famiglia di oggetti aventi caratteristiche e comportamenti simili la classe è costituita da attributi e metodi gli attributi indicano le caratteristiche o proprietà che distinguono ogni esemplare della classe I metodi sono le funzionalità dell oggetto, cioè i comandi che possono essere impartiti ad ogni esemplare della classe La classe è la descrizione dell oggetto (il progetto dell oggetto, il blueprint) Nella quindi si descrivono gli oggetti (dati + comportamenti), cioè si creano nuovi tipi di dato, poi si istanziano gli oggetti stessi. 3

Classi, attributi e metodi Classe: Automobile (entità astratta, modello generico di automobile); ogni automobile è caratterizzata da un colore, da una marca, da un modello, da una cilindrata,...: sono gli attributi della classe ogni automobile può avviarsi, fermarsi, sterzare, accelerare, etc... : sono i metodi della classe Oggetto o istanza la mia auto, "la tua auto", "l'auto del presidente", sono esemplari della classe Automobile presentano tutte le medesime proprietà e i medesimi comportamenti: hanno un colore, un modello, una marca, una cilindrata, si avviano, si fermano, sterzano, accelerano, ecc... si dice che la classe è il modello (blueprint), lo stampino degli oggetti. un'istanza (o oggetto) di una classe corrisponde ad un esemplare reale, fabbricato da quel modello (da quello stampino) ogni istanza della classe ha caratteristiche e comportamenti comuni, ma si differenzia per i valori assunti dalle sue proprietà. Tutte le automobili hanno una marca, un modello, un colore, una cilindrata e possono avviarsi, frenare, sterzare, ecc.., ma la cilindrata, il colore, la marca e il modello variano da oggetto ad oggetto In ogni istanza le proprietà assumono valori. 4

Metodi, attributi e stato Classe Quadrato un quadrato è caratterizzato da un lato; del quadrato possiamo calcolare l'area e il perimetro Proprietà / Attributi lato Comportamento / Metodi calcolaarea calcolaperimetro Istanza / Oggetto alla classe Quadrato appartengono oggetti concreti che si differenziano per la misura del lato. 5

- Attività di lettura Considera il seguente testo in linguaggio naturale Red e Tobysono animali. Entrambi mangiano quando hanno fame, si muovono e fanno versi. Red ha il mantello rosso e ha 3 anni ; Tobyha il mantello grigio e ha 4 anni. Individua classi, oggetti, metodi, attributi e stato : disegna il diagramma UML della classe 6

Tutto ok con la teoria ma: quali sono le fasi di lavoro ed i ruoli di chi opera? ruolo Input output progettista Operaio barista Cliente del bar Progetto del distributore Distributori usciti dalla fabbrica Distributori sistemati in un locale e riempiti con tutte le bibite Progetto del distributore Un certo numero di distributori, tutti dello stesso tipo (si possono distinguere fra di loro ad esempio dal numero di matricola che li identifica) Distributori sistemati in un locale e riempiti con tutte le bibite bibite fasi di sviluppo del software ruolo Input output progettista Progetto dell oggetto software (diagramma UML della classe) programmatori di classi diagramma UML della Codice con la definizione classe della classe programmatori client Codice con la software applicativo (utilizzano il software definizione della (applicazione software sviluppato dai programmatori classe che utilizza le classi che hanno implementato le istanziando e classi) manipolando gli oggetti ) Utente finale (utilizzano il software applicativo Risultati forniti dalla software sviluppato dai applicazione programmatori che hanno implementato l applicazione) 7

-Creazione di istanze e costruttori La creazione di un oggetto (o esemplare) a partire da una classe è chiamata istanziazione o creazione di un'istanza della classe. Gli oggetti sono creati per mezzo di metodi speciali chiamati costruttori. Il costruttore ha lo stesso nome della classe e non ritorna niente. Possono esserci più costruttori per una classe a patto che prendano parametri diversi Se non viene dichiarato nessun costruttore ne viene creato automaticamente uno che inizializza tutti i campi con valori di default e non riceve argomenti. Si chiama costruttore di default L'oggetto può essere creato all'interno di un'altra classe oppure del main. - Operatore new In Java si distingue tra la dichiarazione di una istanza e la sua vera e propria creazione, che avviene per mezzo di un operatore che si chiama new che alloca in memoria un nuovo oggetto del tipo richiesto Per esempio se in Java devo creare un'istanza della classe Automobile scriverò: Automobile miaauto; // dichiarazione: miaauto identifica un esemplare di Automobile miaauto=new Automobile(); // creazione: con l'operatore new creo un nuovo esemplare di automobile e lo associo a miaauto miaauto è il riferimento (puntatore o reference) all'oggetto di classe Automobile istanziato. 8

- esempio classe Auto class Auto { // nome classe String marca; //definizione attributi String modello; int cil; int carburante; Auto(){ // definizione costruttore carburante=0; } void avviati(){ //definizione metodo avviati (non ha parametri né restituzione) System.out.println("mi sono avviata"); } void rifornimento(int carb) { // metodo rifornimento (con parametro quantità di carburante) carburante=carburante+carb; } } - Creare istanze La seguente classe TestAuto crea un istanza di auto e testa alcuni metodi public class TestAuto { public static void main(string args[]){ Auto miaauto; // dichiarazione riferimento ad Auto miaauto=new Auto(); //creazione istanza miaauto.marca="fiat"; // accede agli attributi utilizzando il riferimento miaauto.modello ="Punto"; miaauto.cil=1100; miaauto.rifornimento(40); //chiama il metodo rifornimento System.out.println("marca "+miaauto.marca); //accede agli attributi per mostrare il valore System.out.println("modello= "+miaauto.modello); System.out.println("cilindrata= "+miaauto.cil); miaauto.avviati(); //chiama il metodo avviati() } } 9

- Accedere agli attributi Nell esempio appena visto chi scrive la classe TestAuto che utilizza la classe Auto, modifica il valore degli attributi scrivendo: miaauto.marca="fiat"; miaauto.modello ="Punto"; miaauto.cil=1100; Questo non è un buon modo di programmare: è come se il programmatore aprisse l oggetto auto e vi mettesse le mani dentro Nella realtà chi utilizza un oggetto, non lo apre e può non conoscerne i dettagli implementativi - Incapsulamento L'incapsulamento è la proprietà per cui un oggetto contiene ("incapsula") al suo interno gli attributi (dati) e i metodi (procedure) che accedono ai dati stessi. i dati (attributi) di un oggetto possono essere manipolati solo attivando i suoi metodi un metodo è attivato dall oggetto a fronte di una specifica richiesta di servizio (messaggio) solo l interfaccia pubblica dell oggetto, costituita dai servizi che l oggetto può offrire, è nota all esterno si comunica con un oggetto inviandogli un messaggio in cui si specifica che cosa si vuole da esso 10

: incapsulamento Uno dei principi base della programmazione ad oggetti è l incapsulamento: Encapsulation refers to the bundling of data with the methods that operate on that data. Nella si descrivono gli oggetti (caratteristiche + comportamenti), cioè si creano nuovi tipi di dato, poi si istanziano gli oggetti (cioè si creano oggetti di quel tipo). Un oggetto software è definito da: Identificatore ogni oggetto può essere distinto da un altro; Stato caratteristiche dell oggetto, descritte dagli attributi dell oggetto che assumono valori che si riferiscono all oggetto stesso e che possono variare con il tempo; Comportamento è possibile utilizzare l oggetto, conoscerne e modificarne lo stato, attraverso i metodi comuni a tutti gli oggetti di quel tipo. 11