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

Documenti analoghi
Introduzione a Java. Riferimenti

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

3) Descrivere l architettura di un elaboratore tramite astrazione a livelli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Le basi del linguaggio Java

Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Java e i Tipi di dati primitivi. Parte 3

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Tipi di dato F n o d n am ent en ali

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

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

Marco Faella Introduzione al corso

Programmazione in Java (I modulo) Lezione 4

Introduzione alla programmazione. Alice Pavarani

Esonero di Informatica I. Ingegneria Medica

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Introduzione alla Programmazione in Java attraverso un esempio commentato

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

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

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

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

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

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

Lezione 6 Introduzione al C++ Mauro Piccolo

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Fondamenti di Informatica T-1. Introduzione al linguaggio Java Input/output, variabili, tipi

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

14 - Metodi e Costruttori

Basi della programmazione in Java

Array. Definizione e utilizzo di vettori

4 - Tipi di dato primitivi

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

Programmazione con Java

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

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Lezione 5: Introduzione alla programmazione in C

Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java

Corso sul linguaggio Java

Programmazione a oggetti

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

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

AMBIENTI DI PROGRAMMAZIONE

Programmazione ad Oggetti. Java Parte II

Fondamenti di informatica T-1 (A K) Esercitazione 8: classi e oggetti

Programmazione Orientata agli Oggetti in Linguaggio Java

Il concetto di Package

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

IL LINGUAGGIO JAVA. Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per scrivere frasi ben formate

Java Gli array. Array

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

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione

Linguaggio C - sezione dichiarativa: costanti e variabili

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Capitolo 2 GOCCE DI JAVA. Domande a risposte multiple

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Fondamenti di Informatica T-1

Informatica 7. appunti dalle lezioni del 20 e 22/10/2010

Dati due punti sul piano calcolare la loro distanza

Primi passi col linguaggio C

Introduzione Programmazione Java

Java. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Il linguaggio Java è un linguaggio di programmazione ad alto livello

Java. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto

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

Introduzione a C# Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

ALGORITMI E STRUTTURE DATI

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Programmazione Orientata agli Oggetti in Linguaggio Java

Java. Java: compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Lezione 9 programmazione in Java Classi come contenitori

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Introduzione al C. Informatica Generale - Introduzione al C Versione 1.0, aa p.1/17

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

Fondamenti di Informatica T-1

Linguaggi di Programmazione

Una classe Borsellino. Tipi numerici di base - Costanti. Esempio d uso. Classe Borsellino cont d. Primi passi per l implementazione di Purse

Metodi statici. Dichiarazione e chiamata di metodi statici

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

La Gestione della Memoria. Carla Binucci e Walter Didimo

Programmazione in Java (I modulo)

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

Tipi numerici di base - Costanti

Modulo 2: Strutture fondamentali della programmazione Java

Transcript:

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 di Java In Java, ogni valore è di un qualche tipo (o anche di più tipi, come un cavallo è un ente di tipo animale ma anche di tipo mammifero, o un quadrato è una figura di tipo rombo ma anche di tipo rettangolo) Programmazione I B - a.a. 2009-10 2 1

I tipi di Java tipi primitivi: boolean 1 bit true, false tipi numerici tipi interi con segno: byte 8 bit da -128 a 127 short 16 bit da -32768 a 32767 int 32 bit da ~ -2 miliardia ~ 2 miliardi long 64 bit... miliardi di miliardi... assoluti: char 16 bit da 0 a 65535 tipi con virgola mobile (floating point) float 32 bit ~ 7 cifre decimali significative double 64 bit ~ 15 cifre decimali signific. Programmazione I B - a.a. 2009-10 3 tipi di riferimenti a oggetti: tipi di riferimenti a oggetti di una data classe, o tipi-classe: String (classe fornita col linguaggio) JOptionPane (classe fornita con il JDK) Conto (classe definita dal programmatore) Dipendente (classe definita dal programmatore)... tipi di riferimenti ad array, o tipi-array: int[] (array di valori di un tipo primitivo) double[] (array di valori di un tipo primitivo) String[] (array di oggetti di una data classe) Conto[] (array di oggetti di una data classe)... Programmazione I B - a.a. 2009-10 4 2

