Linguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti.
|
|
- Orazio Randazzo
- 6 anni fa
- Visualizzazioni
Transcript
1 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 basate sugli oggetti (dati) che il sistema software manipola. PROGRAMMAZIONE AD OGGETTI (lucidi originali di Alberto Martelli) Matteo Baldoni Dipartimento di Informatica - Universita` degli Studi di Torino C.so Svizzera, I Torino (Italy) baldoni@di.unito.it - URL: Questa metodologia si contrappone a quella più tradizionale di sviluppare un programma secondo un approccio funzionale (programmazione strutturata). Linguaggi di Programmazione: Paradigmi di Programmazione 2 Programmazione 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, ) Progetto object oriented di software: costruzione di sistemi software come collezioni strutturate di implementazioni di tipi di dati astratti (B. Meyer) I principali linguaggi ad oggetti Simula: progettato nel capostipite dei linguaggi ad oggetti Smalltalk: linguaggio ad oggetti "puro" - linguaggio "dinamico non c'è controllo statico dei tipi C++: linguaggio "ibrido" - garantisce la compatibilità con il C Java: il più recente. Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi di Programmazione: Paradigmi di Programmazione 4 Java Java 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 Distribuito costrutti per la concorrenza 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 Linguaggi di Programmazione: Paradigmi di Programmazione 5 Linguaggi di Programmazione: Paradigmi di Programmazione 6 1
2 Oggetti Incapsulamento 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 Linguaggi di Programmazione: Paradigmi di Programmazione 7 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 Linguaggi di Programmazione: Paradigmi di Programmazione 8 Contatore Invio di Messaggi void iniz(int i ) void incr( ) void decr( ) int val( ) INTERFACCIA void iniz(int i ) {c=1; void incr( ) {++c; void decr( ) {--c; int val( ) {return c; IMPLEMENTAZIONE 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. B A esegui il metodo m1 CONTATORE Linguaggi di Programmazione: Paradigmi di Programmazione 9 Lo scambio di messaggi è l'unico modo di comunicare tra oggetti Linguaggi di Programmazione: Paradigmi di Programmazione 10 Invio di Messaggi Invio di Messaggi finestra bottone 1 display contatore invia valore di c 0 c esegui incr bottone bottone 2 invio di messaggio = invocazione di un metodo In Java, e altri linguaggi, si usa la notazione con il punto: oggetto.metodo( ) 10 int x,y;.incr();.decr(); x =.val(); y =.val(); x ha valore 4 e y ha valore 9 Linguaggi di Programmazione: Paradigmi di Programmazione 11 Linguaggi di Programmazione: Paradigmi di Programmazione 12 2
3 Invio di Messaggi Classi In un linguaggio tradizionale, per eseguire una operazione su un dato, dovremmo passare il dato come parametro: incr() o 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() o.iniz() I più diffusi linguaggi ad oggetti sono basati sul concetto di classe come insieme di oggetti con struttura e comportamento simili La classe definisce un tipo Istanza di una classe = oggetto della classe Classe Contatore Istanze 10 Linguaggi di Programmazione: Paradigmi di Programmazione 1 Linguaggi di Programmazione: Paradigmi di Programmazione 14 Classi in Java Classi in Java 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; Per realizzare information hiding si usano le parole riservate public - interfaccia private - implementazione Per il momento trascuriamo questo aspetto private public void iniz(int i) {c = i; public void incr() {++c; public void decr() {--c; public int val() {return c; Linguaggi di Programmazione: Paradigmi di Programmazione 15 Linguaggi di Programmazione: Paradigmi di Programmazione 16 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. Tipi Java è un linguaggio tipato: tutte le variabili hanno un tipo. Il tipo di una variabile deve sempre essere dichiarato e può essere: una classe un tipo primitivo Contatore cont; int x,y; char ch; Linguaggi di Programmazione: Paradigmi di Programmazione 17 Linguaggi di Programmazione: Paradigmi di Programmazione 18
4 Tipi di dato primitivi Come si crea un istanza 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 new Contatore() Crea un nuovo oggetto di tipo Contatore e ne restituisce il puntatore (handle) Tutti gli oggetti sono allocati dinamicamente (quando si esegue la new) e sono manipolati attraverso una handle (puntatore) (assegnamento, passaggio di parametri) Linguaggi di Programmazione: Paradigmi di Programmazione 19 Linguaggi di Programmazione: Paradigmi di Programmazione 20 Gestione della memoria Gestione della memoria Nella maggior parte dei linguaggi di programmazione le attivazioni di procedure sono gestite con uno stack (pila) Quando una procedura è chiamata, si inserisce un record di attivazione in cima alla pila, e lo si toglie quando l'esecuzione della procedura termina Un record di attivazione contiene le informazioni sul controllo (indirizzo di ritorno) ed i dati locali Possibilità di chiamate ricorsive di procedure Codice STATICA dati globali STACK record di attivaz. dati locali HEAP dati dinamici Linguaggi di Programmazione: Paradigmi di Programmazione 21 Linguaggi di Programmazione: Paradigmi di Programmazione 22 Recupero della memoria Allocazione dinamica Garbage collection (Scheme, Prolog, Java) Il programmatore può solo allocare dati dinamici Una procedura di sistema, il garbage collector, si preoccupa di recuperare tutte le aree di memoria nello heap non più raggiungibili in modo da poterle riutilizzare Altri linguaggi come Pascal o C lasciano al programmatore la responsabilità di recuperare la memoria, con possibilità di commettere errori Contatore, ; Linguaggi di Programmazione: Paradigmi di Programmazione 2 Linguaggi di Programmazione: Paradigmi di Programmazione 24 4
5 Allocazione dinamica Allocazione dinamica Contatore, ; = new Contatore(); = new Contatore();.iniz();.iniz(10); Contatore, ; = new Contatore(); = new Contatore();.iniz();.iniz(10); = ; 10 HEAP Questo oggetto non è più accessibile. Può essere recuperato dal garbage collector. 10 HEAP Linguaggi di Programmazione: Paradigmi di Programmazione 25 Linguaggi di Programmazione: Paradigmi di Programmazione 26 Puntatori Come si inizializza un oggetto 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) Linguaggi di Programmazione: Paradigmi di Programmazione 27 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. Linguaggi di Programmazione: Paradigmi di Programmazione 28 Costruttori Contatore(int i) {c = i; void incr() {++c; void decr() {--c; int val() {return c; costruttore L'oggetto viene inizializzato al momento della creazione, invocando automaticamente il costruttore. L istruzione Contatore = new Contatore(); crea un contatore e lo inizializza a. 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 Linguaggi di Programmazione: Paradigmi di Programmazione 29 Linguaggi di Programmazione: Paradigmi di Programmazione 0 5
6 Overloading di metodi THIS 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; Linguaggi di Programmazione: Paradigmi di Programmazione 1 Come può un oggetto mandare un messaggio a se stesso, ossia invocare un proprio metodo? Con la parola chiave this class A {... void p() {... void m() {... this.p();... si può anche scrivere solo p() this viene aggiunto dal compilatore In alcuni casi this è indispensabile Linguaggi di Programmazione: Paradigmi di Programmazione 2 THIS come costruttore this da solo indica un costruttore della stessa classe Contatore(int n) {c=n; Contatore() {this(10); void incr() {++c; void decr() {--c; int val() {return c; chiama il costruttore con un argomento (inizializza il contatore a 10) I tipi semplici non sono oggetti Contatore cont; cont = new Contatore(); int x = 10; I tipi semplici, come ad es. gli interi, non vengono allocati dinamicamente nello heap, a differenza di altri linguaggi "puri" come Smalltalk Esistono classi wrapper che trasformano tipi semplici in oggetti cont x HEAP Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi di Programmazione: Paradigmi di Programmazione 4 Array in Java Array in Java Gli array in Java sono oggetti che vengono allocati dinamicamente La dimensione è fissata al momento della creazione L'interprete controlla che gli indici siano sempre nell'intervallo specificato al momento della creazione Contatore cont[]; oppure Contatore[] cont; int num_giorni[]; oppure int[] num_giorni; num_giorni[1] darà errore a "runtime" cont = new Contatore[]; num_giorni = new int[12]; Linguaggi di Programmazione: Paradigmi di Programmazione 5 Linguaggi di Programmazione: Paradigmi di Programmazione 6 6
7 Array Array Contatore cont[]; Contatore cont[]; cont = new Contatore[]; cont cont Linguaggi di Programmazione: Paradigmi di Programmazione 7 Linguaggi di Programmazione: Paradigmi di Programmazione 8 Array Contatore cont[]; cont = new Contatore[]; cont[0] = new Contatore(10); Stringhe La libreria standard fornisce una classe predefinita String cont contatore 10 String s1 = "Buon"; String s2 = "giorno"; String saluto = s1 + s2; La stringa saluto ha valore: Buongiorno Il + indica concatenazione La classe String contiene numerosi metodi: String s = saluto.substring(0,4) //s ha valore "Buon" int n = saluto.length() // n vale 10 Linguaggi di Programmazione: Paradigmi di Programmazione 9 Linguaggi di Programmazione: Paradigmi di Programmazione 40 Stringhe Uguaglianza di stringhe Le stringhe sono immutabili Non ci sono metodi per cambiare un carattere in una stringa: occorre creare una nuova stringa s.equals(t) String s = "salve"; String t = "salve"; restituisce true se le due stringhe s e t sono uguali, false altrimenti dà true String s = "salve"; se vogliamo sostituire la e con una a String s = s.substring(0,4) + "a"; oppure String s = "salva"; s.equals(t) s == t non va bene usare l'operatore == darebbe false perché i valori di s e t sono due oggetti diversi, anche se hanno lo stesso valore Linguaggi di Programmazione: Paradigmi di Programmazione 41 Linguaggi di Programmazione: Paradigmi di Programmazione 42 7
8 Variabili e metodi di classe 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; Linguaggi di Programmazione: Paradigmi di Programmazione 4 Variabili e metodi di classe classe Conta numcontatori 2 c 5 Le variabili di classe sono visibili da tutte le istanze della classe. Sono variabili globali (per tutte le istanze di una classe). Linguaggi di Programmazione: Paradigmi di Programmazione 44 c 8 Variabili e metodi di classe Programmi in Java Una classe può essere considerata come un oggetto (di tipo Class) 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; Un programma in Java è una collezione di classi Una di queste deve contenere un metodo main L'esecuzione inizia dal main Il metodo main deve essere statico, perché altrimenti bisognerebbe creare un oggetto della classe Esempio prima di poterlo eseguire class Esempio { public static void main(string arg[]) { System.out.println("questo è un esempio"); Linguaggi di Programmazione: Paradigmi di Programmazione 45 Linguaggi di Programmazione: Paradigmi di Programmazione 46 Esecuzione di programmi: Interprete Esecuzione di programmi: Compilatore (traduttore) Progr. sorgente LS Interprete LM LS = ling. sorgente LM = ling. macchina Progr. sorgente LS Compilatore LM1 Progr. oggetto LM2 l'interprete esegue direttamente le operazione del progr. sorgente L'esecuzione mediante compilatore avviene in due fasi: traduzione da linguaggio sorgente a linguaggio macchina esecuzione del programma in linguaggio macchina Linguaggi di Programmazione: Paradigmi di Programmazione 47 Linguaggi di Programmazione: Paradigmi di Programmazione 48 8
9 Esecuzione di programmi: Soluzione Mista Vantaggi Progr. sorgente JAVA LM1 Compilatore Programma in ling. intermedio bytecode Interprete LM2 Compilazione (Pascal, C, Ada, C++): Efficienza di esecuzione. Il codice generato dal compilatore può essere ottimizzato, perché la compilazione è fatta una sola volta Interprete (JavaScript, Scheme, Prolog): Interazione. Più facile modificare un programma durante l'esecuzione Adottata da Java. Il linguaggio intermedio si chiama bytecode. Soluzione mista (Java): Portabilità. Per eseguire un programma su macchine diverse è sufficiente implementare l'interprete del linguaggio intermedio, e non tutto il compilatore Linguaggi di Programmazione: Paradigmi di Programmazione 49 Linguaggi di Programmazione: Paradigmi di Programmazione 50 Compilazione di un programma in Java Esecuzione di un programma in Java Si crea un file <nome_file>.java contenente una o più classi C1, C2, e lo si compila. > javac <nome_file>.java Si chiama l'interprete su una classe che contiene il main (Es. C1) > java C1 Il compilatore crea un file.class in codice intermedio (bytecode) per ogni classe contenuta nel file.java: L'interprete alloca questa classe e comincia ad eseguire il main. C1.class, C2.class,... Linguaggi di Programmazione: Paradigmi di Programmazione 51 Linguaggi di Programmazione: Paradigmi di Programmazione 52 Un programma completo Compilazione in Java Contatore(int n) {c=n; void incr() {++c; void decr() {--c; int val() {return c; > javac <nome_file>.java > java UsaCont Una unità di compilazione è un file.java che contiene delle definizioni di classi. Al massimo una di queste classi può essere public: in questo caso deve avere lo stesso nome del file (senza.java). class UsaCont { public static void main(string arg[]) { Contatore cont = new Contatore(5); cont.incr(); System.out.println("valore =" + cont.val()); Il compilatore produce un file.class per ogni classe nel file. L'interprete ha la responsabilità di caricare e interpretare questi file. Linguaggi di Programmazione: Paradigmi di Programmazione 5 Linguaggi di Programmazione: Paradigmi di Programmazione 54 9
Linguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti
LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE Anno Accademico 2000-2001 Alberto Martelli Programmazione ad Oggetti Parte I Linguaggi ad oggetti (object oriented) I linguaggi di programmazione
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
DettagliVariabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free
Variabili dinamiche Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free 1 Tipi di variabili in C In C è possibile classificare le variabili in
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliLa Gestione della Memoria. Carla Binucci e Walter Didimo
La Gestione della Memoria Carla Binucci e Walter Didimo Esecuzione di programmi Java L esecuzione di un programma Java richiede: la compilazione del codice Java in bytecode Java (un linguaggio macchina
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)
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
DettagliProgrammazione 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:
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
DettagliEsercitazione 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
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliCorso di Architettura degli Elaboratori
Corso di Architettura degli Elaboratori Introduzione: linguaggi, livelli e macchine virtuali Dipartimento di Informatica Università degli Studi di Torino C.so Svizzera, 185 I-10149 Torino baldoni@di.unito.it
DettagliStrutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
DettagliCorso 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
DettagliProgrammazione II. Lezione 7. Daniele Sgandurra 9/11/2010.
Programmazione II Lezione 7 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 9/11/2010 1/24 Programmazione II Lezione 7 9/11/2010 Sommario 1 Gestione della Memoria 2/24 Programmazione II Lezione 7 9/11/2010
DettagliUso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Uso di classi e oggetti Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Tipi di dati Tipi primitivi: interi Java fornisce otto tipi primitivi indipendenti dall implementazione
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
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
DettagliOCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER
Dettagli3) Descrivere l architettura di un elaboratore tramite astrazione a livelli
Di seguito sono elencati una serie di domande tipo esonero ; i quiz vogliono dare un sistema di autovalutazione e di confronto allo studente che deve prepararsi alla prova di metà corso. Il numero e l
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
DettagliEsonero di Informatica I. Ingegneria Medica
Di seguito sono elencati una serie di domande tipo esonero ; i quiz vogliono dare un sistema di autovalutazione e di confronto allo studente che deve prepararsi alla prova di metà corso. Il numero e l
DettagliProgrammazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
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
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
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
DettagliJava. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Il linguaggio Java è un linguaggio di programmazione ad alto livello
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 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
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.
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 -
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
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
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
DettagliLezione 9 programmazione in Java Classi come contenitori
Lezione 9 programmazione in Java Classi come contenitori Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Gestione della Memoria Dati dinamici e statici Il passaggio
DettagliA. 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),
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
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
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,
DettagliJava Gli array. Array
Java Gli array 1 Gli array In generale un array è una sequenza di locazioni di memoria, che contengono entità dello stesso tipo, e a cui si può fare riferimento con un nome comune Le entità che compongono
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.
DettagliProgrammazione Java Avanzata Programmazione Object- Oriented in Java
Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione
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
DettagliFondamenti 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
DettagliPrincipi di OOP con JAVA
Principi di OOP con JAVA lezioni 08 - gen - 2004 15 - gen - 2004 Tommaso Di Noia t.dinoia@poliba.it OOP (elementi) Programmazione Procedurale e Orientata agli Oggetti. FUNZIONI OGGETTI STRUTTURE DATI METODI
DettagliIntroduzione a Java. Giovanni Pardini Dipartimento di Informatica Università di Pisa.
a Java 1 Giovanni Pardini pardinig@di.unipi.it www.di.unipi.it/~pardinig Dipartimento di Informatica Università di Pisa 30 novembre 2009 1 2 3 1 Sintassi di base Hello World! Blocchi e variabili 2 Sintassi
DettagliFondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi Programmazione orientata a oggetti 1 Programmazione OO Concetti base: dati istruzioni Dati: variabili tipi Istruzioni: istruzioni base strutture di controllo
DettagliObject-Oriented Technology. Giuliano Armano 1
Object-Oriented Technology Giuliano Armano 1 Object Oriented Technology ADT + Eredità + Polimorfismo Object-Orientation Giuliano Armano 2 Terminologia Tipica Classica... Tipo di dato (astratto) = ADT Operazione
DettagliCostanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
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:: +,-,*,/,
DettagliLezione 11 programmazione in Java. Anteprima. Gestione della memoria
Lezione 11 programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Gestione della Memoria Dati dinamici e statici Il passaggio di parametri
DettagliStrutture 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
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
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.
DettagliLezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
DettagliAllocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
DettagliStrutture dati nel supporto a run time
Strutture dati nel supporto a run time 1 Entità presenti quando un programma va in esecuzione programmi d utente (compilati) routines del supporto interprete I/O, librerie, routines per la gestione delle
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
DettagliAstrazioni sui dati : Specifica di Tipi di Dato Astratti in Java
Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java 1 Specifica ed Implementazione di Tipi di Dato Astratti in Java cos è un tipo di dato astratto specifica di tipi di dati astratti un tipo
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
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
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
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)
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
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à
DettagliSpazio di indirizzamento virtuale
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){
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
Dettaglila traduzione dei programmi ed introduzione a Java
la traduzione dei programmi ed introduzione a Java programmi descrizioni di algoritmi effettuate tramite linguaggi di programmazione lo stesso algoritmo, fissato un linguaggio di programmazione, può essere
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
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
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
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
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 Laurea Ingegneria Informatica Laboratorio di Informatica
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente
DettagliDefinizione 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
DettagliFunzioni. (Passaggio dei parametri per riferimento) Passaggio dei parametri
Funzioni (Passaggio dei parametri per riferimento) Passaggio dei parametri Per passaggio dei parametri si intende l associazione fra parametri attuali e parametri formali che avviene al momento della chiamata
DettagliLa 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
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)
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito
Dettagli4 - Tipi di dato primitivi
4 - Tipi di dato primitivi 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
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
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
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
DettagliAllocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
DettagliTIPI PRIMITIVI E CLASSI WRAPPER
I tipi primitivi come oggetti Package java.lang In varie situazioni, può essere comodo poter trattare i tipi primitivi come oggetti per passarli per riferimento a una funzione quando una funzione pretende
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
DettagliLab 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,
DettagliObject-Oriented Programming
Object-Oriented Programming Una metodologia di programmazione che consente di modellare la realtà in modo più naturale e vicino all uomo Concetti fondamentali Oggetto Incapsulazione Messaggio Classe Ereditarietà
DettagliRiassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.
OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,
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));
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
DettagliLaboratorio di Programmazione Anno Accademico
Università di Roma La Sapienza, Facoltà di Ingegneria Corso di Laboratorio di Programmazione Anno Accademico 2004-2005 Corso di Laurea in Ingegneria Informatica Prof. Giuseppe De Giacomo (A L) & Prof.
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array 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 Corso di Laurea
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
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli email:emanuela.merelli@unicam.it Argomenti della lezione Elementi di un linguaggio
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni 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 Corso
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
DettagliAllocazione dinamica
Allocazione dinamica Quando non si sa a priori quanto un array debba essere grande allocazione dinamica di array Quando si deve restituire un array come risultato di una funzione (a meno di non barare
DettagliUnità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
DettagliProgrammazione 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