Tecnologie dell'informazione e della Comunicazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Tecnologie dell'informazione e della Comunicazione"

Transcript

1 Tecnologie dell'informazione e della Comunicazione Capitolo 11 Classi e Oggetti Prof. Mauro Gaspari: gaspari@cs.unibo.it

2 Definire nuovi tipi? Abbiamo visto diversi tipi di dato strutturati: stringhe liste tuple dizionari È possibile definirne dei nuovi, che magari siano specifici per particolari applicazioni?

3 Tipi di dato Astratti Che caratteristiche hanno i tipi di dato visti fino ad ora: contengono informazioni (scalari/strutturate) ci sono un insieme di operazioni predefinite che sono le uniche che accedono all'implementazione del dato. l'utente non è a conoscenza di come sono realizzate internamente queste operazioni (sono incapsulate). Le operazioni si possono utilizzare con una certa tranquillità, senza conoscere i dettagli di come sono realizzate (information hiding). Un tipo di dato che ha queste proprietà si chiama tipo di dato astratto (=abstract data type).

4 Tipi di dato definiti dall'utente Buoni tipi di dato definiti dall'utente dovrebbero avere le caratteristiche dei tipi di dato astratti. Ovvero: implementazione nascosta. un insieme di procedure e funzioni che accedono al dato che sono le uniche che accedono al dato.

5 Un esempio: il punto Concetto di punto in matematica. In uno spazio bidimensionale un punto è rappresentato da due numeri, le coordinate, che vengono trattate insieme come un singolo oggetto. Esempio di notazione matematica: (0,0) origine (x,y) rappresenta un punto con coordinate x e y.

6 Come realizzare un punto in Python? Si potrebbe rappresentare con due numeri floating-point. Sarebbe però opportuno raggrupparli in un singolo oggetto. lista tupla Una soluzione può essere meglio dell'altra a seconda dell'applicazione. Ad esempio se si vuole trovare dei punti che possono essere modificati è meglio utilizzare le liste.

7 Esempio Realizzazione di un punto come lista. Definizione della funzione muovi, che sposta il punto. >>> punto = [0,0] >>> def muovi(p,x,y)... p[0] = x... p[1] = y... >>> muovi(punto,4,5) >>> punto [4,5]

8 Osservazioni Una volta scelta la rappresentazione si realizzano le operazioni che operano sui punti, ad esempio la funzione muovi. Però il punto così definito non è un tipo di dato astratto, ovvero non: Posso usare altre funzioni sul punto, ad esempio len. È facile definire altre operazioni che accedono alla struttura interna del punto. Posso addirittura modificare la struttura senza rendermene conto. Il tipo (type) non risulta essere punto ma lista.

9 Esempio >>> len(punto) 2 >>> type(punto) <type 'list'> >>> punto[1:1] = [5,6] >>> punto [4, 5, 6, 5] >>>

10 Le classi Python, come altri linguaggi di programmazione, fornisce dei meccanismi ad alto livello per creare tipi di dato definiti dall'utente che siano più vicini ai tipi predefiniti. Questi tipi si definiscono con il concetto di classe (= class). class Point: def init (self, x, y): self.x = x self.y = y

11 Le classi Queste definizioni possono apparire in qualsiasi punto del programma ma di solito è opportuno inserirle all'inizio dopo i comandi import. Le regole sintattiche per definire le classi sono simili a quelle degli altri tipi composti. La definizione crea una nuova classe. Quando si crea una classe Point si crea anche un nuovo tipo chiamato Point. I membri di questa classe sono detti istanze del tipo creato oppure oggetti.

12 La funzione init : un metodo. La funzione init definisce come inizializzare i membri della classe, si chiama anche metodo (= method) perché può essere invocata solo sugli elementi della classe. la variabile self si riferisce all'oggetto che sto creando, per convenzione deve essere il primo argomento del metodo; la classe Point a due attributi x e y; le notazioni self.x e self.y indica gli attributi dell'oggetto (la notazione è simile a quella dei moduli).

13 Istanze o Oggetti Per creare le istanze della classe Point si usa una funzione costruttore denominata Point, che invoca in modo trasparente la funzione init blank = Point(0,0) Alla variabile blank viene assegnato un riferimento al nuovo oggetto.