Esiste un terzo genere di tipi di riferimenti a oggetti, i tipi-interfaccia, che non studieremo in questo corso. Quindi, riassumendo, i tipi di Java sono: tipi primitivi: boolean tipi numerici tipi di riferimenti a oggetti: tipi di riferimenti a oggetti di una data classe, o tipi-classe tipi di riferimenti ad array di elementi di un dato tipo (ricorda: gli array sono oggetti, quindi una variabile di tipo array contiente un indirizzo) tipi di riferimenti a oggetti di una data interfaccia Programmazione I B - a.a. 2009-10 5 NOTA BENE I nomi di classe servono sia da nomi di programma che da tipi; un programma è (la realizzazione di) un tipo. Programmazione I B - a.a. 2009-10 6 3

Riferimenti a oggetti di una data classe Se UnaClasse è il nome di una classe predefinita oppure definita dal programmatore, la valutazione di un espressione new UnaClasse(...) dove UnaClasse(...) sia una corretta invocazione di un costruttore, crea nello heap un oggetto e restituisce il riferimento a tale oggetto (cioè il suo indirizzo). Tale riferimento potrà essere memorizzato in una opportuna variabile, oppure passato come argomento ad un opportuno metodo, ecc. In generale, un espressione new si troverà quindi in istruzioni della forma: UnaClasse unoggetto;... unoggetto = new UnaClasse(...); Programmazione I B - a.a. 2009-10 7 Riferimento nullo Fra i particolari valori di tipo riferimento a oggetto vi è il riferimento nullo, indicato dalla costante null (corrispondente al nil del Pascal). Importante! Il riferimento nullo NON è il riferimento ad un oggetto nullo (non esistono oggetti nulli), bensì un valore che significa nessun riferimento, e che fisicamente è realizzata dal numero... provate a indovinare... sì, proprio dal numero zero. Quindi una variabile di tipo riferimento a oggetto, se contiene il valore null, è una variabile che in quell istante non si riferisce ad alcun oggetto. Ogni tentativo di accedere a campi o metodi dell oggetto da essa puntato genera un errore durante l esecuzione, la Null Pointer Exception (incontrerete le eccezioni piú avanti). La traduzione italiana di null reference come riferimento a nullo, che si trova in alcuni libri, è pertanto ERRATA. Programmazione I B - a.a. 2009-10 8 4

Ulteriori osservazioni sui tipi e su null Un tipo, in un linguaggio di programmazione, può essere pensato come un insieme. Gli elementi di un tale insieme, che sono degli enti astratti, sono i valori di quel tipo. Naturalmente tali enti astratti hanno, nella memoria del calcolatore, rappresentazioni concrete sotto forma di sequenze di bit. Nel linguaggio, nel nostro caso in Java, tali enti astratti sono rappresentati da costanti numeriche come 5, -21, 3.14, ecc., oppure da parole riservate come true e false. Attenzione: ricordare che non solo i numeri (interi, doubles, ecc.) sono valori; anche i booleani sono valori esattamente come i valori numerici; semplicemente non appartengono a un tipo numerico ma al tipo boolean. Analogamente, null è (il nome di) un valore esattamente come 5, true, o false. Semplicemente, esso non appartiene né a un tipo numerico né al tipo boolean, bens ì al tipo "riferimento a oggetto". Più precisamente, esso appartiene a tutti i tipi "riferimento a oggetto" (cioè riferimento ad oggetto di qualunque classe, o anche riferimento ad array). Si noti che null è l'unico valore di tale tipo che può essere scritto esplicitamente nel linguaggio: in un programma Java non possiamo scrivere esplicitamente l'indirizzo di un oggetto! Programmazione I B - a.a. 2009-10 9 Il tipo char Un carattere, in Java, è semplicemente un numero intero assoluto compreso fra 0 e 65535, il quale quando viene visualizzato per mezzo di opportuni metodi (ad es. System.out.println) viene scritto sotto forma di carattere. Ai caratteri si applicano quindi tutte le ordinarie operazioni numeriche, in particolare gli operatori di confronto <, <=, >, ==, ecc. Si possono anche fare somme, sottrazioni, moltiplicazioni, ecc. di caratteri, ma ovviamente non hanno molto senso! Esempio: le due assegnazioni char c = 'a'; char c = 97; hanno esattamente lo stesso effetto (ma la seconda è cattivo stile!) c = c + 3; System.out.println(c); // scrive il carattere 'd'; naturalmente è un uso sconsigliato! Esempio di uso degli operatori di confronto: String cognome = tastiera.next(); char iniziale = cognome.charat(0); if(iniziale >= A && iniziale < M) System.out.println("cognome appartenente al corso A"); Programmazione I B - a.a. 2009-10 10 5

