La classe Object. L2-Linguaggi di Programmazione II-unina 1
|
|
- Erica Meloni
- 7 anni fa
- Visualizzazioni
Transcript
1 La classe Object L2-Linguaggi di Programmazione II-unina 1
2 JAVA è dotata di una classe speciale, una classe cosmica, denominata Object Qualsiasi altra classe deriva da Object Object Una variabile di tipo Object puo riferirsi a qualsiasi tipo Tutti gli array, sia di oggetti che di tipi primitivi, sono classi che derivano da Object. Employee[] staff = new Employee[10]; obj = staff; //== OK obj = new int[10]; //== OK L2-Linguaggi di Programmazione II-unina 2
3 Il metodo getclass Il metodo getclass restituisce un oggetto di tipo Class che contiene informazioni sulla classe dell oggetto (nome, metodi, modificatori, ) Es. L2-Linguaggi di Programmazione II-unina 3
4 Il metodo equals Il metodo equals di Object serve a determinare se un oggetto è uguale ad una altro Implementazione: verifica se gli oggetti hanno la stessa referenza Tutti le classi hanno quindi a disposizione un metodo equals che controlla le referenze Se necessario può essere richiesto di personalizzare il metodo equals per controllare che lo stato degli oggetti corrisponda es L2-Linguaggi di Programmazione II-unina 4
5 Il metodo equals e l ereditarietà Il metodo equals è utilizzabile per classi in relazione di ereditarietà? Le specifiche del linguaggio Java richiedono che il metodo equals abbia le seguenti proprietà: Riflessività x.equals(x) -> true (x!=null) Simmetria : x.equals(y) -> true y.equals(x) ->true Transitività : if x.equals(y) -> AND y.equals(z) ->true => x.equals(z) ->true E consistente : se gli oggetti i x e y non cambiano allora le successive chiamate x.equals(y) restituiscono sempre lo stesso valore. X!=null, x.equals(null) -> false. L2-Linguaggi di Programmazione II-unina 5
6 La regola di simmetria ha pero delle conseguenze importanti quando i parametri appartengono a differenti classi. Per esempio class Manager extends Employee { public void setbonus(double b) { bonus = b; } private double bonus; } /* es 0 */ L2-Linguaggi di Programmazione II-unina 6
7 Possibile implementazione di equals public boolean equals(object otherobject) { if (this == otherobject) return true; if (otherobject == null) return false; if (!(otherobject instanceof Employee)) return false; Employee other = (Employee) otherobject; return (name.equals(other.name) && salary == other.salary && hireday.equals(other.hireday)); } /* 1 */ L2-Linguaggi di Programmazione II-unina 7
8 e.equals(m) SE e è un oggetto di tipi impiegato e m un oggetto di tipo Manager, se tutti e due hanno lo stesso nome, salario, e data di assunzione VALE TRUE. Employee.equals effettua un test instanceof, il metodo restituisce ancora true per le sottoclassi m.equals(e) deve restituire true per la regola di simmetria, e non puo restituire false o sollevare una eccezione. In questo modo un manager è uguale ad un suo omonimo impegato! Es /* 1 */ L2-Linguaggi di Programmazione II-unina 8
9 Uso del metodo getclass Per bloccare il confronto tra classi che non sono dello stesso tipo, si potrebbe utilizzare il metodo getclass In questo modo pero si blocca la possibilità di uguaglianza tra un oggetto di una classe ed un altro di una sottoclasse L2-Linguaggi di Programmazione II-unina 9
10 equals versione 2 /* 2 */ public boolean equals(object otherobject) { if (this == otherobject) return true; if (otherobject == null) return false; if (getclass()!= otherobject.getclass()) return false; Employee other = (Employee) otherobject; return (name.equals(other.name) && salary == other.salary && hireday.equals(other.hireday)); } L2-Linguaggi di Programmazione II-unina 10
11 Un metodo equals che si basi su invocazioni getclass potrebbe violare a sua volta il principio di sostituzione. E il caso della classe AbstractSet che verifica se due insiemi hanno gli stessi elementi, nello stesso ordine. La classe AbstractSet ha due sottoclassi concrete, TreeSet e HashSet, che usano algoritmi diversi per l'individuazione di elementi set. L2-Linguaggi di Programmazione II-unina 11
12 Una soluzione potrebbe essere dichiarare equals di AbstractSet.equals final, per impedire di ridefinire la semantica dell uguaglianza di set equality. In generale, se la relazione di uguaglianza non cambia nelle sottoclassi, va dichiarata final, altrimenti si lascia la possibilità di definire metodo equals piu appropriati ed efficienti per le sottoclassi. L2-Linguaggi di Programmazione II-unina 12
13 Possiamo individuare due scenari distinti. Se le sottoclassi hanno il proprio distinto metodo equals, allora è opportuno usare getclass per preservare la relazione di simmetria Se invece il metodo equals è fissato nella super-classe si può usare instanceof come test consentendo però alle sottoclassi diverse di essere uguali tra loro. L2-Linguaggi di Programmazione II-unina 13
14 Una possibile metodologia per scrivere i metodi equals equals(object otherobject) può essere sviluppata in passi 1) If (otherobject è null) return false; 2) if (otherobject == null) return false; 3) if (this == otherobject) return true; 4) Confronta le classi di this e di otherobject. Se il significato di equals puo cambiare nelle sotto classi, usa il test getclass: if (getclass()!= otherobject.getclass()) return false; Se invece la semantica di equals non cambia nelle sottoclassi si puo usare istanceof if (!(otherobject instanceof ClassName)) return false; L2-Linguaggi di Programmazione II-unina 14
15 5) Cast otherobject ad una variabile della classe corrente: ClassName other = (ClassName) otherobject Ora si possono confrontare i campi, come richiesto dal significato attuale di equals. Usare == per i tipi primitive, equals per gli oggetti. return field1 == other.field1 && field2.equals(other.field2) &&...; Se si ridefinisce equals nelle sottoclassi, si include super.equals(other) Es L2-Linguaggi di Programmazione II-unina 15
16 class Employee { String name; double salary; Date hireday; public boolean equals(object otherobject) { if (this == otherobject) return true; if (otherobject == null) return false; if (getclass()!= otherobject.getclass()) return false; } } Employee other = (Employee) otherobject; return name.equals(other.name) && salary == other.salary && hireday.equals(other.hireday); L2-Linguaggi di Programmazione II-unina 16
17 Perché 1) public boolean equals(object otherobject) e non 2) public boolean equals(employee otheremployee) Perché è preferibile gestire l uguaglianza tra oggetti e non lasciarla alla implementazione di Object.equals L2-Linguaggi di Programmazione II-unina 17
18 Per rafforzare la volontà di specificare un metodo di una super classe JAVA 5 ha messo a disposizione la (es) Il compilatore ci avvisa se eseguiamo correttamente l ovveride L2-Linguaggi di Programmazione II-unina 18
19 Il metodo hashcode Il metodo hashcode restituisce un numero che identifica un oggetto. Se x e y sono due distinti oggetti, x.hashcode() e y.hashcode() dovrebbero essere differenti. L implementazione di hashcode di Object si basa sull indirizzo di memoria Per Le stringe si adopera un algoritmo per calcolare l hash code: int hash = 0; for (int i = 0; i < length(); i++) hash = 31 * hash + charat(i); L2-Linguaggi di Programmazione II-unina 19
20 Se si ridefinisce il metodo equals di una classe, dovrebbe essere ridefinito anche il metodo hashcode di un oggetto class Employee { public int hashcode() { return 7 * name.hashcode() + 11 * new Double(salary).hashCode() + 13 * hireday.hashcode(); }... } Le definzioni di equals e hashcode devono essere coerenti Se x.equals(y) allora x.hasccode()=y.hashcode() L2-Linguaggi di Programmazione II-unina 20
21 Perché 1) public boolean equals(object otherobject) e non 2) public boolean equals(employee otheremployee) Perché è preferibile gestire l uguaglianza tra oggetti e non lasciarla alla implementazione di Object.equals L2-Linguaggi di Programmazione II-unina 21
22 Il metodo tostring Il metodo tostring restituisce una stringa che rappresenta lo stato dello oggetto. Il metodo tostring di Object converte in stringa l hashcode ) Una tipica implementazione del metodo tostring presenta il nome della classe seguita dai valori dei campi racchiusi tra parentesi quadre: public String tostring() { return "Employee[name=" + name + ",salary=" + salary + ",hireday=" + hireday + "]"; } Si puo usare il metodo getname di Class per ottenere direttamente il nome della classe public String tostring() { return getclass().getname() + "[name=" + name + ",salary=" + salary + ",hireday=" + hireday + "]"; } L2-Linguaggi di Programmazione II-unina 22
23 Il metodo tostring ti una sottoclasse puo utilizzare e precisare il metodo della super Classe class Manager extends Employee {... public String tostring() { return super.tostring() + "[bonus=" + bonus + "]"; } } Manager[name=...,salary=...,hireDay=...][bonus=...] Nel caso di una conversione automatica a String di un oggetto (es all interno di una concatenzione con stringhe effettuata con + ) il compilatore java ricorre automaticamente al metodo tostring Point p = new Point(10, 20); String message = "The current position is " + p; The current position is (10,20) L2-Linguaggi di Programmazione II-unina 23
24 Il metodo clone Se la semplice assegnazione di un variabile ad una classe assegna il riferimento alla classe, per ottenere una duplicazione della classe la classe Object mette a disposizione il metodo clone Employee original = new Employee("J.Smith", 50000); Employee copy = original; copy.raisesalary(10); //---- Employee copy = original.clone(); copy.raisesalary(10); L2-Linguaggi di Programmazione II-unina 24
25 protected Object clone() throws CloneNotSupportedException Il metodo clone consente di clonare un oggetto. La JVM crea un nuovo spazio di memoria, e copia in esso l oggetto originale, campo x campo. Se i campi sono tipi primitivi avviene una semplice assegnazione. Se i campi sono oggetti, vengono copiati i riferimenti, che rimangono condivisi ( copia superficiale ) L2-Linguaggi di Programmazione II-unina 25
26 cloning e = employee name = name hiredate = salary = String name e1 = employee name = name hiredate = salary = Date name L2-Linguaggi di Programmazione II-unina 26
27 La clonazione superficiali potrebbe essere sufficiente, in quanto alcuni oggetti sono immutabili (es String) Gli oggetti immutabili non possono cambiare il loro stato dopo la loro costruzione Per i vari i casi si puo decidere di volta in volta se è piu opportuna una copia superficiale o una copia profonda L2-Linguaggi di Programmazione II-unina 27
28 Sebbene definito in object, il metodo clone deve essere in realtà definito. In Object clone è definitivo protected Visibilità protected class A { protected Metodo() } La visibilità protected prevede che il Metodo protected di una classe A è visibile da B quando B si trova nello stesso pacchetto di A (visibilità default di pacchetto) oppure se B estende A, l'accesso al Metodo avviene tramite un riferimento di tipo dichiarato B o suo sottotipo. Questo fa si che una classe puo invocare Clone direttamente solo per clonare i propri oggetti /* es */ L2-Linguaggi di Programmazione II-unina 28
29 Clausola throws di clone L'eccezione CloneNotSupportedException è di tipo checked. clone lancia questa eccezione se l'oggetto this non implementa l'interfaccia Cloneable. L interfaccia Clonable non ha nessuna conseguenza sulla effettiva implementazione. E una annotazione che che stabilisce che la classe può estendere sovrascrivere il medodo clone di object (ed usarlo) L'eccezione checked, l interfaccia Clonable e alla visibilità protected, vogliono assicura alla clonazione una serie di requisiti per rendere il suo utilizzo consapevole. Quando si ridefinisce il metodo clone la clausa throws, puo essere disabilitata (anche per le sottoclassi). L2-Linguaggi di Programmazione II-unina 29
30 Copia superficiale vs copia profonda Non c e una regola che stabilisce quando preferire una copia superficiale ad una copia profonda. Si deve valutare di volta in volta. Nel caso Employee, ci potrebbero essere un oggetto membro di tipo classe company (che possiede indicazioni sul fatturato, numero dipendenti, ecc) ed un oggetto membro di tipo board (pensione), che potrebbero richiedere rispettivamente una clonazione superficiale ed una profonda. L2-Linguaggi di Programmazione II-unina 30
Ereditarietà (ultima)
Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...
DettagliIl linguaggio Java. La superclasse universale Object
Il linguaggio Java La superclasse universale Object La classe Object La classe Object è la superclasse, diretta o indiretta, di ogni classe La classe Object definisce lo stato ed il comportamento base
DettagliUguaglianza e copia di oggetti
Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La
DettagliLa classe Object. Ce li ha anche HelloWorld!!!
La classe Object Ogni classe estende implicitamente la classe java.lang.object La classe java.lang.object contiene dei metodi che vengono implicitamente ereditati I metodi ereditati sono: clone equals
DettagliCloneNotSupportedException clone() Object clone() protected native Object clone() throws CloneNotSupportedException this
Clonazione Importante esempio di eccezione controllata è CloneNotSupportedException che può essere lanciata dal metodo nativo clone() della classe Object. La dichiarazione di clone() è la seguente: protected
DettagliJava: tipi (im)mutaibili. Metodi equals e clone
Java: tipi (im)mutaibili. Metodi equals e clone Mutabilità Un tipo è mutabile (mutable) se ha dei metodi che possono modificare ilrep, altrimenti è detto immutabile (immutable). della classe! Il metodo
Dettagli16 - Ereditarietà, tipi e gerarchie
16 - Ereditarietà, tipi e gerarchie 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
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
DettagliConfronti, equals. Operatori Relazionali, confronti Confronti fra Oggetti, ridefinizione di equals. Laboratorio di Programmazione - Luca Tesei
Confronti, equals Operatori Relazionali, confronti Confronti fra Oggetti, ridefinizione di equals 1 Operatori relazionali All interno delle parentesi tonde della condizione dell if è possibile, come abbiamo
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:
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
DettagliOrganizzazione della lezione. Organizzazione della lezione. Lezione 5 Programmazione generica e eccezioni
Organizzazione della lezione Lezione 5 Programmazione generica e eccezioni Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di
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
DettagliProgrammazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
DettagliClassi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array
Classi e array Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Si vuole definire una classe Polinomio per la rappresentazione di polinomi a
DettagliProgrammazione II Compitino (Vers. B)
Programmazione II Compitino (Vers. B) 17 dicembre 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi
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),
DettagliESERCIZI JAVA. Esercizi sulle Interfacce. Esercizio 1:
ESERCIZI JAVA Esercizi sulle Interfacce Esercizio 1: Java mette a disposizione un'interfaccia chiamata Comparable. Quando un oggetto implementa questa interfaccia esso può implementare un metodo chiamato
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
DettagliE' un meccanismo per estendere classi esistenti, aggiungendo altri metodi e campi.
Ereditarietà Ereditarietà E' un meccanismo per estendere classi esistenti, aggiungendo altri metodi e campi. class SavingsAccount extends BankAccount nuovi metodi nuove vbl istanza Tutti i metodi e le
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
DettagliIndice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
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
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
DettagliSavingsAccount. BankAccount
BankAccount public class BankAccount { private double balance; public BankAccount(){ this(0); public BankAccount(double initialbalance) { balance = initialbalance; public void deposit(double amount) {
DettagliMarco Faella Clonazione di oggetti. Confronto tra oggetti.
Marco Faella Clonazione di oggetti. Confronto tra oggetti. 8 Lezione n. Parole chiave: Java v.1.1 Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com
DettagliEsempi in Java di program.ne O-O
Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico
DettagliJava: Definire Classi e Creare Oggetti
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 21 marzo 2014 Introduzione Programmare con gli Oggetti Un programma Java è costituito
DettagliOCA JAVA 8 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 8 SE PROGRAMMER
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
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
DettagliRiferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio)
Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Riferimenti ad oggetti: Cosa si può fare con i riferimenti?
DettagliFondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array
Fondamenti di Informatica L-B Esercitazione n 5 Java: Interfaccia Comparable, Array A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Interfaccia Comparable L altra volta abbiamo
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,
DettagliL ereditarieta` Riuso del software: Ereditarieta`, Composizione, Polimorfismo e Binding Dinamico Ereditarietà Ereditarietà
L ereditarieta` Programmazione in Rete e Laboratorio Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino Riuso del software: Ereditarieta`, Composizione,
DettagliEsempio 2: Subtyping
Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione
DettagliProgrammazione 2 - Marco Ronchetti. Fondamenti di Java. Fac.Scienze Università di Trento. Static
1 Fondamenti di Java Static 2 Modificatori: static Variabili e metodi associati ad una Classe anziche ad un Oggetto sono definiti static. Le variabili statiche servono come singola variabile condivisa
DettagliSOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria
Sapienza - Università di Roma Facoltà di Ingegneria Requisiti Corso di PROGETTAZIONE DEL SOFTWARE I (Corso di Laurea in Ingegneria Informatica) Prof. Giuseppe De Giacomo Canali A-L & M-Z A.A. 2006-07 Compito
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 08 Ereditarietà A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Ereditarietà 1 Contenuti!Livelli di astrazione
DettagliJava. Ereditarieta RIUSO DEL CODICE
Java Ereditarieta RIUSO DEL CODICE Durante lo sviluppo di codice frequentemente i programmatori sviluppano codice molto simile a codice gia esistente Questo, spesso, viene fatto manipolando il codice esistente
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
DettagliIntroduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011
13 aprile 2011 Cos è una collezione? Gerarchia delle collezioni Introduzione Una collezione è semplicemente un oggetto che raggruppa più oggetti (detti elementi della collezione) in una singola unità.
DettagliIn questa lezione. Polimorfismo
In questa lezione Polimorfismo (in Java) Tipo statico e tipo dinamico dei reference Binding dinamico (late binding) Casting (Upcasting e Downcasting) Operatore instanceof Polimorfismo con Object Polimorfismo
DettagliProgrammazione Orientata agli Oggetti. Collezioni: Insiemi generici
Programmazione Orientata agli Oggetti Collezioni: Insiemi generici Concetti introdotti L'interface Set Criteri equivalenza tra elementi HashSet Tavole Hash (intuizione) hashcode(), equals() TreeSet
DettagliCorso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso)
1) Si considerino le classi Java: Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso) class Card Card (String seed, int value) this.seed=seed; this.value=value; String seed; int
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
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/
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
DettagliArray di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa Array di array A. Miola Febbraio 8 http://www.dia.uniroma.it/~java/fondinf/ Array di array Contenuti Array bidimensionali creazione
DettagliCorso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona
di Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona su Sommario di su di di di su Astrazione sugli oggetti di su Il concetto di classe Classe: realizza l astrazione
DettagliProgrammazione II Compitino (Vers. B)
Programmazione II Compitino (Vers. B) 15 gennaio 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi
DettagliLaboratorio di Programmazione Anno Accademico La classe Object. Stampa di oggetti e funzione tostring()
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.
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
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:
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
DettagliGESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
Dettaglipublic static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
Dettaglidomenica 9 giugno 13 Serializzazione
Serializzazione A cosa serve? Ad ottenere una rappresentazione di una struttura dati che possiamo memorizzare, trasmettere via rete Cosa possiamo serializzare? OK NO Tipi primitivi, Riferimenti stringhe
DettagliProgrammazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
DettagliLinguaggi di programmazione II AA 2010/2011 Esercitazione 2
Linguaggi di programmazione II AA 2010/2011 Esercitazione 2 1) Scrivere l'output del seguente programma Java public class Bean private String str; Bean(String str ) this.str = str; public String tostring()
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
DettagliCapitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73
Capitolo 9 Tipi enumerativi, tipi generici e interfacce c 2005 Pearson Education Italia Capitolo 9-1 / 73 Sommario: Tipi enumerativi, tipi generici e interfacce 1 Definizione di tipi enumerativi La classe
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
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
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
Dettaglise invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point
Gli HashSet Tipo predefinito che rappresenta insiemi di Object Cosa succede se... Posso mettere un riferimento a un Point in una variabile Object Object o=new Point(12,3); è quasi tutto come se l oggetto
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
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
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 T-1. Costruttori Ereditarietà
Costruttori Ereditarietà 2 Costruttori Si occupano della creazione e dell'allocazione in memoria degli oggetti. public class Persona{ //Variabili di istanza private String nome; private String cognome;
DettagliCorso di Progettazione del Software
T. Mancini & M. Scannapieco S.JOO.4 Java: uguaglianza superficiale e profonda February 2, 2008 p. 1/31 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale
DettagliIl Linguaggio Java. Le interfacce
Il Linguaggio Java Le interfacce Ordinamento dei conti PROBLEMA: si vogliono ordinare i libretti di risparmio (SavingsAccount) in base al loro tasso di interesse REQUISITO: La classe dovrebbe essere ordinabile,
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
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
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
Dettagli3. Il sistema dei tipi I tipi wrapper
3. Il sistema dei tipi I tipi wrapper Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II Il sistema dei tipi Il inguaggio
DettagliProgettazione del Software
Progettazione del Software Simulazione di esame Domenico Fabio Savo Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Sapienza Università di Roma Anno Accademico 2015/2016
DettagliProgrammazione Java: Ereditarietà, Classe Object, Argomenti a riga di comando, Numeri come oggetti
Programmazione Java: Ereditarietà, Classe Object, Argomenti a riga di comando, Numeri come oggetti romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Ereditarietà» super» Binding dinaminco»
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
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
DettagliArray. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere
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
DettagliCapitolo 10 - Strutture
1 Capitolo 10 - Strutture Strutture In molte situazioni, una variabile non è sufficiente per descrivere un oggetto. Ad esempio, una posizione sul piano cartesiano è identificata da due coordinate, e la
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
DettagliEccezioni. Comportamento di default (esempio) Propagazione delle eccezioni
Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di
DettagliLe basi del linguaggio Java
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del
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
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
DettagliCorso di Fondamenti di Informatica I
Corso di Fondamenti di Informatica I Generics in Java Fabio Patrizi, Silvia Bonomi Dipartimento di Ingegneria Informatica, Automatica e Gestionale Facoltà di Ingegneria dell Informazione, Informatica e
DettagliBank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...
Bank BankAccount Bank Bank Bank BankAccount private BankAccount[] conti; // Posizione attuale private int posizioneattuale;... Bank Bank public Bank(String nome, String internationalcode, int dimensione)
DettagliProgrammazione ad oggetti
DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Classi astratte Le classi astratte sono un ibrido tra le classi concrete e le interfacce. Hanno le stesse caratteristiche di una
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)
DettagliClassi astratte. Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura
Classi astratte Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura Rettangolo getarea() Quadrato getarea() getarea() Cerchio
Dettagli3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;
Un esempio di definizione di classe con array di oggetti Sia data la classe StudUniv per gli studenti universitari (definita in una lezione precedente). Scrivere una nuova classe Corso, dove ciascun corso
DettagliIntroduzione. Java RTTI RTTI. Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime
Java riconoscere i tipi G. Prencipe prencipe@di.unipi.it Introduzione Il run-time type identification è quella parte di Java che si occupa di controllare i tipi a runtime In particolare determina il tipo
DettagliINPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte)
INPUT OUTPUT 2004-05 Le operazioni di I/O avvengono attraverso stream (sequenze di byte) programma stream in lettura sorgente Programmazione in rete e laboratorio programma stream in scrittura destinazione
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliVariabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliProgrammazione ad oggetti Prova scritta 15 Gennaio 2013
Programmazione ad oggetti Prova scritta 15 Gennaio 2013 Nome: Matricola: Istruzioni Scrivete il vostro nome sul primo foglio. Scrivete le soluzioni nello spazio riservato a ciascun esercizio. Studenti
DettagliCorso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli.
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 16 Tipi riferimento e stringhe Carla Limongelli Maggio 2010 Definizione di metodi 1 Contenuti Tipi riferimento Stringhe e oggetti String
Dettagli