14 Osservazioni La creazione di un oggetto si dice istanziazione. La funzione init potrebbe non esserci. In tal caso si creano oggetti senza attributi. Questi potrebbero essere aggiunti in seguito. Per rendere più chiara la struttura dei programmi che contengono nuovi tipi. Si consigli di utilizzare sempre la funzione init e di inserire tutti gli attributi di una classe in questa funzione.

15 Esempio >>> blank.x 0 >>> blank.y 0 >>> blank < main.point instance at 0xb7f75c2c> >>> >>> type(blank) <type 'instance'> >>>

16 Esempio Posso modificare gli attributi di un oggetto: >>> blank.x = 3.0 >>> blank.y = 4.0

17 Esempio La notazione con il punto si usa anche per accedere agli attributi. >>> print blank.y 4.0 >>> x = blank.x >>> print x 3.0 NB. non c'è conflitto tra la x variabile e quella nell'oggetto che è un attributo.

18 Stampare un oggetto >>> blank < main.point instance at 0xb7f75c2c> # si stampa il riferimento in esadecimale def printpoint(p): print '(' + str(p.x) + ', ' + str(p.y) + ')' NB. un oggetto può essere passato come parametro. Come nel caso delle liste si passa il riferimento.

19 Valori di default Alle funzioni è possibile dare valori di default. Lo stesso si può fare con i metodi. def stampasempre(x=0):... print x... >>> stampasempre(1) 1 >>> stampasempre() 0

20 Esempi def find(str, ch): index = 0 while index < len(str): if str[index] == ch: return index index = index + 1 return 1 def find(str, ch, start=0): index = start while index < len(str): if str[index] == ch: return index index = index + 1 return 1

21 Una definizione migliore di Punto class Point: def init (self, x=0, y=0): self.x = x self.y = y def str (self): return '(' + str(self.x) + ', ' + str(self.y) + ')' def muovi(self,a,b): self.x = a self.y = b

22 Esempio >>> p = Point(3, 4) >>> str(p) '(3, 4)' NB: str overrides il comportamento standard di str >>> p = Point(3, 4) >>> print p (3, 4) La print su un oggetto chiama str.

23 Uno script con la classe Point class Point: def init (self, x=0, y=0): self.x = x self.y = y def str (self): return '(' + str(self.x) + ', ' + str(self.y) + ')' def muovi(self,a,b): self.x = a self.y = b b = Point(4,5) b.muovi(6,7) print(b) NB. Gli oggetti sono mutabili!

24 Quando due oggetti sono uguali? Si è già discusso in precedenza del concetto di uguaglianza tra elementi in Python. In genere il concetto di uguaglianza può essere definito in modi diversi. Ad esempio Abbiamo la stessa macchina non significa di solito che la macchina in questione sia lo stesso oggetto, ma piuttosto che la marca e il modello sono gli stessi. Se si dice invece Abbiamo la stessa Mamma allora si tratta ella stessa persona.

25 Quindi? L'idea di uguaglianza dipende dal contesto. Anche con gli oggetti nei linguaggi di programmazione c'è lo stesso tipo di ambiguità. Per esempio se si dice che due punti sono uguali: Contengono le stesse coordinate? Sono lo stesso oggetto (stesso id).

26 Esempio >>> p1 = Point(3,4) >>> p2 = Point(3,4) >>> p1 == p2 0 >>> p2 = p1 >>> p1 == p2 1

27 Tipi di equivalenza L'equivalenza su gli oggetti si dice anche equivalenza superficiale (= shallow equality) perchè confronta solo i riferimenti agli oggetti e non il contenuto. L'equivalenza che si basa invece sul contenuto degli oggetti si definisce equivalenza profonda (=deep equality).

28 Esempio Definizione di una deep equality sui punti. samepoint(p1, p2) : return (p1.x == p2.x) and (p1.y == p2.y)

29 Programmazione basata su oggetti La programmazione vista fino ad ora si chiama basata su oggetti (=object based). Un programma è costituito da un insieme di definizioni di classi e di operazioni sugli oggetti di queste classi. Cosa vuol dire allora orientato agli oggetti (=object oriented)?

30 Un oggetto rettangolo class Rectangle: def init (self,width,height,x,y): self.corner = Point(x,y) self.width = width self.height = height box = Rectangle(100.0,200.0,0.0,0.0) NB. in questo modo abbiamo incluso un oggetto dentro un altro.