Il tipo String Il tipostring è un tipo di riferimento a oggetto, infatti String è una classe predefinita di Java Una stringa è praticamente un array di caratteri Per esempio: String str = "abc"; è equivalente a: char data[] = {'a', 'b', 'c'}; String str = new String(data); Programmazione I B - a.a. 2009-10 11 La classe String Programmazione I B - a.a. 2009-10 12 6

Java: variabili Le variabili possono essere: variabili di classe (variabili globali,campi static) variabili d istanza (campi), cioè scatole, (strutture-dati) in cui ogni istanza di quella classe conserva i dati necessari ad eseguire le operazioni definite nella sua interfaccia variabili locali ai metodi Programmazione I B - a.a. 2009-10 13 Dichiarazioni di variabili locali di un metodo Hanno la stessa forma delle dichiarazioni dei campi static, ma senza il modificatore static; esse creano dei contenitori utilizzabili dal metodo. Una dichiarazione di variabile locale, poiché fa parte del corpo del metodo, viene eseguita soltanto quando il metodo viene invocato: le variabili locali pertanto non esistono e non sono visibili al di fuori del metodo. Esempio: static int myfun(int x, int y) { int t = 3*x - 4*y; return t*t*t; } public static void main(string args) { System.out.println(t); // ERRORE! Programmazione I B - a.a. 2009-10 14 7

Java: classi come generatori di oggetti Scrivere un programma in Java significa: Definire un certo numero di classi Per ogni classe, definire 1. Le proprietà della classe, cioè le strutturedati necessarie, cioè un insieme di campi (normalmente privati) che sono lo stato dell oggetto 2. Uno o più costruttori, cioè meccanismi per inizializzare istanze (oggetti) di quella classe 3. Uno o più metodi pubblici, cioè servizi, operazioniofferte dalla classe sullo stato 4. Eventualmente campi e metodistatic L'insieme dei costruttori e dei metodi pubblic rappresenta l'interfaccia della classe. Programmazione I B - a.a. 2009-10 15 Java: classi come contenitori di metodi Scrivere un programma in Java significa: Definire un certo numero di classi Per ogni classe, definire 1. Uno o più metodi static pubblici 2. Eventualmente variabili (campi) static L'insieme dei metodipubblic rappresenta l'interfaccia della classe. Programmazione I B - a.a. 2009-10 16 8

Ricordatevi! (I) Java e` il linguaggio (inteso come sintassi, ambiente di programmazione, librerie, ecc.): noi scriviamo codice in Java javac è il programma compilatore: traduce il file.java nel corrispondente file.class (che contiene il programma tradotto in bytecode) java è il programma inteprete: traduce il bytecode istruzione per istruzione e le fa eseguire alla macchina Il bytecode definisce la macchina virtuale Java (JVM = Java Virtual Machine) : architettura a livelli del calcolatore = 1 macchina fisica (bottom) + n macchine virtuali Programmazione I B - a.a. 2009-10 17 Ricordatevi! (II) Il file.class che sida in input all interprete java deve contenere una classe (class) che contenga un main (dichiarato esattamente come abbiamo visto negliesempi) Un programma Java può essere composto da piu classi, deve però esserci una sola classe contenente il main (quella da cui parte l esecuzione dell interprete java) In effetti abbiamo gia` visto programmi che usano piu classi (magari organizzate in package), anche se non scritte da noi (come la System per l output e la Scanner per l input) Programmazione I B - a.a. 2009-10 18 9