1 Incapsolamento (intro) Sandro Pedrazzini Approfondimento Incapsolamento (introduzione)

Slides:



Advertisements
Presentazioni simili
Costruttori e Distruttori
Advertisements

Programmazione Ingegneria TLC
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Date in Javascript.
Appunti a cura di Giovanni Cantone, con la collaborazione di Anna Lomartire e la partecipazione di Giuseppe Calavaro 1 06/06/2006UNIROMA2-ING OOP Programmazione.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) JAVA: i commenti Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Esercitazione 2 (3 dicembre 2008)
1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)
Introduzione al linguaggio Java
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Overriding.
Soluzione Esercizio - Classe Vettore
Oggetti e dati primitivi Programmazione Corso di laurea in Informatica.
Approfondimento delle classi
Selezione (=scelta) con “if-else”
Programmazione con Interfacce
Java base IV: Java e la programmazione O.O.
CLASSI ASTRATTE L’ereditarietà porta riflettere sul
Introduzione a:. Nella prima parte di questo corso si vedranno i CONCETTI di: CLASSE (programma) METODO (Algoritmi e dati) CONCETTI CLASSICI DI PROGRAMMAZIONE.
Programmazione in Java Claudia Raibulet
Java Contardi Carlo A.S. 2008/09.
Prova di verifica Fondamenti Informatica 1 15 Febbraio 2008.
1 Incapsolamento (cont) Sandro Pedrazzini Approfondimento Incapsulamento (continuazione)
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
Diagramma di flusso del problema del Supermercato.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
© M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti A.A GESTIONE DEL TESTO.
Diagramma di flusso del problema del Calcolo del Bollo di Circolazione
Programmazione concorrente
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
1 Interfacce e polimorfismo Sandro Pedrazzini Approfondimento Interfacce e polimorfismo.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Conversione da base 10 a base X (Utilizzo della pila)
Corso di Programmazione in Java – Esercizio n° 001
Diagramma di flusso del problema dello stipendio del rappresentante.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Approfondimenti sulle Classi.
Lezione n° 07 - Esercitazione
Date, Calendar, GregorianCalendar, SimpleDateFormat
1 Videopoker esempio di applicazione in java. 2 Videopoker Un giocatore, con un portofaglio iniziale il giocatore punta il banco da 5 carte il giocatore.
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Una "vera" classe.. ..un esempio pratico: la calcolatrice
Programmazione ad oggetti
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
30/11/2004Laboratorio di Programmazione - Luca Tesei1 Interfacce e Polimorfismo.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Javascript e le date Esiste un oggetto Date() Di default, un oggetto Date contiene la data e l'ora corrente Ci sono vari metodi get per avere informazioni.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Capitolo 12 Thread Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Gestione dei thread in Java
Programmazione in Java
Fondamenti di informatica T-A Esercitazione 3 : Classi, metodi, visibilità, metodi statici AA 2012/2013 Tutor : Domenico Di Carlo.
28/12/2001package 1 Package Pacchetti e interfacce.
Stringhe in Java. Definire una stringa. Definire una stringa in Java Il modo più semplice e diretto per creare un oggetto di tipo String è assegnare alla.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

1 Incapsolamento (intro) Sandro Pedrazzini Approfondimento Incapsolamento (introduzione)

2 Incapsolamento (intro) Sandro Pedrazzini Motivazione Importanza dellincapsulamento nella programmazione OO Ruolo degli elementi interface Qualità delle classi e delle interfacce Non solo le relazioni tra classi sono importanti nello sviluppo, ma anche la buona manufattura di ogni singola classe Classi utili e riutilizzabili

3 Incapsolamento (intro) Sandro Pedrazzini Classe Date Molti programmi hanno la necessità di elaborare informazioni relative alla data In Java esiste la classe java.util.Date Date date = new Date(); System.out.println(date);

4 Incapsolamento (intro) Sandro Pedrazzini Metodi di Date boolean after(Date date); boolean before(date date); int compareTo(Date anotherDate); long getTime(); //millisecondi da void setTime();

5 Incapsolamento (intro) Sandro Pedrazzini Esempio Date date = Calendar.getInstance().getTime(); date.setTime(0); System.out.println(date); // date.setTime( ); //valore long System.out.println(date); // date.setTime( ); System.out.println(date); // In realtà, da quando è stata inserita la classe Calendar, si tratta più di una classe Time (istante di tempo) che di una classe Date.