31 Oggetti composti Gli oggetti composti si accedono concatenando diversi operatori punto: >>> print box.corner.x

32 Esempio istanze come valori restituiti def findcenter(box): p = Point() p.x = box.corner.x + box.width/2.0 p.y = box.corner.y + box.height/2.0 return p >>> center = findcenter(box) >>> printpoint(center) (50.0, 100.0)

33 Copiare oggetti Anche gli oggetti come le liste hanno il problema dell'aliasing. Spesso conviene copiare oggetti per evitare il rischio di modifiche indesiderate. Python fornisce il modulo copy proprio per questo. >>> import copy >>> p1 = Point(3,4) >>> p2 = copy.copy(p1) >>> p1 == p2 0 >>> samepoint(p1, p2) 1

34 Osservazioni Attenzione la funzione copy.copy (ovvero la funzione copy nel modulo copy) realizza uno shallow copyng.

35 Esempi def growrect(box, dwidth, dheight) : box.width = box.width + dwidth box.height = box.height + dheight Per esercizio fare una funzione moverect che sposta il rettangolo.

36 Osservazioni Se uso shallow copy ma growrect funziona bene mentre la moverect sposterebbe entrambi i triangoli. Fortunatamente il modulo copy fornisce una funzione deepcopy che copia completamente un oggetto deferenziando (seguendo) i riferimenti che trova.

37 Esempi >>> b2 = copy.deepcopy(b1) # a questo punto b1 e b2 sono oggetti # completamente separati def growrect(box, dwidth, dheight) : import copy newbox = copy.deepcopy(box) newbox.width = newbox.width + dwidth newbox.height = newbox.height + dheight return newbox

Programmazione orientata agli oggetti: le classi

Programmazione orientata agli oggetti: le classi Programmazione orientata agli oggetti: le classi Oggetti e tipi di dati La programmazione che abbiamo visto finora agisce su variabili che appartengono a tipi di dati predefiniti: interi, floating point,

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione Capitolo 12 Polimorfismo e ereditarietà Prof. Mauro Gaspari: gaspari@cs.unibo.it Una classe tempo class Time: def init (self,hours=0,minutes=0,seconds=0): self.hours = hours

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione Capitolo 9 Tuple Prof. Mauro Gaspari: gaspari@cs.unibo.it Le tuple Due strutture dati composte: Stringhe: non modificabili (immutabili) Liste: modificabili (mutabili) Le tuple

Dettagli

Rudimenti di Python. senza rodimenti di Python

Rudimenti di Python. senza rodimenti di Python Rudimenti di Python senza rodimenti di Python Contatti _ Enrico Marino _ Federico Spini _ mail: _ (marino spini)@dia.uniroma3.it! _ sito: _ dia.uniroma3.it/~(marino spini)/python! Riferimenti _ sito ufficiale:

Dettagli

A. Ferrari. oggetti & game. Python. Alberto Ferrari Informatica

A. Ferrari. oggetti & game. Python. Alberto Ferrari Informatica oggetti & game Python oggetto o le applicazioni utilizzano oggetti o gli oggetti hanno uno stato interno in campi (attributi) privati o concetto di incapsulamento (black box) o gli oggetti hanno un comportamento

Dettagli

Programmazione orientata agli oggetti. Ivan Lanese

Programmazione orientata agli oggetti. Ivan Lanese Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows

Dettagli

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

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Oggetti e Classi Metodi Parametri Variabili di istanza Costruttori Esercizi Paradigma Object-Oriented Il paradigma OO

Dettagli

Funzioni - Se non si sono mai viste si possono considerare il modo piu' semplice per poter creare del codice riutilizzabile.

Funzioni - Se non si sono mai viste si possono considerare il modo piu' semplice per poter creare del codice riutilizzabile. Giugno 2006 Funzioni - Se non si sono mai viste si possono considerare il modo piu' semplice per poter creare del codice riutilizzabile. Classi - Senza voler entrare in termini tecnici si possono considerare

Dettagli

Elementi di Informatica

