Linguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti
|
|
- Claudio Angelini
- 7 anni fa
- Visualizzazioni
Transcript
1 LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE Anno Accademico Alberto Martelli Programmazione ad Oggetti Parte I Linguaggi ad oggetti (object oriented) I linguaggi di programmazione ad oggetti consentono di applicare metodologie di sviluppo di programmi "object oriented", ossia basate sugli oggetti (dati) che il sistema software manipola. Questa metodologia si contrappone a quella più tradizionale di sviluppare un programma secondo un approccio funzionale. Es. di strutturazione funzionale di un compilatore: leggi il programma e produci una sequenza di token fai l'analisi sintattica dei token e produci un albero sintattico fai l'analisi semantica genera il codice a partire dall'albero sintattico A. Martelli - Paradigmi Progr. ad oggetti I 2 Programmazione ad oggetti I principali linguaggi ad oggetti In molti casi l'organizzazione ad oggetti risulta la più naturale perché rispecchia in modo diretto il mondo che si vuole rappresentare: - simulazione (automobili, semafori, aerei, ) - software grafico (finestre, bottoni, menu, ) Simula - progettato nel capostipite dei linguaggi ad oggetti Smalltalk - linguaggio ad oggetti "puro" - linguaggio "dinamico" non c'è controllo statico dei tipi Progetto object oriented di software: costruzione di sistemi software come collezioni strutturate di implementazioni di tipi di dati astratti (B. Meyer) C++ - linguaggio "ibrido" - garantisce la compatibilità con il C Java - il più recente. A. Martelli - Paradigmi Progr. ad oggetti I A. Martelli - Paradigmi Progr. ad oggetti I 4 Java 1 Le caratteristiche principali di Java Object oriented: progettato per essere un linguaggio ad oggetti, anche se meno puro di Smalltalk Robusto non ci sono puntatori garbage collection Interattivo costrutti per la concorrenza Java 2 Indipendente dall'architettura il compilatore genera codice intermedio (bytecode) che viene interpretato Applicazioni su internet applet sicurezza Ambiente ricco di tipi di dati predefiniti grafica programmazione su internet accesso a database.. A. Martelli - Paradigmi Progr. ad oggetti I 5 A. Martelli - Paradigmi Progr. ad oggetti I 6 1
2 Oggetti Un oggetto rappresenta un dato, ed è costituito da stato: collezione di variabili comportamento: collezione di operazioni (metodi) Esempio - contatore STATO METODI void iniz(int i) inizializza il contatore a i void incr() incrementa il contatore di 1 void decr() decrementa il contatore di 1 int val() restituisce il valore del contatore Incapsulamento I dati e le procedure che li manipolano sono raggruppati in un unica entità, l oggetto. Il mondo esterno ha accesso ai dati solo tramite un insieme di operazioni (metodi) che costituiscono l interfaccia dell oggetto. I dettagli dell implementazione sono nascosti (INFORMATION HIDING) Un oggetto realizza una ASTRAZIONE DEI DATI Nota: i metodi sono procedure (funzioni). Usiamo la sintassi del C. A. Martelli - Paradigmi Progr. ad oggetti I 7 A. Martelli - Paradigmi Progr. ad oggetti I 8 Contatore Tabella void iniz(int i ) void incr( ) void decr( ) int val( ) void iniz(int i ) {c=i; void incr( ) {++c; void decr( ) {--c; int val( ) {return c; void iniz( ) void ins(int x) boolean trova(int x) Variabili e metodi privati INTERFACCIA IMPLEMENTAZIONE INTERFACCIA CONTATORE IMPLEMENTAZIONE La tabella può essere implementata con array o con strutture dinamiche (liste o alberi), ma il comportamento non cambia per l'utente. A. Martelli - Paradigmi Progr. ad oggetti I 9 A. Martelli - Paradigmi Progr. ad oggetti I Invio di messaggi 1 Un programma è costituito da un insieme di oggetti. Gli oggetti sono dinamici - creati e distrutti durante l'esecuzione del programma. Un oggetto A, per agire su un altro oggetto B, invia un messaggio a B chiedendogli di eseguire uno dei metodi della sua interfaccia. A B esegui il metodo m1 finestra Invio di messaggi 2 invia valore di c display contatore c Lo scambio di messaggi è l'unico modo di comunicare tra oggetti. bottone 1 bottone 2 bottone esegui incr A. Martelli - Paradigmi Progr. ad oggetti I 11 A. Martelli - Paradigmi Progr. ad oggetti I 12 2
3 Invio di messaggi invio di messaggio = invocazione di un metodo In Java, e altri linguaggi, si usa la notazione con il punto oggetto.metodo(...) int x,y;.incr();.decr(); x =.val(); y =.val(); x ha valore 4 e y ha valore 9 Oggetti come record Un oggetto può essere visto come un record (struttura) esteso, i cui campi possono essere variabili (come in C o Pascal) e funzioni (metodi). contatore1 c iniz codice di iniz incr codice di incr decr codice di decr val codice di val contatore2 c iniz codice di iniz incr codice di incr decr codice di decr val codice di val A. Martelli - Paradigmi Progr. ad oggetti I 1 A. Martelli - Paradigmi Progr. ad oggetti I 14 Invio di messaggi 4 In un linguaggio tradizionale, per eseguire una operazione su un dato, dovremmo passare il dato come parametro: incr() iniz(, ) Nella programmazione ad oggetti, invece, l'oggetto su cui si esegue una operazione non viene passato come parametro, perché figura già come destinatario del messaggio (può essere considerato come un parametro implicito).incr().iniz() Classi I più diffusi linguaggi ad oggetti sono basati sul concetto di: CLASSE = insieme di oggetti con struttura e comportamento simili La classe definisce un tipo. Istanza di una classe = oggetto della classe. Istanze Classe Contatore A. Martelli - Paradigmi Progr. ad oggetti I 15 A. Martelli - Paradigmi Progr. ad oggetti I 16 Classi in Java 1 Una classe realizza l'implementazione di un tipo di dato astratto. In Java: void iniz(int i) {c = i; void incr() {++c; void decr() {--c; int val() {return c; Classi in Java 2 Per realizzare information hiding si usano le parole riservate public - interfaccia private - implementazione private public void iniz(int i) {c = i; public void incr() {++c; public void decr() {--c; public int val() {return c; Per il momento trascuriamo questo aspetto e supponiamo che tutti i campi siano pubblici. A. Martelli - Paradigmi Progr. ad oggetti I 17 A. Martelli - Paradigmi Progr. ad oggetti I 18
4 Variabili private private public void iniz(int i) {c = i; public void incr() {++c; public void decr() {--c; public int val() {return c; Si noti che, se la variabile c fosse public, il metodo val sarebbe inutile: per conoscere il valore di un contatore cont basterebbe usare cont.c Tuttavia è buna norma di programmazione impedire l accesso diretto alle variabili di un oggetto, dichiarandole private. Come si crea un'istanza new Contatore() crea un nuovo oggetto di tipo Contatore e ne restituisce il puntatore (reference). Tutti gli oggetti sono allocati dinamicamente (nello heap) e sono manipolati attraverso un puntatore (assegnamento, passaggio di parametri) La memoria occupata dagli oggetti non più raggiungibili viene recuperata dal garbage collector. A. Martelli - Paradigmi Progr. ad oggetti I 19 A. Martelli - Paradigmi Progr. ad oggetti I 20 Puntatori Allocazione dinamica 1 In Java non esistono puntatori espliciti Contatore cont; Fino a quando non si esegue una new, la variabile cont non è associata a nessun oggetto. Viceversa in C++ si può dichiarare sia Contatore ; sia Contatore *; è associato ad un contatore creato "staticamente". è associato ad un contatore creato dinamicamente (vedi Java). Contatore, ; A. Martelli - Paradigmi Progr. ad oggetti I 21 A. Martelli - Paradigmi Progr. ad oggetti I 22 Allocazione dinamica 2 Allocazione dinamica Contatore, ; = new Contatore(); = new Contatore();.iniz();.iniz(); Contatore, ; = new Contatore(); = new Contatore();.iniz();.iniz(); = ; HEAP Questo oggetto non è più accessibile. Può essere recuperato dal garbage collector. HEAP A. Martelli - Paradigmi Progr. ad oggetti I 2 A. Martelli - Paradigmi Progr. ad oggetti I 24 4
5 Come si inizializza un oggetto Si può chiamare esplicitamente un metodo di inizializzazione: Contatore ; = new Contatore();.iniz(); L'inizializzazione di un oggetto è una operazione molto importante. Java (e C++) forniscono la nozione di costruttore, che consente di inizializzare automaticamente un oggetto al momento della creazione. Costruttori Contatore(int i) {c = i; void incr() {++c; void decr() {--c; int val() {return c; L'oggetto viene inizializzato al momento della creazione, invocando automaticamente il costruttore. Contatore = new Contatore(); crea un contatore e lo inizializza a. costruttore A. Martelli - Paradigmi Progr. ad oggetti I 25 A. Martelli - Paradigmi Progr. ad oggetti I 26 Overloading dei costruttori Contatore() {c = 0; Contatore(int i) {c = i; void incr() {++c; void decr() {--c; int val() {return c; Ci sono 2 costruttori diversi, individuati dal numero e tipo degli argomenti. Contatore = new Contatore(); //iniz. a 0 Contatore = new Contatore(5); //iniz. a 5 Overloading dei metodi Overloading: metodi diversi possono avere lo stesso nome. I metodi "overloaded" si distinguono uno dall'altro in base alla lista dei tipi degli argomenti. Contatore() {c = 0; Contatore(int i) {c = i; void incr() {++c; void incr(int n) {c += n; void decr() {--c; int val() {return c; A. Martelli - Paradigmi Progr. ad oggetti I 27 A. Martelli - Paradigmi Progr. ad oggetti I 28 this Come può un oggetto mandare un messaggio a se stesso, ossia invocare un proprio metodo? Con la parola chiave this (self in Smalltalk) class A {... void p() {... void m() {... this.p();... this come costruttore this da solo indica un costruttore della stessa classe Contatore(int n) {c=n; Contatore() {this(); void incr() {++c; void decr() {--c; int val() {return c; chiama il costruttore con un argomento (inizializza il contatore a ) In alcuni casi this è indispensabile si può anche scrivere solo p() this viene aggiunto dal compilatore A. Martelli - Paradigmi Progr. ad oggetti I 29 A. Martelli - Paradigmi Progr. ad oggetti I 0 5
6 Variabili e metodi di classe 1 E' possibile definire variabili ( o metodi) associate ad una classe, condivise da tutte le istanze di quella classe. In Java sono individuate dalla parola chiave static class Conta { static int numcontatori = 0; Conta(int i) {c = i; ++numcontatori; void incr() {++c; void decr() {--c; int val() {return c; classe Conta numcontatori 2 Variabili e metodi di classe 2 c 5 c 8 Le variabili di classe sono visibili da tutte le istanze della classe. Sono variabili globali (per tutte le istanze di una classe). A. Martelli - Paradigmi Progr. ad oggetti I 1 A. Martelli - Paradigmi Progr. ad oggetti I 2 Variabili e metodi di classe Una classe può essere considerata come un oggetto che viene allocato staticamente (all'inizio dell'esecuzione del programma) Le variabili ed i metodi di classe (static) sono accessibili attraverso il nome della classe int x,y; Conta cont = new Conta(); cont.incr();... x = cont.c; y = Conta.numContatori; Programmi in Java Un programma in Java è una collezione di classi. Una di queste deve contenere un metodo main. L'esecuzione inizia dal main. class Esempio { public static void main(string arg[]) { System.out.println("questo è un esempio"); Il metodo main deve essere statico, perché altrimenti bisognerebbe creare un oggetto della classe Esempio prima di poterlo eseguire. A. Martelli - Paradigmi Progr. ad oggetti I A. Martelli - Paradigmi Progr. ad oggetti I 4 Come si esegue un programma Si crea un file <nome_file>.java contenente una o più classi C1, C2, e lo si compila. : javac <nome_file>.java Il compilatore crea un file.class in codice intermedio (bytecode) per ogni classe: C1.class, C2.class,... Si chiama l'interprete sulla classe che contiene il main (Es. C1) : java C1 L'interprete alloca questa classe e comincia ad eseguire il main. A. Martelli - Paradigmi Progr. ad oggetti I 5 Un programma completo Contatore(int n) {c=n; void incr() {++c; void decr() {--c; int val() {return c; class UsaCont { public static void main(string arg[]) { Contatore cont = new Contatore(5); cont.incr(); System.out.println("valore =" + cont.val()); : javac <nome_file>.java : java UsaCont A. Martelli - Paradigmi Progr. ad oggetti I 6 6
7 Tipi di dato primitivi Java fornisce diversi tipi semplici primitivi. A differenza di altri linguaggi, la dimensione dei tipi numerici è fissata per consentire la portabilità dei programmi. byte 8 bit short 16 bit int 2 bit long 64 bit float 2 bit double 64 bit char 16 bit (Unicode) boolean Contatore cont; cont = new Contatore(); int x = ; I tipi semplici non sono oggetti cont x I tipi semplici, come ad es. gli interi, non vengono allocati dinamicamente nello heap, a differenza di altri linguaggi "puri" come Smalltalk. HEAP A. Martelli - Paradigmi Progr. ad oggetti I 7 A. Martelli - Paradigmi Progr. ad oggetti I 8 Array in Java Gli array in Java sono oggetti che vengono allocati dinamicamente. La dimensione è fissata al momento della creazione. Contatore cont[]; oppure Contatore[] cont; int num_giorni[]; oppure int[] num_giorni; cont = new Contatore[]; num_giorni = new int[12]; Contatore cont[]; cont Array 1 L'interprete controlla che gli indici siano sempre nell'intervallo specificato al momento della creazione. Es. num_giorni[1] darà errore a "runtime". A. Martelli - Paradigmi Progr. ad oggetti I 9 A. Martelli - Paradigmi Progr. ad oggetti I 40 Contatore cont[]; cont = new Contatore[]; Array 2 Contatore cont[]; cont = new Contatore[]; cont[0] = new Contatore(); Array cont cont contatore A. Martelli - Paradigmi Progr. ad oggetti I 41 A. Martelli - Paradigmi Progr. ad oggetti I 42 7
8 Stringhe La libreria standard fornisce una classe predefinita String. String s1 = "Buon"; String s2 = "giorno"; String saluto = s1 + s2; concatenazione La stringa saluto ha valore "Buongiorno" La classe String contiene numerosi metodi: String s = saluto.substring(0,4) //s ha valore "Buon" Stringhe Le stringhe sono immutabili. Non ci sono metodi per cambiare un carattere in una stringa: occorre creare una nuova stringa. String s = "salve"; se vogliamo sostituire la e con una a String s = s.substring(0,4) + "a"; oppure String s = "salva"; int n = saluto.length() // n vale A. Martelli - Paradigmi Progr. ad oggetti I 4 A. Martelli - Paradigmi Progr. ad oggetti I 44 s.equals(t) Uguaglianza di stringhe restituisce true se le due stringhe s e t sono uguali, false altrimenti. String s = "salve"; String t = "salve"; s.equals(t) // dà true non va bene usare l'operatore == s == t // darebbe false perché i valori di s e t sono due oggetti diversi, anche se hanno lo stesso valore A. Martelli - Paradigmi Progr. ad oggetti I 45 Classi generiche class TabellaDiInt { int n; int a[]; TabellaDiInt(int dim) { a = new int[dim]; n = 0; boolean ins(int x) { if (n >= a.length-1) return false; else { n++; a[n] = x; return true;... Questa classe definisce tabelle di interi. Una tabella di contatori o di qualunque altro oggetto sarebbe fatta allo stesso modo. Sarebbe utile un costrutto che consentisse di definire tabelle di qualunque tipo di oggetti (come si può fare con gli array) (classi generiche) A. Martelli - Paradigmi Progr. ad oggetti I 46 Classi parametriche (generiche) class Tabella(class C) { int n; C a[]; Tabella(int dim) {... boolean ins(c x) { In Java non è possibile definire classi generiche. Vedremo che si può ottenere un effetto simile con l'ereditarietà. In C++ si possono usare i template. Il parametro C della classe indica il tipo degli elementi della tabella A. Martelli - Paradigmi Progr. ad oggetti I 47 8
Linguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti.
Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi ad oggetti I linguaggi di programmazione ad oggetti consentono di applicare metodologie di sviluppo di programmi "object oriented", ossia
DettagliProgrammazione 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
DettagliIL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
Dettagli! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente
! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente!!la loro esistenza deve essere prevista e dichiarata a priori! Questo può rappresentare un problema soprattutto per variabili
DettagliLinguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi
Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori
DettagliIntroduzione a Java. Riferimenti
Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia
DettagliJava 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
Dettagli14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliJava. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto
Java Il linguaggio Java è un linguaggio di programmazione ad alto livello algoritmo: astrazione della realtà linguaggio di programmazione: astrazione del processore variabile e tipo: astrazione della locazione
DettagliJava. Java: compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto
Java Java: compilatore e interprete Il linguaggio Java è un linguaggio di programmazione ad alto livello - algoritmo: astrazione della realtà - linguaggio di programmazione: astrazione del processore -
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliProgrammazione ad oggetti
Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
DettagliTipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione
DettagliCorso di Programmazione a oggetti
Corso di Programmazione a oggetti Introduzione alla programmazione a oggetti aa 2014/2015 Francesco Fontanella La Programmazione Modulare Un programma può essere visto come un insieme di moduli che interagiscono
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
DettagliFinestre di dialogo. Corso di Laboratorio di Programmazione Web. Controllo dell input e window.alert. prompt di stringhe!
Corso di Funzioni ed Oggetti Finestre di dialogo prompt( Inserisci il valore, 1000 ); restituisce la stringa inserita nel campo alarm( Stai per uscire! ); Dipartimento di Informatica Università degli Studi
DettagliOO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini
Primi concetti di Java Lorenzo Bettini OO puro Java è object-oriented puro Non come il C+ + (OO ibrido) Per compatibilità col C Ogni cosa è un oggetto Gli oggetti si manipolano tramite riferimenti String
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
DettagliSTRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe
STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe String Una stringa Java rappresenta uno specifico valore e come
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Dettagli18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
DettagliConcetti base programmazione. Antonio Gallo
Concetti base programmazione Antonio Gallo info@laboratoriolibero.com Programma Insieme di istruzioni: Strtturato Ad oggetti Strutturato Ha una struttura più lineare Basato sui concetti di sequenza, selezione,
DettagliIL CONCETTO DI CLASSE
IL CONCETTO DI CLASSE Una CLASSE riunisce le proprietà di: componente software: può essere dotata di suoi propri dati / operazioni moduli: riunisce dati e relative operazioni, fornendo idonei meccanismi
DettagliSTRUTTURE DATI: OLTRE GLI ARRAY LISTE
STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi
DettagliProgrammazione 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.
DettagliIngegneria del Software
Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliProgrammazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
DettagliTipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
DettagliProgrammazione 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
DettagliStrutture dati e loro organizzazione. Gabriella Trucco
Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi
DettagliIntroduzione alla Programmazione in Java attraverso un esempio commentato
Corso di Studi in Informatica Programmazione 1 corso B prof. Elio Giovannetti Introduzione alla Programmazione in Java attraverso un esempio commentato Programmazione 1 B - a.a. 2002-03 53 Modello di memoria
Dettagli1 Il Paradigma ad Oggetti
1 Il Paradigma ad Oggetti 1.1 Mini-Java In questa sezione introduciamo un sottoinsieme molto elementare del linguaggio ad oggetti Java, che chiamiamo Mini-Java. Nel linguaggio Mini-Java abbiamo incluso
DettagliUtilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:
1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente
DettagliStrutture Dinamiche. Fondamenti di Informatica
Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));
DettagliLa programmazione ad oggetti: chiamate di metodi. Overloading. This
ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMA SVOLTO A.S. 2015/2016 Classe IV C Informatica Proff. Fabio Ciao / Simone Calugi Libro di testo: Cloud B P.
DettagliInformatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione
Informatica 3 Informatica 3 LEZIONE 2: Sintassi e semantica Lezione 2- Modulo 1 Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4:
DettagliLinguaggi di programmazione e astrazione
Linguaggi di programmazione e astrazione i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori che possono, con un solo
DettagliProprietà 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
DettagliCorso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti Costruttori di copia, funzioni di accesso e variabili static aa 2008/2009 Claudio De Stefano Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 1
DettagliEreditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
DettagliProgrammazione orientata agli oggetti Il modello di Java. OOP in Java
Programmazione orientata agli oggetti Il modello di Java 1 Caratteristiche di Java Java è generalmente considerato un linguaggio orientato agli oggetti puro, aderente quindi ai concetti della OOP classica
DettagliRiferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio)
Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Riferimenti ad oggetti: Cosa si può fare con i riferimenti?
DettagliLaboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013
Laboratorio Progettazione Web Le funzioni in PHP Angelica Lo Duca IIT-CNR angelica.loduca@iit.cnr.it 2012/2013 Funzioni Una funzione è una sequenza di istruzioni che implementano una specifica funzionalità
DettagliInformatica Generale Andrea Corradini I linguaggi di programmazione
Informatica Generale Andrea Corradini 17 - I linguaggi di programmazione Sommario Cos'è un linguaggio di programmazione? Una prospettiva storica: linguaggi di prima, seconda e terza generazione I paradigmi
DettagliStringhe e Array. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni La Classe String In Java le stringhe, a differenza della maggior parte dei linguaggi di programmazione, non sono array di caratteri (char), bensì
DettagliIndice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
DettagliISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016
ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016 Classe: 4^A inf Prof.ssa Lami Carla Prof. Simone Calugi Programma di INFORMATICA GENERALE, APPLICAZIONI
DettagliEsonero del corso di Programmazione a Oggetti
Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
DettagliLinguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi
Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori
DettagliDefinizione di una classe
Classi Le istruzioni sono raggruppate per ottenere una medesima funzionalità (metodo). Le diverse funzionalità (metodi) relative a un oggetto sono raggruppate nella classe. La classe assegna un nome comune
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliSpecifica: la sintassi. Specifica: la semantica. 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
DettagliIntroduzione ai puntatori in C Definizione
Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il
DettagliCorso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 24 Ottobre 2014
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 24 Ottobre 2014 1 Una funzione membro importante: il costruttore In logica OOP l accesso allo stato interno di un istanza deve avvenire solo attraverso
DettagliLezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliEsercitazione n 1. Obiettivi
Esercitazione n 1 Obiettivi Introduzione all utilizzo di Java Development Kit (JDK) versione 1.3 Sviluppare programmi Java tramite linea di comando Es: javac, java, jdb, javadoc Primo esempio di programma
DettagliVariabili e Metodi di classe Interfacce e Package Gestione di File in Java
Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe
DettagliProgrammazione ad Oggetti. Java Parte II
Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una
DettagliTIPI PRIMITIVI: LIMITI
TIPI PRIMITIVI: LIMITI I tipi primitivi sono i "mattoni elementari" del linguaggio In varie situazioni può però essere necessario trattare i tipi primitivi come oggetti quando una funzione pretende come
DettagliOperazioni numeriche - Input
Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di input 11/11/2004 Laboratorio di Programmazione - Luca Tesei 1 Operazioni fra interi e decimali In Java
Dettaglicap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe
cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe 1 tipi statici e tipi dinamici in generale i LP hanno tipi statici, cioè ogni variabile ha un tipo dichiarato
DettagliCorso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica
Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliINSTALLAZIONE, DOCUMENTAZIONE, TUTORIAL E PRIMI PROGRAMMI
Java 2: 2 installazione, documentazione,, tutorial e primo programma INSTALLAZIONE, DOCUMENTAZIONE, TUTORIAL E PRIMI PROGRAMMI Marco Botta Dipartimento di Informatica - Universita` degli Studi di Torino
DettagliAMBIENTI DI PROGRAMMAZIONE
AMBIENTI DI PROGRAMMAZIONE È l'insieme dei programmi che consentono la scrittura, la verifica e l'esecuzione di nuovi programmi (fasi di sviluppo) Sviluppo di un programma Affinché un programma scritto
DettagliIl paradigma OO e le Classi
Oggetti e Classi (CAP 10) Alberto Garfagnini Università degli studi di Padova 1 Dicembre 2009 Il paradigma OO e le Classi La programmazione ad Oggetti () è una filosofia di programmazione che si basa sui
DettagliFondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Enumerativi Finora abbiamo creato enumerativi
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
Dettagli12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario La classe String Lettura da input di dati numerici (tipo int) Stampa di dati numerici Uno sguardo al codice Esercizi 21/03/2011 2
DettagliProgrammazione web lato client con JavaScript. Marco Camurri 1
Programmazione web lato client con JavaScript Marco Camurri 1 JavaScript E' un LINGUAGGIO DI PROGRAMMAZIONE che consente di inserire codice in una pagina web Sintassi simile a Java (e al C), ma NON E'
DettagliEccezioni Precisazioni e approfondimenti
Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di
DettagliStruttura dei programmi C
Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte
DettagliModulo 2: Strutture fondamentali della programmazione Java
Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Un semplice programma Java: Presentazione di un primo Esempio; Introduzione alla struttura; Compilazione ed esecuzione. Argomenti
DettagliEreditarietà. Ereditarietà. Ereditarietà. Ereditarietà
L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe
Dettagli1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio
soluzione di un problema 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio rappresentazioni disponibili in C++:
DettagliLa 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
DettagliR. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone
Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliJava Native Interface Appunti
Java Native Interface Appunti Riccardo Rizzo 1/8 Introduzione L'uso delle Java Native Interface e' giustificato tutte quelle volte che una applicazione non puo' essere scritta interamente in Java. Per
DettagliL Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento
DettagliEsempio 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
DettagliInformatica I. Ingegneria Medica. Prof. Diego Salamon
Informatica I Ingegneria Medica Prof. Diego Salamon Java: Classi e Oggetti Prof. Diego Salamon Metafore Classi e Oggetti sono un astrazione della realtà. I linguaggi orientati agli oggetti contengono livelli
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
DettagliSubtype Polymorphism. Conversioni di tipo. Conversioni di tipo. Subtyping. Conversioni di tipo. Interfacce e subtype polimorfismo
Subtype Polymorphism Interfacce e subtype polimorfismo Tipi, sottotipi e conversioni di tipo Polimorfismo e dinamic dispatch Conversioni di tipo Variabile: locazione con un tipo associato Tipo della variabile
DettagliIl potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliUso di metodi statici. Walter Didimo
Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un
DettagliOggetti Composti (1) Oggetti Composti (2)
Oggetti Composti () Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi dei riferimenti ad oggetti di qualche classe
DettagliNon ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
DettagliTipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:
Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere
DettagliPuntatori in C Lucidi della Pof.ssa Pazienza
Puntatori in C Lucidi della Pof.ssa Pazienza http://www.uniroma2.it/didattica/foi2/ Puntatori L operatore di indirizzo & Indirizzi, puntatori Aritmetica dei puntatori L operatore di dereferenziazione *
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x
Dettagli18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliLINGUAGGI DI PROGRAMMAZIONE!
LINGUAGGI DI PROGRAMMAZIONE! Il potere espressivo di un linguaggio è! caratterizzato da:! quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente)! quali istruzioni
Dettagli