6 Incapsolamento (intro) Sandro Pedrazzini Ordinamento totale Con due oggetti di tipo Date è possibile chiedersi quale dei due preceda laltro Gli istanti di tempo sono dotati di ordinamento totale, implementati dai metodi after() e before() t1.after(t2) corrisponde a t1.getTime() > t2.getTime()

7 Incapsolamento (intro) Sandro Pedrazzini Altre informazioni (1) Date non permette però di ottenere informazioni relative al mese, anno di appartenenza, ecc. (in realtà lo permetteva, ma i metodo sono ora dichiarati deprecated). La responsabilità di determinare queste informazioni è affidata alla classe GregorianCalendar (calendario introdotto da Papa Gregorio XIII nel 1582 con la correzione dellalgoritmo sugli anni bisestili, già comunque presenti nella forma più semplice nel calendario giuliano derivante da Giulio Cesare). La classe GregorianCalendar conosce i dettagli e le complicazioni (30 giorni ha novembre,...) dei nostri calendari.

8 Incapsolamento (intro) Sandro Pedrazzini Altre informazioni (2) Il fatto di separare le informazioni di GregorianCalendar da Date (che rappresenta in effetti unicamente un istante di tempo) è un buon esempio di progettazione, perché esistono molte descrizioni di tempo: –Calendario Gregoriano: 3 febbraio 2001 –Calendario della Rivoluzione francese: Année 209 de la République, Mois de Pluviôse, 2 Jour du Quintidi –Calendario Maya:

9 Incapsolamento (intro) Sandro Pedrazzini Responsabilità La responsabilità che spetta a GregorianCalendar è quella di assegnare descrizioni agli istanti di tempo. Un istante di tempo è neutro, mentre la sua descrizione può essere fatta in vari modi (ad esempio attraverso una nuova classe MayanCalendar). È questo il motivo per cui, almeno nelle intenzioni, è utile avere una classe astratta Calendar, da cui classi concrete come GregorianCalendar possano ereditare.

10 Incapsolamento (intro) Sandro Pedrazzini Struttura Calendar GregorianCalendar Date

11 Incapsolamento (intro) Sandro Pedrazzini Metodi di Calendar Calendar specifica una serie di metodi generici (non legati a un calendario specifico)... public int get (int field) public void set(int field, int value) public void add(int field, int increment) public Date getTime() public void setTime(Date date)

12 Incapsolamento (intro) Sandro Pedrazzini Realizzazione: classe Day Realizzazione di una classe Day del calendario gregoriano Un oggetto di tipo Day rappresenta un giorno Evitiamo di rendere espliciti dettagli di implementazione, come inizio dei tempi (epoch, 1 gennaio 1970), utilizzato da Date Prevede metodi di utilità quali: –Quanto manca alla fine dellanno? –Quale giorno sarà tra 50 giorni? –Quanti giorni ci sono dalla data X alla data Y?

13 Incapsolamento (intro) Sandro Pedrazzini Operazioni public int daysFrom(Day start) // numero di giorni da start ad ora public Day addDays(int days) // aggiunta di un numero di giorni

14 Incapsolamento (intro) Sandro Pedrazzini Utilizzo public static void main(String[] args){ Day today = Calendar.getInstance().getTime(); Day later = today.addDays(999); System.out.println(later.getYear() + "-" + later.getMonth() + "-" + later.getDate()); System.out.println(later.daysFrom(today)); // 999 }

15 Incapsolamento (intro) Sandro Pedrazzini Utilizzo (2) Eventuale modo ancora più neutro public static void main(String[] args){ Day today = Calendar.getInstance().getTime(); Day later = today.addDays(999); System.out.println(later.get(year) + "-" + later.get(month) + "-" + later.get(day)); System.out.println(later.daysFrom(today)); // 999 }

16 Incapsolamento (intro) Sandro Pedrazzini Realizzazione 1 In una prima realizzazione possibile, lo stato di un oggetto viene rappresentato da variabili di istanza anno, mese, giorno public class Day{ private int fYear; private int fMonth; private int fDay; public Day(int year, int month, int day){ fYear = year; fMonth = month; fDay = day; } public int getDay(){ return fDay; }...