Elementi di Informatica Elementi di Informatica Capitolo 5 Sviluppo di Funzioni Prof. Mauro Gaspari: mauro,gaspari@unibo.it Esercizio 0: Calcolo del BMI Possiamo scomporre il problema in: 1. Calcolo del BMI, secondo la formula

Dettagli

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Python Programmare Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Le istruzioni devono essere date in un linguaggio comprensibile dal calcolatore. In generele questi

Dettagli

Programmazione orientata agli oggetti. Ivan Lanese e Cosimo Laneve

Programmazione orientata agli oggetti. Ivan Lanese e Cosimo Laneve Programmazione orientata agli oggetti Ivan Lanese e Cosimo Laneve Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Programmazione orientata agli oggetti È un paradigma di programmazione

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 5 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 12 Marzo 2013 Le funzioni sono oggetti di prima classe in Scheme In Scheme le funzioni

Dettagli

OOP: Object Oriented Programming

OOP: Object Oriented Programming OOP: Object Oriented Programming Riferimenti per questa parte: 1. Capitoli 7 e 8 del testo di riferimento 2. https://docs.python.org/3.6/tutorial/classes.html OOP: Idea Principale L idea principale della

Dettagli

Lab metodi programmazione. Testi. Caratteristiche di Java. Paradigmi di programmazione. Linguaggio Java Progetto

Lab metodi programmazione. Testi. Caratteristiche di Java. Paradigmi di programmazione. Linguaggio Java Progetto Lab metodi programmazione Linguaggio Java Progetto Testi C.S. Horstmann Computing Concepts with Java Essentials 3rd Edition, Wiley Ed. italiana: Concetti di informatica e fondamenti di Java 2 Seconda edizione,

Dettagli

Programmazione Orientata agli Oggetti e Scripting in Python

Programmazione Orientata agli Oggetti e Scripting in Python DIEE - Università degli Studi di Cagliari Programmazione Orientata agli Oggetti e Scripting in Python Paradigma ad Oggetti - 2 Alessandro Orro DIEE Univ. di Cagliari 1 ereditarietà: metodi Il meccanismo

Dettagli

OOP - Object Oriented Programming

OOP - Object Oriented Programming OOP - Object Oriented Programming Python linguaggio versatile, supporta, sia programmazione procedurale/funzionale sia, programmazione a oggetti (in maniera non esclusiva) Programmazione orientata agli

Dettagli

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

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),

Dettagli

I numeri razionali. Specifica: la sintassi. Specifica: la semantica

I numeri razionali. Specifica: la sintassi. Specifica: la semantica Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi Che cos è un tipo di dato? Tutti i linguaggi di programmazione tipati forniscono tipi ed operatori predefiniti

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.

Dettagli

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Catia Trubiani. Laboratorio di Ingegneria del Software a.a Università degli Studi dell Aquila Laboratorio di Ingegneria del Software a.a. 2013-2014 Catia Trubiani Dipartimento di Ingegneria e Scienze dell'informazione e Matematica (DISIM) - Università degli Studi

Dettagli

Introduzione all' OO in Python

Introduzione all' OO in Python Introduzione all' OO in Python Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 85

Dettagli

Laboratorio di Python

Laboratorio di Python Istruzione di condizione, Input da tastiera, Università di Bologna 6 e 8 marzo 2013 Sommario 1 Tipi di errore e Debugging 2 3 4 Outline Tipi di errore e Debugging 1 Tipi di errore e Debugging 2 3 4 Esercizio

Dettagli

Strutture Dati. Luca Abeni

Strutture Dati. Luca Abeni Strutture Dati Luca Abeni Dati e Tipi di Dati Una variabile è caratterizzata dal suo Tipo Specifica i valori che può assumere (Insieme di Definizione) Specifica a quanti byte di memoria la variabile è

Dettagli

Laboratorio di Python

Laboratorio di Python , Input da tastiera, Iterazione incondizionata 7 marzo 2014 Sommario 1 2 3 Outline 1 2 3 Definizione di funzione import modulo Si importa il modulo specificato def nome_f(par 1,, par n ) : Si definiscono

Dettagli

Programmazione con Java

Programmazione con Java Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:

Dettagli

Programmazione ad oggetti (cenni)

Programmazione ad oggetti (cenni) Programmazione ad oggetti (cenni) JavaScript è un linguaggio orientato agli oggetti La programmazione a oggetti è un paradigma di programmazione che semplifica lo sviluppo di applicazione complesse Secondo

