Definizione di una classe
|
|
- Celia Tosi
- 7 anni fa
- Visualizzazioni
Transcript
1 Definizione di una classe ffl Creazione di una classe class LaMiaClasse {... ffl Creazione di una sottoclasse class LaMiaClasse extends LaMiaSuperClasse {... ffl Se la classe realizza una specifica interfaccia class LaMiaClasse implements Runnable {... CREAZIONE DI APPLICAZIONI 1 Definizione di variabili di istanza, di costanti e di variabili di classe Le variabili di istanza sono dichiarate in una definizione di classe, esternamente alle dichiarazioni di metodi (si distinguono dalle variabili locali sulla base della loro posizione, poichè le variabili locali sono dichiarate all interno dei metodi). class Bicycle extends PersonPoweredVehicle { String biketype; int chaingear; int rearcogs; Le costanti (final), variabili con un valore che non viene mai modificato, possono essere solo variabili di istanza o di classe, mai variabili locali. final float pi = final int LEFT = 0 ; final boolean debug = false; final int RIGHT = 1; final int maxsize = 40000; final int CENTER = 2; Non esistono i costrutti #define e const del C e C++. Le variabili di classe (static) appartengono a tutti gli oggetti della classe, non alle singole istanze. static int sum; static final int maxobjects = 10; CREAZIONE DI APPLICAZIONI 2
2 Creazione di un metodo I metodi definiscono i comportamenti degli oggetti. La definizione di un metodo richiede la definizione di: ffl un nome ffl un tipo (oggetto, o primitivo, o void) che il metodo ritorna ) se ritorna un oggetto di un certo tipo, nel corpo del metodo deve essere presente una istruzione return ffl una lista di parametri ) i parametri sono variabili locali nel corpo del metodo ffl il corpo del metodo CREAZIONE DI APPLICAZIONI 3 Creazione di un metodo Esempio class RangeClass { int[] makerange (int lower, int upper) { int arr[] = new int[ (upper - lower) + 1 ]; for (int i = 0; i < arr.length; i++) { arr[i] = lower++; return arr; La segnatura (signature) è la combinazione di ffl nome del metodo ffl tipo del valore che ritorna ffl lista di parametri ) la segnatura identifica in modo univoco un metodo (non basta il nome!) CREAZIONE DI APPLICAZIONI 4
3 La parola chiave this Permette di far riferimento all oggetto corrente nel corpo della definizione di un metodo. t = this.x; // assegna a t la variabile di istanza x //di questo oggetto this.mymethod(this); // chiama il metodo mymethod definito in questa // classe, passandogli questo oggetto come parametro return this; // ritorna l oggetto corrente ffl È implicito quando si fa riferimento a variabili di istanza o a metodi. t = x; mymethod(this); ffl this si riferisce all istanza corrente ) non ha senso usarlo per i metodi o le variabili di classe CREAZIONE DI APPLICAZIONI 5 Visibilità delle variabili Quando si fa riferimento ad una variabile nella definizione di un metodo, Java cerca la definizione della variabile: 1. all interno del blocco di istruzioni che contiene la variabile (variabile locale) 2. all interno del metodo che contiene il blocco (variabile locale) 3. all interno della classe che contiene il metodo (variabile di istanza o di classe) 4. all interno di tutte le superclassi antenate della classe corrente ) Definizioni successive di variabili con lo stesso nome di variabili già presenti possono nascondere le variabili di livello gerarchico superiore. CREAZIONE DI APPLICAZIONI 6
4 Visibilità delle variabili: esempio class ScopeTest { int test = 10; void print_test () { System.out.println("test = " + test); void printtest () { int test = 20; System.out.println("test = " + test); public static void main (String arg[]) { ScopeTest obj = new ScopeTest(); obj.print_test(); obj.printtest(); obj.print_test(); ) L uso della parola chiave this permette di risolvere l ambiguità tra variabili locali e variabili d istanza o di classe. CREAZIONE DI APPLICAZIONI 7 Passaggio di parametri ai metodi ffl I tipi primitivi sono passati per valore (by value). ffl Gli oggetti sono passati per indirizzo (by reference). ) sono modificati gli oggetti originali CREAZIONE DI APPLICAZIONI 8
5 Esempio: passaggio di parametri ai metodi class PassByReference { int OnetoZero (int arg[]) { int count = 0; for (int i = 0; i < arg.length; i++) { if (arg[i] == 1) { count++; arg[i] = 0; return count; public static void main (String arg[]) { int arr[] = { 1, 3, 4, 5, 1, 1, 7 ; PassByReference test = new PassByReference(); int numones; System.out.print("Values of the array: [ "); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); System.out.println("]"); numones = test.onetozero(arr); System.out.println("Number of Ones = " + numones); System.out.print("New values of the array: ["); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); System.out.println(" ]"); Values of the array: [ ] Number of Ones = 3 New values of the array: [ ] CREAZIONE DI APPLICAZIONI 9 Metodi di classe I metodi di classe sono definiti mediante la parola chiave static. static int max (int arg1, int arg2) {... ffl sono utilizzabili anche in assenza di una istanza della classe ffl Esempio: metodi di classe forniti nelle librerie Java. nella classe Math float root = Math.sqrt(453.0); System.out.print("The larger of x and y is " + Math.max(x,y)); nella classe Integer int count = Integer.parseInt("42", 10); // ritorna 42 CREAZIONE DI APPLICAZIONI 10
6 Creazione di una applicazione Java Una applicazione Java è composta da una o più classi; può essere molto semplice o molto elaborata (ad esempio il browser HotJava). Per ottenere una applicazione funzionante ffl Una classe costituisce il punto di partenza dell applicazione ffl La classe di partenza deve contenere il metodo main(), la cui segnatura è: public static void main (String arg[]) {... ffl Il metodo main è eseguito quando inizia l esecuzione dell applicazione main() è un metodo di classe ) la classe che lo contiene non è automaticamente istanziata CREAZIONE DI APPLICAZIONI 11 Passaggio di parametri ad applicazioni Il passaggio dei parametri avviene semplicemente scrivendo i parametri sulla linea di comando dopo il nome dell applicazione. java MyProgram argument1 2 three java myprogram "Java e carino" ffl I parametri sono memorizzati in un array di stringhe, che è passato come parametro al metodo main() dell applicazione. ffl Java non controlla in modo automatico che sia passato all applicazione il numero corretto di parametri. Se necessario, ciò va fatto nel codice dell applicazione. CREAZIONE DI APPLICAZIONI 12
7 Passaggio di parametri ad applicazioni ffl Esempio: class EchoArgs { public static void main(string args[]) { for (int i=0; i < args.length; i++) { System.out.println("Argument" + i + ": " + args[i]); ffl Al contrario del linguaggio C, args[0] contiene il primo parametro, non il nome del programma! ffl I parametri sono stringhe! ) per trattarli in modo diverso, bisogna convertirli CREAZIONE DI APPLICAZIONI 13 Polimorfismo dei metodi Java prevede l overloading dei metodi: si possono creare metodi con lo stesso nome ma con diversa segnatura e diversa definizione. L overloading dei metodi permette di: ffl mantenere una interfaccia più semplice verso altri oggetti (non sono definiti metodi diversi che facciano più o meno la stessa cosa) ffl avere comportamenti diversi a seconda dei parametri di ingresso del metodo Per creare un metodo overloaded, è sufficiente creare metodi diversi con lo stesso nome ma con una lista di parametri differente. A fronte di una chiamata ad un metodo, Java cerca il metodo con la segnatura corretta (stesso nome, numero e tipo di parametri) ed esegue il codice corrispondente. Attenzione: Il tipo del parametro di ritorno non conta! CREAZIONE DI APPLICAZIONI 14
8 import java.awt.point; class MyRect { int x1 = 0; int y1 = 0; int x2 = 0; int y2 = 0; Un esempio di overloading void printrect(){ System.out.print("MyRect: <" + x1 + ", " + y1); System.out.println(", " + x2 + ", " + y2 + ">"); public static void main (String args[]) { MyRect rect = new MyRect(); MyRect buildrect(int x1, int y1, int x2, int y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; return this; MyRect buildrect(point topleft, Point bottomright) { x1 = topleft.x; y1 = topleft.y; x2 = bottomright.x; y2 = bottomright.y; return this; MyRect buildrect(point topleft, int w, int h) { x1 = topleft.x; y1 = topleft.y; x2 = (x1 + w); y2 = (y1 + h); return this; System.out.println("Calling buildrect with coordinates 25,25 50,50:"); rect.buildrect(25, 25, 50, 50); rect.printrect(); System.out.println(" "); System.out.println("Calling buildrect with points (10,10), (20,20):"); rect.buildrect(new Point(10,10), new Point(20,20)); rect.printrect(); System.out.println(" "); System.out.print("Calling buildrect with 1 point (10,10),"); System.out.println(" width (50) and height (50)"); rect.buildrect(new Point(10,10), 50, 50); rect.printrect(); System.out.println(" "); CREAZIONE DI APPLICAZIONI 15 I metodi costruttori Un metodo costruttore è un metodo speciale che esegue l inizializzazione di un oggetto. Il costruttore è un metodo che inizializza una istanza di una classe ffl inizializza le variabili dell oggetto ffl crea eventuali altri oggetti necessari ffl esegue tutte le operazioni necessarie alla vita dell oggetto Quando si crea una nuova istanza di un classe con una chiamata new,java ffl alloca la memoria necessaria per l oggetto ffl inizializza le variabili di istanza dell oggetto (al valore iniziale o di default) ffl chiama il metodo costruttore della classe ) se il metodo costruttore non è definito, Java inserisce un metodo costruttore di default (senza argomenti) che chiama il costruttore della classe gerarchicamente superiore CREAZIONE DI APPLICAZIONI 16
9 I metodi costruttori: ffl hanno sempre lo stesso nome della classe ffl non hanno un valore di ritorno I metodi costruttori class Persona { String nome; int eta; Persona (String n, int a) { nome = n; eta = a; public static void main (String args[]) { Persona p; p = new Persona("Laura", 20); Se il nuovo metodo costruttore da definire aggiunge alcune inizializzazioni specifiche, ma condivide il comportamento di un altro metodo costruttore della stessa classe ) inserire una chiamata a questo metodo, utilizzando il costrutto: this(arg1, arg2, arg3) È possibile avere overloading anche dei metodi costruttori. CREAZIONE DI APPLICAZIONI 17 Metodi costruttori: esempio import java.awt.point; class MyRect2 { int x1 = 0; int y1 = 0; int x2 = 0; int y2 = 0; MyRect2(int x1, int y1, int x2, int y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; MyRect2(Point topleft, Point bottomright) { x1 = topleft.x; y1 = topleft.y; x2 = bottomright.x; y2 = bottomright.y; MyRect2(Point topleft, int w, int h) { x1 = topleft.x; y1 = topleft.y; x2 = (x1 + w); y2 = (y1 + h); void printrect(){ System.out.print("MyRect: <" + x1 + ", " + y1); System.out.println(", " + x2 + ", " + y2 + ">"); CREAZIONE DI APPLICAZIONI 18
10 Metodi costruttori: esempio public static void main (String args[]) { MyRect2 rect; System.out.println("Calling MyRect2 with coordinates 25,25 50,50:"); rect = new MyRect2(25, 25, 50,50); rect.printrect(); System.out.println(" "); System.out.println("Calling buildrect w/points (10,10), (20,20):"); rect= new MyRect2(new Point(10,10), new Point(20,20)); rect.printrect(); System.out.println(" "); System.out.print("Calling buildrect w/1 point (10,10),"); System.out.println(" width (50) and height (50)"); rect = new MyRect2(new Point(10,10), 50, 50); rect.printrect(); System.out.println(" "); CREAZIONE DI APPLICAZIONI 19 Ereditarietà di un metodo class PrintClass { int x = 0; int y = 1; void printme() { System.out.println("X is " + x + ", Y is " + y); System.out.println("I am an instance of class " + this.getclass().getname()); class PrintSubClass extends PrintClass { int z=3; public static void main (String arg[]) { PrintSubClass obj = new PrintSubClass(); obj.printme(); X is 0, Y is 1 I am an instance of the class PrintSubClass CREAZIONE DI APPLICAZIONI 20
11 Overriding di un metodo Se creo in una sottoclasse un metodo con la stessa segnatura di un metodo di una delle superclassi, il metodo originale non saràpiù eseguito per le istanze di oggetti della classe. ) Permette di modificare il comportamento di un metodo. Esempio: se volessi stampare anche il valore della variabile di istanza z, potrei usare un overriding del metodo printme(). class PrintSubClass2 extends PrintClass { int z=3; void printme() { System.out.println("X is " + x + ", Y is " + y + ", Z is " + z ); System.out.println("I am an instance of class " + this.getclass().getname() ); public static void main (String arg[]) { PrintSubClass2 obj = new PrintSubClass2(); obj.printme(); Xis0,Yis1,Zis3 I am an instance of the class PrintSubClass2 CREAZIONE DI APPLICAZIONI 21 Overriding di un metodo ) Permette di aggiungere comportamenti a quelli forniti da un altro metodo. Esempio: per evitare la duplicazione del codice nei due metodi printme(), posso richiamare il metodo della superclasse all interno della sottoclasse, usando la parola chiave super. // from PrintClass void printme() { System.out.println("I am an instance of class " + this.getclass().getname() ); System.out.println("X is " + x); System.out.println("Y is " + y); // from PrintSubClass2 void printme() { super.printme(); System.out.println("Z is " + z); I am an instance of the class PrintSubClass2 Xis0 Yis1 Zis3 CREAZIONE DI APPLICAZIONI 22
12 Overriding di un costruttore? Tecnicamente non è possibile: poiché i costruttori hanno lo stesso nome della classe, tutte le volte che si crea una sottoclasse si definisce un nuovo costruttore. Ogni volta che si crea una istanza di una classe sono chiamati (implicitamente) i costruttori di tutte le superclassi ) è chiamato il costruttore di default senza parametri È possibile richiamare all interno del costruttore della sottoclasse il costruttore della superclasse, utilizzando la parola chiave super. ) è possibile specificare quale tra i costruttori delle superclassi utilizzare ) si possono modificare le inizializzazioni fatte sulle variabili di istanza proprie delle superclassi import java.awt.point; class NamedPoint extends Point { String name; NamedPoint (int x, int y, String name) { super(x,y); this.name = name; CREAZIONE DI APPLICAZIONI 23 Metodo finalizer È il metodo chiamato da Java quando, durante la fase di garbage collection, si elimina un oggetto e si libera la memoria fino ad allora occupata dall oggetto. Per creare un metodo finalizer, si crea un metodo con la seguente segnatura: void finalize() {... Il metodo finalize() viene chiamato automaticamente solo nel momento in cui la memoria occupata dall oggetto è davvero liberata, non nel momento in cui tutti i riferimenti ad esso sono scomparsi. È possibile chiamare il metodo finalize() in modo esplicito all interno di un programma ) questo non significa liberare la memoria occupata dall oggetto che sarà automaticamente liberata da Java solo quando tutti i riferimenti correnti all oggetto sono cancellati Il metodo finalize() serve soprattutto per cancellare riferimenti ad altri oggetti puntati dall oggetto che si vuole cancellare. CREAZIONE DI APPLICAZIONI 24
Programmazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
DettagliEsempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo
Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il
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
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
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
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 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
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
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
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
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
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.
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/
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
DettagliI costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard
I costruttori Servono a inizializzare i valori dei campi degli oggetti. Vengono invocati automaticamente dopo che l oggetto è stato creato. Il costruttore standard Questo tipo di costruzione mette dei
DettagliPrincipi di Progettazione del Software. Principi di Progettazione del Software a.a
Principi di Progettazione del Software a.a. 2016-2017 Fondamenti di Java Ing. Principi di Progettazione del Software https://twitter.com/rvergallo 2 1 Obiettivi della lezione Introduzione alla programmazione
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
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
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
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
DettagliEredità e Polimorfismo in Java
Eredità e Polimorfismo in Java Corso di Linguaggi di Programmazione ad Oggetti 1 A.A. 2003/04 A cura di Definizione di Classe Java è un linguaggio object-oriented per cui il costrutto fondamentale è quello
DettagliFondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso
Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso AA 2015/2016 Tutor: Vincenzo Lomonaco vincenzo.lomonaco@unibo.it Programma Introduzione al calcolatore
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
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:
DettagliRiassunto. La programmazione OO. Oggi. Esempio
Riassunto La programmazione OO Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 17 29 novembre
DettagliPolimorfismo parametrico vs polimorfismo per inclusione
Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico
DettagliLaboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
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
DettagliIl linguaggio Java: aggiunte in Java 1.5
.. Il linguaggio Java: aggiunte in Java 1.5 Una breve presentazione GENERICI Java 1.5 introduce i generici: classi che hanno un parametro di tipo. Nelle versioni precedenti a Java 1.5 si può definire:
DettagliDefinizione di classi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E05 Definizione di classi A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 1 Contenuti
DettagliProgrammazione Java: Variabili membro, Metodi La parola chiave final
Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave
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
DettagliLezione 13 Classi interne
Lezione 13 Classi interne Questa lezione chiude la parte del corso più squisitamente dedicata alla programmazione orientata agli oggetti con Java. Sarà esaminato un nuovo tipo di classi, finora taciuto,
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
DettagliINTRODUZIONE INTRODUZIONE JAVA JAVA
INTRODUZIONE INTRODUZIONE Lo sviluppo di applicazioni complesse porta a costruire moduli software sempre più potenti e versatili, che possano essere riutilizzati in numerosi progetti I linguaggi ad oggetti
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
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
DettagliCorso di Programmazione a oggetti
Corso di Programmazione a oggetti Overloading delle funzioni e parametri di default a.a. 2014/2015 Francesco Fontanella Overloading delle funzioni In C++, è possibile dare a funzioni diverse lo stesso
DettagliClassi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
DettagliProgrammazione è gestione di eventi
FUNZIONI Ed Eventi Programmazione è gestione di eventi Evento 1 (tasto premuto) Evento 2 (mouse) Evento 3 (cambio frame) Oggetto Evento 4 (fine di un brano audio) Azioni per evento 1 1. Azione 1 2. Azione
DettagliCapitolo 5 - Funzioni
Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente
DettagliAlgebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
DettagliClassi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
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
DettagliProgrammazione a Oggetti Lezione 10. Ereditarieta
Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare
DettagliSerializzazione Java. Serializzazione. Calendario esercitazioni e laboratori. Applicazioni della Serializzazione
Calendario esercitazioni e laboratori 29 Marzo esercitazione 12 Aprile esercitazione 26 Aprile laboratorio (lab721) 2 Maggio laboratorio (lab721) 3 Maggio esercitazione 9 Maggio laboratorio (???) 17 Maggio
DettagliOggetti e classi. Cos è un oggetto
Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,
DettagliProgrammazione Java: Polimorfismo
Programmazione Java: Polimorfismo romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Polimorfismo» Upcasting» Selezione dei metodi» Comportamento dei metodi polimorfi dentro i costruttori»
DettagliCorso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 8 luglio 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
DettagliClassi astratte e progettazione OOP Esempio: l enciclopedia degli animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
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
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)
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
DettagliJava Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java
programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class
DettagliEsempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
DettagliFondamenti di Informatica I
Sapienza Università di Roma, Facoltà di Ingegneria Corso di Fondamenti di Informatica I Canale 1 (A-K) Anno Accademico 2009-2010 Corso di Laurea in Ingegneria Informatica Docente: Camil Demetrescu Esercitatore:
DettagliRETI DI CALCOLATORI Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione
DettagliEreditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Ereditarietà e Polimorfismo Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Ereditarietà L ereditarietà è lo strumento che permette di costruire nuove classi utilizzando
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
DettagliLinguaggi 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
DettagliIntroduzione. Java. Esempio. Esempio
Java polimorfismo G. Prencipe prencipe@di.unipi.it Introduzione È un altro degli ingredienti fondamentali della OOP Permette di organizzare il codice e la leggibilità e di ottenere programmi estensibili
DettagliFunzioni costruttore e istanza di un'oggetto
Funzioni costruttore e istanza di un'oggetto Solitamente si dice che un oggetto è un'istanza di una classe. In Javascript non esistono classi ma funzioni costruttore che sono abbastanza simili. Per instanziare
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: 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
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
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
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
DettagliIntroduzione a Classi e Oggetti
Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto
DettagliLaboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 7 Settembre 2010 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Ristorante. La classe Tavolo ha i seguenti attributi: numero
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
DettagliCapitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.
1 Capitolo 6 - Array Array Array Gruppo di locazioni di memoria consecutive Stesso nome e tipo Per riferirsi a un elemento, specificare Nome dell array Posizione Formato: arrayname[ position number ] Primo
Dettagli24 - Possibili approfondimenti
24 - Possibili approfondimenti 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
DettagliParcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento
Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate
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
Dettagli/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }
import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO
DettagliEsempio: L EURO-CONVERTITORE (1) Scopo
Esempio: L EURO-CONVERTITORE (1) Scopo Realizzare un sistema software per la conversione di euro in lire. In particolare, si vuole, definire un euro-covertitore e, dati due oggetti di tipo euro convertitore
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
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 Incapsulamento Polimorfismo e overloading Esercizi svolti Esercizi proposti Paradigma OO Nella programmazione tradizionale,
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Eccezioni Categorie di eccezioni checked unchecked Gestione delle eccezioni Clausola throws Costrutto try - catch - finally Comando
DettagliIl C nel C++: Funzioni
Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma
DettagliCorso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Esercizi sui metodi Carla Limongelli Maggio 2010 Esercizi 1 Passaggio di parametri di tipo primitivo Indicare che cosa viene visualizzato sullo
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliFunzioni e. Alessandra Giordani Mercoledì 16 maggio 2012
Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni
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
DettagliRefactoring 5 Sposta Metodo. 5 Sposta Metodo. 5 Sposta Metodo - Codice iniziale
Refactoring Un metodo sta usando più caratteristiche (attributi e operazioni) di un altra classe che non quella in cui è definito Crea un nuovo metodo con un corpo simile nella classe che il metodo usa
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliIntroduzione. Java. Costruttore
Java inizializzazioni e pulizia G. Prencipe prencipe@di.unipi.it Introduzione Uno dei problemi principali nella programmazione è legato alla sicurezza Due principali aspetti di questo problema sono l inizializzazione
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
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 *
DettagliProssime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1
Prossime lezioni Dai TDA agli oggetti Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 18 19 gennaio
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
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
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
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à
DettagliErrata Corrige di Manuale di Java 8
Errata Corrige di Manuale di Java 8 pag. 43 - par. 2.5.1 - primo riquadro che riporta linee di codice public class Punto { public Punto() //metodo costruttore { deve essere corretto come di seguito: public
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
DettagliModificatori di visibilità
Modificatori di visibilità Attenzione nell overriding dei metodi: la restrizione di visibilità può essere allentata, ma mai resa più restrittiva. In particolare non si può ridefinire come privato un metodo
DettagliCorso di Informatica
Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio
DettagliCompito di Programmazione, 22 marzo 2007 INFORMATICI E MULTIMEDIALI
Compito di Programmazione, 22 marzo 2007 INFORMATICI E MULTIMEDIALI Esercizio 1 Si consideri la seguente classe che specifica liste di interi: public class List { private int head; private List tail; public
Dettagli