Dettagli

Appunti di informatica. Lezione 8 anno accademico Mario Verdicchio

Appunti di informatica. Lezione 8 anno accademico Mario Verdicchio Appunti di informatica Lezione 8 anno accademico 2016-2017 Mario Verdicchio Il ciclo FOR Molto spesso in un programma bisogna ripetere un operazione per un numero prefissato di volte Si tratta di un iterazione

Dettagli

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Python Programmare Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Le istruzioni devono essere date in un linguaggio comprensibile dal calcolatore. In generele questi

Dettagli

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

Per capire cos è un oggetto prendiamo spunto dalla vita reale: un oggetto è un automobile, un computer, una casa, e così via Introduzione alle Classi / Oggetti Per capire cos è un oggetto prendiamo spunto dalla vita reale: un oggetto è un automobile, un computer, una casa, e così via Un oggetto può essere definito elencando

Dettagli

Java: Definire Classi e Creare Oggetti

Java: Definire Classi e Creare Oggetti Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 21 marzo 2014 Introduzione Programmare con gli Oggetti Un programma Java è costituito

Dettagli

Oggetti. Oggetti e classi. Utilizzo di classi. Classe

Oggetti. Oggetti e classi. Utilizzo di classi. Classe Oggetti Oggetti e classi Oggetto: entità che può essere manipolata nel programma mediante l invocazione di metodi Black box dotato di:! Interfaccia pubblica " Metodi visibili " Comportamento dell oggetto!

Dettagli

Laboratorio 02. Programmazione - CdS Matematica. Mirko Polato 3 Novembre 2015

Laboratorio 02. Programmazione - CdS Matematica. Mirko Polato 3 Novembre 2015 Laboratorio 02 Programmazione - CdS Matematica Mirko Polato 3 Novembre 2015 Contenitori Spesso è necessario utilizzare contenitori di oggetti. 2 of 26 Contenitori Spesso è necessario utilizzare contenitori

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Programmazione multi threaded in Python. Linguaggi dinamici A.A. 2010/2011 1

Programmazione multi threaded in Python. Linguaggi dinamici A.A. 2010/2011 1 Programmazione multi threaded in Python 1 Motivazione all'uso dei thread Pro Scrittura di applicazioni con molteplici eventi asincroni (GUI) Riduzione della latenza di servizio mediante l'uso di un pool

Dettagli

Definizione di classi. Walter Didimo

Definizione di classi. Walter Didimo Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti

Dettagli

Programmazione in Python per la bioinformatica

Programmazione in Python per la bioinformatica per la bioinformatica University of Verona Sommario La struttura dati Lista Lista Come si rappresenta una lista in python Reminder: Lista collezione ordinata di elementi L = a 0, a 1,, a n 1 La variabile

Dettagli

Calcolare il massimo di una lista

Calcolare il massimo di una lista Calcolare il massimo di una lista Lunedì abbiamo definito un algoritmo per calcolare il valore massimo fra gli elementi di una lista predefinita di interi. In particolare, abbiamo: deciso di rappresentare

Dettagli

Il linguaggio Python

Il linguaggio Python Il linguaggio Python Capitolo 2 Variabili, Espressioni e Comandi Prof. Mauro Gaspari: gaspari@cs.unibo.it Il Linguaggio Python Python e' un linguaggio imperativo con alcune caratteristiche funzionali.

Dettagli

Programmazione è gestione di eventi

Programmazione è gestione di eventi FUNZIONI Ed Eventi Programmazione è gestione di eventi Evento 1 (tasto premuto) Evento 2 (mouse) Evento 3 (cambio frame) Oggetto Evento 4 (fine di un brano audio) Azioni per evento 1 1. Azione 1 2. Azione

Dettagli

Progettazione Object-Oriented

Progettazione Object-Oriented Progettazione Object-Oriented Generalità, Relazione fra OOA e OOD Concetti di base: Classi e Oggetti, Relazioni fra oggetti, Ereditarietà e Polimorfismo La specifica del Progetto: notazione UML Una metodologia

Dettagli

non serve che la seconda condizione sia composta

non serve che la seconda condizione sia composta istruzioni condizionali Osservazioni: si tratta di un unica istruzione if-else if (temperatura > 30) printf("molto caldo\n"); else... non serve che la seconda condizione sia composta if (temperatura >

Dettagli

Linked Lists. Liste linkate (1) Progettazione: struct. Liste linkate (2)

Linked Lists. Liste linkate (1) Progettazione: struct. Liste linkate (2) Liste linkate () Linked Lists La combinazione di class/struct e puntatori porta alla creazioni di interessanti Abstract Data Type liste linkate ( stack, queues ), trees Liste linkate come strutture struct

Dettagli

Oggetti. Definizioni di Classi II

Oggetti. Definizioni di Classi II Programmazione a Oggetti Definizioni di Classi II Sommario Costruzioni di oggetti Campi e metodi di classe Overloading Istanziazione di oggetti Costruzione di un oggetto Processo complesso che comprende

Dettagli

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

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura: Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata

Dettagli

Elementi di Base. Introduzione a Python.

Elementi di Base. Introduzione a Python. Elementi di Base Introduzione a Python http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Panoramica Elementi di base della sintassi (struttura,

Dettagli

Elementi di Informatica

Elementi di Informatica Elementi di Informatica Capitolo 3 Funzioni Prof. Mauro Gaspari: gaspari@cs.unibo.it Chiamate di funzione Esempio di chiamata di funzione (= function call). >>>type( 32 ) type è il nome

Dettagli

Laboratorio di Python (con Linux)

Laboratorio di Python (con Linux) Indeterminata,,,... Università di Bologna 14, 16 marzo 2012 Sommario 1 2 3 4 5 Modularità Quando si deve fare un programma complicato è meglio suddividerlo in più parti. Per ridurre la complessità (più

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione Capitolo 3 Funzioni Prof. Mauro Gaspari: gaspari@cs.unibo.it Chiamate di funzione Esempio di chiamata di funzione (= function call). >>>type( 32 ) type e' il

Dettagli

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

oggetti: Cenni generali Programmazione ad Ingegneria Informatica e dell'informazione Michelangelo Diligenti Programmazione ad oggetti: Cenni generali Michelangelo Diligenti Ingegneria Informatica e dell'informazione diligmic@dii.unisi.it Argomenti Programmazione ad oggetti Motivazioni Classi Metodi e membri

Dettagli

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture Linked Lists Liste linkate () La combinazione di class/struct e puntatori porta alla creazioni di interessanti Abstract Data Type liste linkate ( stack, queues ), trees Liste linkate come strutture struct

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo

Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo TIPI DI DATO ASTRATTO Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo implica un dominio, D un insieme di operazioni ammissibili su oggetti

Dettagli

La programmazione ad oggetti (OOP)

La programmazione ad oggetti (OOP) Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente

Dettagli

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript Programmazione lato client Netscape: Microsoft: JScript ECMAScript (ECMA-262) (European Computer Manufactures Association) Linguaggio di script interpretato con alcune caratteristiche Object Oriented HTTP

Dettagli

Laboratorio di Python

Laboratorio di Python Laboratorio di Python Code Lab13 28 Aprile 2017 Outline Correzione esercizi per oggi Code Teoria Esercizi Esercizi per casa Esercizio 1 per casa Scrivere una funzione che determina se uno studente può

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,

Dettagli

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

Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 1.0 Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 10 a cura del prof Francesco Tappi Il paradigma orientato agli oggetti implica lo sviluppo di unità di programmazione attive, chiamate

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

Programmazione Orientata agli Oggetti e Scripting in Python

Programmazione Orientata agli Oggetti e Scripting in Python DIEE - Università degli Studi di Cagliari Programmazione Orientata agli Oggetti e Scripting in Python Paradigma ad Oggetti - 1 Alessandro Orro DIEE Univ. di Cagliari 1 Introduzione Il Python è un linguaggio

Dettagli

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

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi

Dettagli

La classe java.lang.object

La classe java.lang.object La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita

Dettagli

Laboratorio di Python

Laboratorio di Python Laboratorio di Python Programmazione orientata agli oggetti Lab14 11 Maggio 2018 Outline Correzione esercizi per oggi Oggetti Teoria Esercizi Esercizi per casa Outline Correzione esercizi per oggi Oggetti

Dettagli

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne

Dettagli

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

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

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

L oggetto creato. Creazione di Oggetti. Rectangle: il concetto 10. Costruzione. Lo spazio di memoria del linguaggio Java. Rectangle: l oggetto Usare e costruire oggetti Variabili e Oggetti Lo spazio di memoria di Java Le API di Java Gli oggetti sono entità di un programma che si possono manipolare invocando i metodi System.out oggetto della classe

Dettagli

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

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

Programmazione in Perl Programmazione ad Oggetti

Programmazione in Perl Programmazione ad Oggetti Master in Bioinformatica Programmazione in Perl Programmazione ad Oggetti Andrea Sterbini sterbini@di.uniroma1.it A che vi servono BioPerl e la programmazione a oggetti? BioPerl è una libreria formata

Dettagli

La programmazione nel linguaggio JavaScript. Il programma

La programmazione nel linguaggio JavaScript. Il programma Il programma Nei linguaggi di programmazione il programma è una funzione che ha come argomento i dati digitati in input e opportunamente convertiti. la descrizione della funzione (ovvero il programma)

Dettagli

Il paradigma Object Oriented. Iolanda Salinari

Il paradigma Object Oriented. Iolanda Salinari Il paradigma Object Oriented Iolanda Salinari gli oggetti un oggetto è un elemento o concetto del mondo reale che può essere identificato in modo univoco: un cliente, un articolo, un impiegato ogni oggetto

Dettagli

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

Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++ Informatica 3 Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Lezione 7 -

Dettagli

Tecnologie dell'informazione e della Comunicazione

Tecnologie dell'informazione e della Comunicazione Tecnologie dell'informazione e della Comunicazione Capitolo 14 Files e eccezioni Prof. Mauro Gaspari: gaspari@cs.unibo.it Files Quando si esce dall'interprete python e/o si spegne il computer i dati in

Dettagli

Introduzione all OOP!

Introduzione all OOP! Introduzione all OOP! Introdurre l evoluzione dei linguaggi di programmazione e la loro classificazione Introdurre l OOP (astrazione, incapsulamento, ereditarietà) Dal C a Java un primo esempio 1 LINGUAGGI

Dettagli

Esercizio: punti e segmenti

Esercizio: punti e segmenti Esercizio: punti e segmenti! Punti e segmenti nel piano, con data abstraction Esercizio: punti e segmenti! Punti e segmenti nel piano, con data abstraction! Lunghezza di un segmento l = (x 2 " x 1 ) 2

Dettagli

Avviate l interprete Python selezionandolo dal menu dei programmi. Una volta avviato, l interprete presenta un cursore in cui inserire comandi

Avviate l interprete Python selezionandolo dal menu dei programmi. Una volta avviato, l interprete presenta un cursore in cui inserire comandi Introduzione al Python Caratteristiche procedurale si specifica la procedura da eseguire sui dati strutturato concetto di visibililtà delle variabili orientato agli oggetti permette di programmare con

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe/array Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Laboratorio di Python

Laboratorio di Python Laboratorio di Python Matrici con Liste Lab09 5 Aprile 2017 Outline Correzione esercizi per oggi Matrici Teoria Esercizi Esercizi per casa Esercizio 1 per casa Scrivere una funzione che verifica se una

Dettagli

INFORMATICA OOP Relazioni tra classi Roberta Gerboni

INFORMATICA OOP Relazioni tra classi Roberta Gerboni 2015 - Roberta Gerboni Relazione di associazione E possibile legare varie classi presenti in un progetto con una relazione di associazione. Una associazione individua una connessione logica tra classi

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

A che vi servono BioPerl e la programmazione a oggetti?

A che vi servono BioPerl e la programmazione a oggetti? Perl, OOP e BioPerl Programma di oggi: BioPerl e programmazione a oggetti: (a che vi servono?) La programmazione ad oggetti in Perl Funzioni e moduli Oggetti Il Tutorial BioPerl Esempi d'uso A che vi servono

Dettagli

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

OOP in C++ ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi OOP in C++ Classi e Oggetti Una classe èuntipochehavariabili ha membro (dati membro) e funzioni membro In Java i dati membro sono chiamati attributi e le funzioni membro metodi Una variabile ab di un tipo

Dettagli

Usare e costruire oggetti. Concetti Fondamentali. Interfaccia Pubblica di una. Application Program Interface

Usare e costruire oggetti. Concetti Fondamentali. Interfaccia Pubblica di una. Application Program Interface Concetti Fondamentali Interfaccia pubblica di una classe Le API di Java Lo spazio di memoria della macchina astratta Java Blocchi e sottoblocchi Variabili di frame e loro visibilità Importazioni di classi

Dettagli

ORDINAMENTO PER SELEZIONE ORDINAMENTO PER SELEZIONE ORDINAMENTO VELOCE CONFRONTI

ORDINAMENTO PER SELEZIONE ORDINAMENTO PER SELEZIONE ORDINAMENTO VELOCE CONFRONTI ORDINAMENTO PER SELEZIONE Per l analisi delle prestazioni di tale algoritmo di ordinamento, si considerano i due cicli for annidati: poiché i confronti avvengono nel ciclo interno si ha che n 2 i= 0 (

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di

Dettagli

Ingegneria degli Algoritmi (II parte pratica)

Ingegneria degli Algoritmi (II parte pratica) Ingegneria degli Algoritmi (II parte pratica) Correzione prova pratica Ing. Domenico Spera domenico.spera@students.uniroma2.eu Premessa Sono stati richiesti i seguenti task: Implementare la versione in-order

Dettagli

Tipi riferimento e stringhe

Tipi riferimento e stringhe Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 8 Tipi riferimento e stringhe A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Tipi riferimento e stringhe 1

Dettagli

Astrazione sui dati. Tipi di dati astratti. Univ. di Udine. Tipi di dati astratti (Univ. di Udine) Astrazione sui dati 1 / 1

Astrazione sui dati. Tipi di dati astratti. Univ. di Udine. Tipi di dati astratti (Univ. di Udine) Astrazione sui dati 1 / 1 Astrazione sui dati Tipi di dati astratti Univ. di Udine Tipi di dati astratti (Univ. di Udine) Astrazione sui dati 1 / 1 Varie forme di astrazione Astrazione nozione ricorrente in questo corso. Astrazione

Dettagli

Java Le stringhe. Stringhe

Java Le stringhe. Stringhe Java Le stringhe 1 Le stringhe in Java In Java le stringhe non sono semplicemente array di caratteri terminati con zero come avviene in C In Java le stringhe sono oggetti appartenenti alla classe String

Dettagli

Python Start. Docente: M. Chiara Debernardi. Lingua del corso. Descrizione del corso e obiettivi. Destinatari. Italiano

Python Start. Docente: M. Chiara Debernardi. Lingua del corso. Descrizione del corso e obiettivi. Destinatari. Italiano Python Start Docente: M. Chiara Debernardi Lingua del corso Italiano Descrizione del corso e obiettivi Il corso mira a far conoscere i fondamenti di Python i cui ambiti di utilizzo sono molteplici: intelligenza

Dettagli

Il linguaggio C funzioni e puntatori

Il linguaggio C funzioni e puntatori Salvatore Cuomo Il linguaggio C funzioni e puntatori Lezione n. 8 Parole chiave: Linguaggio C, procedure, funzioni. Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio Email

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di

Dettagli

Liste. Una lista è una serie ordinata di valori, ognuno identificato da un indice. I valori che fanno parte della lista sono chiamati elementi.

Liste. Una lista è una serie ordinata di valori, ognuno identificato da un indice. I valori che fanno parte della lista sono chiamati elementi. Python Liste Una lista è una serie ordinata di valori, ognuno identificato da un indice. I valori che fanno parte della lista sono chiamati elementi. Una lista di 8 elementi: el1 el2 el3 el4 el5 el6 el7

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

laboratorio di python

laboratorio di python laboratorio di python esercizi vari, pratiche di debug e di tracing 29 Marzo 2019 1/18 Debug esercizio a cosa non va in questo codice? Scrivere una funzione che prende come parametro una tupla t e restituisce

Dettagli

Pattern matching e tipi di dato strutturati

Pattern matching e tipi di dato strutturati Capitolo 3 Pattern matching e tipi di dato strutturati Per il momento abbiamo considerato un linguaggio funzionale (denominato SimpleCaml ) i cui unici tipi di dato sono interi, float, booleani e funzioni.

Dettagli