Programmazione. Android
|
|
|
- Bonaventura Battaglia
- 8 anni fa
- Просмотров:
Транскрипт
1 Lezione 8
2 Programmazione Android Ancora sulla UI Scrivere proprie View Scrivere propri Layout Stili e temi 19 Marzo
3 Scrivere una propria View 19 Marzo
4 Scrivere una propria View Gli elementi dell'interfaccia utente sono tutti sottoclassi di View View, ViewGroup, Layout, Widget Organizzati in un layout tramite file XML Per realizzare Widget custom, è sufficiente estendere View o una delle sue sottoclassi onmeasure() chiamato per negoziare le dimensioni ondraw() chiamato per disegnare l'effettiva UI OnKeyDown(), ontouchevent() & co. chiamati per gestire l'input 19 Marzo
5 Negoziare le dimensioni onmeasure(int widthspec, int heightspec) I parametri passati sono i requisiti che il contenitore vuole investigare onmeasure() deve fornire la risposta chiamando il metodo setmeasureddimension(int width, int height) In questo modo, si evita ogni allocazione di oggetti! Tipicamente, si chiama super.onmeasure() per lasciar fare alle superclasse, e poi si aggiusta il risultato in base alle proprie necessità La superclasse chiamerà setmeasureddimension() 19 Marzo
6 Specifiche di dimensione Gli argomenti interi passati a onmeasure() codificano un modo e una dimensione Nell'implementazione attuale, il modo è codificato dai due bit alti dell'intero, la dimensione dai rimanenti Meglio però usare getmode() e getsize() di View.MeasureSpec per estrarre i valori Modo (costanti definite in View.MeasureSpec) UNSPECIFIED il contenitore non impone restrizioni EXACTLY il contenitore impone esattamente la dimensione data AT_MOST il contenitore impone un massimo 19 Marzo
7 Specifiche di dimensione La nostra sottoclasse dovrà rispondere all'invocazione di onmeasure() specificando la sua dimensione preferita, nel rispetto dei vincoli In qualche caso, possiamo anche ignorare i vincoli in genere il contenitore effettuerà clipping Di solito, la nostra view vorrà anche rispettare la dimensione minima indicata dai metodi getsuggestedminimumheight() e getsuggestedminimumwidth() 19 Marzo
8 Specifiche di dimensione L'implementazione di default (in View) protected void onmeasure(int widthmeasurespec, int heightmeasurespec) { setmeasureddimension( getdefaultsize(getsuggestedminimumwidth(), widthmeasurespec), getdefaultsize(getsuggestedminimumheight(), heightmeasurespec) ); } In pratica: per default è 100x100, ma se lo spazio è elastico, si allarga fino a occuparlo tutto public static int int getdefaultsize(int size, int int measurespec) { int int result = size; int int specmode = MeasureSpec.getMode(measureSpec); int int specsize = MeasureSpec.getSize(measureSpec); switch (specmode) { case MeasureSpec.UNSPECIFIED: result = size; break; case MeasureSpec.AT_MOST: case MeasureSpec.EXACTLY: result = specsize; break; } return result; } 19 Marzo
9 Disegnare il proprio aspetto Il metodo ondraw() viene invocato quando la view deve disegnarsi (nello spazio che è stato negoziato dalla onmeasure()) A ondraw() viene passato un Canvas Una superficie di disegno (eventualmente bufferizzata) Il nostro codice può disegnare sul canvas usando una o più Paint vernici che specificano colore, trasparenza, tratteggi, font, ecc. 19 Marzo
10 Canvas Un Canvas è una superficie di disegno virtuale Non direttamente una bitmap! Supporta Primitive di disegno varie Geometriche Immagini Testo Clipping Matrici di trasformazione (rotazione, scalatura, ecc.) 19 Marzo
11 Laurence Gonsalves La pipeline di rendering 2D Un Canvas è un contenitore per chiamate grafiche In realtà, compie molte altre operazioni prima che il disegno finisca su una Bitmap Rendering di path, trasformazione secondo un PathEffect (arrotondamento degli angoli, tratteggio, ecc.) Rasterizzazione (alpha-channel, anti-aliasing, filling, blurring, ecc.) Shading (trasformazione di colori, gamma, ecc.) Trasferimento (il disegno parziale viene combinato con i precedenti contenuti della Bitmap di destinazione, con vari operatori) 19 Marzo
12 Metodi di Canvas Clipping clippath(), cliprect(), clipregion() Trasformazioni affini rotate(), scale(), translate(), skew(), concat(), setmatrix(), save(), restore() Primitive di disegno drawbitmap/picture() drawarc/circle/oval() drawcolor/paint/rgb/argb() drawline/lines/path/vertices() drawrect/roundrect() drawtext/postext/textonpath() Informative getwidth/height() GetMaximumBitmapWidth/Height() ishardwareaccelerated() isopaque() getdensity() getclipbounds(), getmatrix() 19 Marzo
13 Varianti Di ogni metodo sono disponibili molte varianti, spesso con overloading e utilità varie Esempi: void drawrect(float left, float top, float right, float bottom, Paint paint) void drawrect(rectf rect, Paint paint) void drawrect(rect r, Paint paint) void drawroundrect(rectf rect, float rx, float ry, Paint paint) 19 Marzo
14 Paint Un oggetto di classe Paint rappresenta una specifica completa del modo con cui una primitiva grafica (di Canvas) deve essere disegnata Proprietà più comuni Colore, alpha Dithering, antialiasing Font, hinting, stili Dimensione delle linee, tratteggio, cap, join Fornisce inoltre metodi per gestire la metrica del testo Ascent, descent, misure in font proporzionali, ecc. 19 Marzo
15 Costruttori della nostra view L'ultimo elemento mancante sono i costruttori View(Context c) Costruttore di base, associa la view al suo context (tramite il quale accedere, per esempio, alle risorse) View(Context c, AttributeSet attr) Costruttore chiamato quando la view viene creata a partire dalla specifica XML in un file di layout Da attr si possono ottenere i valori degli attributi, tramite metodi getter come getattribute<tipo>value(string namespace, String attributo, <tipo> valoredefault) View(Context c, AttributeSet attr, int stile) Costruttore che in aggiunta applica uno stile (identificato dal suo ID di risorsa) 19 Marzo
16 Costruttori della nostra view L'ultimo elemento mancante sono i costruttori View(Context c) Costruttore di base, associa la view al suo context (tramite il quale accedere, per esempio, alle risorse) View(Context c, AttributeSet attr) Manca il costruttore vuoto View(): non si può avere una view senza il suo contesto Costruttore chiamato quando la view viene creata a partire dalla specifica XML in un file di layout Da attr si possono ottenere i valori degli attributi, tramite metodi getter come getattribute<tipo>value(string namespace, String attributo, <tipo> valoredefault) View(Context c, AttributeSet attr, int stile) Costruttore che in aggiunta applica uno stile (identificato dal suo ID di risorsa) 19 Marzo
17 Esempio: CartaQuadretti Vogliamo realizzare una variante custom di EditText (il widget di sistema per l'editing di testi) che abbia come sfondo una carta a quadretti Dovremo: Estendere EditText Implementare i costruttori Fare override di ondraw() E, nel contempo, cercare di far fare più lavoro possibile alla superclasse! 19 Marzo
18 CartaQuadretti intestazione package it.unipi.di.sam.customviewtest; import android.content.context; import android.graphics.canvas; import android.graphics.paint; import android.util.attributeset; import android.widget.edittext; Estendiamo la classe di sistema public class CartaQuadretti extends EditText { int dimquad; Paint righini = new Paint(); Il tag da usare in layout.xml sarà <it.unipi.di.sam.customviewtest.cartaquadretti> Paint con cui disegneremo i righini 19 Marzo
19 CartaQuadretti costruttore public CartaQuadretti(Context context) { super(context); init(); } public CartaQuadretti(Context context, AttributeSet attrs, int defstyle) { super(context, attrs, defstyle); init(); } public CartaQuadretti(Context context, AttributeSet attrs) { super(context, attrs); init(); Un metodo privato che si occupa di inizializzare la } CartaQuadretti. Potrebbe prendere context, attrs e defstyle come argomenti, ma noi lo teniamo semplice. 19 Marzo
20 CartaQuadretti init private void init() { righini.setargb(20, 0, 0, 140); dimquad = 20; } Qui impostiamo righini a un colore fisso (blu semi-trasparente). Potremmo però rendere la nostra view configurabile, in vari modi: Potremmo definire un nome simbolico per il colore nelle risorse, farci passare il Context, e accedere al colore con Color c = context.getresources().getcolor(r.color.righini); righini.setcolor(c); Oppure, potremmo definire nuove risorse Stylable e includerle fra gli attributi del nostro tag XML (o anche eriditarle da un tema). Stessa cosa per dimquad! 19 Marzo
21 CartaQuadretti disegno protected void ondraw(canvas canvas) { } int w=getwidth(), h=getheight(); for (int x=0;x<w;x+=dimquad) canvas.drawline(x, 0, x, h, righini); for (int y=0;y<h;y+=dimquad) canvas.drawline(0, y, w, y, righini); super.ondraw(canvas); Qui disegnamo tutto il resto (incluso il testo!) 19 Marzo
22 CartaQuadretti risultato 19 Marzo
23 Ridisegno Una vista ha spesso delle proprietà Grafica (es.: colore e dimensione dei quadretti) Contenuto (es.: testo visualizzato) In questi casi, occorre un mezzo per ottenere il rinfresco della vista quando cambia la proprietà public void setdimquad(int n) { if (n>0) { } } dimquad=n; invalidate(); Invalida la view: il sistema chiamerà la ondraw() per ridisegnare la CartaQuadretti con il nuovo dimquad. 19 Marzo
24 Attributi custom in XML Molte custom view avranno attributi specifici Come il colore e la dimensione dei quadretti nel nostro esempio Sempre una buona idea implementare getter/setter e consentire l'accesso da programma Può anche essere utile definire i valori per gli attributi nei file di layout (XML) Occorre dichiarare prima quali sono gli attributi aggiunti Risorse di tipo stylable dichiarate fra le risorse 19 Marzo
25 Dichiarare stylable Si definiscono nodi <declare-stylable> dentro un container <resources> Potrebbe essere ovunque, ma per convenzione si definiscono gli attributi custom in res/values/attrs.xml Ogni nodo <declare-stylable> definisce i nomi e i tipi degli attributi per una particolare custom view <resources> <declare-styleable name="cartaquadretti"> <attr name="dimquad" format="integer"/> <attr name="righino" format="color"/> </declare-styleable> </resources> 19 Marzo
26 Riferire styleable Occorre importare le nostre nuove risorse styleable nel file di layout Solitamente, si definisce un namespace per brevità <LinearLayout xmlns:android=" xmlns:tools=" xmlns:cq=" > <it.unipi.di.sam.customviewtest.cartaquadretti cq:dimquad= 32 /> </LinearLayout> 19 Marzo
27 Recuperare i valori Quando il file XML di layout viene letto dal sistema, tutti gli attributi di ogni nodo vengono memorizzati in un AttributeSet che viene passato al costruttore di ciascuna View Il costruttore può recuperare i valori degli attributi leggendo direttamente il parametro AttributeSet Però... I riferimenti a risorsa rimangono stringhe ), e non vengono dereferenziati automaticamente Non vengono applicati automaticamente stili e temi Si usa quindi un metodo più articolato 19 Marzo
28 Recuperare i valori public CartaQuadretti(Context context) { super(context); init(context,null,0); } public CartaQuadretti(Context context, AttributeSet attrs, int defstyle) { super(context, attrs, defstyle); init(context,attrs,defstyle); } public CartaQuadretti(Context context, AttributeSet attrs) { super(context, attrs); init(context,attrs,0); } Passiamo i parametri a init() 19 Marzo
29 Recuperare i valori private init(context context, AttributeSet attrs, int defstyle) { TypedArray a = context.gettheme().obtainstyledattributes( attrs, R.styleable.CartaQuadretti, defstyle, 0); } try { dimquad = a.getinteger(r.styleable.cartaquadretti_dimquad, 20); colrig = a.getcolor(r.styleable.cartaquadretti_righino,defcol); } finally { a.recycle(); } 19 Marzo
30 Scrivere un proprio Layout 19 Marzo
31 Ereditare da ViewGroup Per creare una view composta In pratica, si costruisce un gruppo di widget pre-assemblato Il costruttore della nostra view composta fa le new e le.add() necessarie per costruire tutto un sottoalbero Poco interessante... Per creare un layout custom Consente di disporre i figli secondo criteri personalizzati Tecnica da usare quando i LayoutManager di libreria non soddisfano le necessità Approfondiamo! 19 Marzo
32 Layout custom Un layout deve fare override di un solo metodo: void onlayout(boolean changed, int left, int top, int right, int bottom) Molto spesso, dovrà anche fare override di onmeasure() Perché le dimensioni del gruppo dipenderanno dalle dimensioni dei figli e dalla disposizione degli stessi 19 Marzo
33 Esempio Vogliamo un layout che disponga i figli secondo una griglia equispaziata Che so, per esempio per fare i tasti di una calcolatrice... Versione semplice Non gestiamo View multicella Calcoliamo noi il numero di righe e colonne in base al numero di figli 19 Marzo
34 Esempio: EqLayout package it.unipi.di.sam.eqlayout; import android.content.context; import android.util.attributeset; import android.view.view; import android.view.viewgroup; public class EqLayout extends ViewGroup { Visto che un Layout è un ViewGroup, e ViewGroup è una sottoclasse di View, si applica tutto quanto abbiamo detto in precedenza sulle View custom: costruttori attributi custom e styleable public EqLayout(Context context) { super(context); } public EqLayout(Context context, AttributeSet attrs) { super(context, attrs); } public EqLayout(Context context, AttributeSet attrs, int defstyle) { super(context, attrs, defstyle); } 19 Marzo
35 Esempio: protected void onlayout(boolean changed, int left, int top, int right, int bottom) { } int lato = getlato(); int w = (right-left)/lato; int h = (bottom-top)/lato; for (int i = 0; i < this.getchildcount(); i++) { View v = getchildat(i); int x = i%lato, y = i/lato; v.layout(x*w, y*h, (x+1)*w, (y+1)*h); } private int getlato() { return (int)math.ceil(math.sqrt(getchildcount())); } Quando il sistema grafico chiama il nostro onlayout(), ci sta chiedendo di disporre i figli in maniera tale che tutto il gruppo occupi lo spazio definito da left, top, right, bottom. Noi semplicemente dividiamo il nostro spazio in un quadrato di celle di uguale dimensione, e disponiamo i figli chiamando su ciascuno il metodo layout() con le coordinate calcolate. 19 Marzo
36 Esempio Dovremo anche implementare una onmeasure(), che dovrà passare la misurazione ai figli Alcuni dei figli potrebbero essere a loro volta dei ViewGroup complessi, che hanno bisogno di stabilire le misure dei figli, ecc. I figli necessitano di una onmeasure() anche per implementare correttamente la ondraw() Per esempio, per centrare correttamente una label nello spazio allocato 19 Marzo
37 Esempio: protected void onmeasure(int widthmeasurespec, int heightmeasurespec) { super.onmeasure(widthmeasurespec, heightmeasurespec); int lato = getlato(); int w = getmeasuredwidth()/lato; int h = getmeasuredheight()/lato; int ws = MeasureSpec.makeMeasureSpec(w, MeasureSpec.EXACTLY); int hs = MeasureSpec.makeMeasureSpec(h, MeasureSpec.EXACTLY); for(int i = 0; i < this.getchildcount(); i++){ View v = getchildat(i); v.measure(ws,hs); Nel nostro esempio, informiamo i figli che vogliamo } che ciascuno di loro sia esattamente alto e largo } quanto la cella che lo conterrà è ora di finirla con questo buonismo che conduce all'anarchia! 19 Marzo
38 Esempio Il nostro esempio è molto basico, ma può essere facilmente esteso Una volta definito un custom layout, può essere usato come qualunque altro layout Anche in questo caso, si può usare il nome fullyqualified come tag nel file XML di layout In alternativa, si può istanziare il layout a programma con una new 19 Marzo
39 Esempio di uso di EqLayout package it.unipi.di.sam.eqlayout; import android.app.activity; import android.os.bundle; import android.widget.button; public class MainActivity extends Activity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); EqLayout eql = (EqLayout) findviewbyid(r.id.eqlayout); for (int i=0;i<14;i++) { Button b=new Button(this); b.settext("#"+i); eql.addview(b); } } 19 Marzo
40 Stili e temi 19 Marzo
41 Stili e temi Sia gli stili che i temi sono insiemi di coppie attributo-valore Attributi e valori sono gli stessi che possono essere applicati alle viste in un file di layout Consentono di assegnare un nome a una configurazione, e poi applicarla riferendo il nome Differenza: Uno stile si applica a una vista, e vale solo per quella vista Un tema si applica a una vista, a un'activity o a un'intera app, e vale per tutte le viste figlie Un tema definisce anche attributi che si applicano alle finestre e non alle viste Es: Theme.NoTitleBar Marzo
42 Definire uno stile Esempio: /res/values/styles.xml Riferimento <?xml version="1.0" encoding="utf-8"?> al valore di un attributo nel <resources> tema corrente <style name="bigbutt"> <item name="android:textappearance">?android:attr/textappearancelarge</item> <item <item name="android:padding">0dp</item> Riferimento a una </style> Valore letterale <style name="pisan"> <item name="android:rotation">3.97</item> <item name= android:background >@drawable/romanico</item> </style> </resources> risorsa 19 Marzo
43 Applicare uno stile Per applicare uno stile, è sufficiente dichiarare l'attributo style nel file di layout, riferendo lo stile definito In ogni caso, la vista applicherà solo gli attributi rilevanti dello stile Altri attributi, non previsti dalla vista, vengono ignorati... <Button />... android:textcolor= #888 android:text="big!" 19 Marzo
44 Applicare un tema Analogamente, per applicare un tema si usa l'attributo android:theme del tag <application> o <activity> in AndroidManifest.xml... <application android:theme="@style/miotema"... /> <activity android:theme="@style/miotema"... />... Raramente si definisce un intero tema custom Anche per consistenza visuale col sistema! 19 Marzo
45 Eredità Gli stili di Android hanno qualche similarità con i CSS... ma sono realizzati assai peggio Per esempio: niente selettori, si può applicare un solo stile a vista Hanno una limitata forma di ereditarietà Più debole del cascading dei CSS La combinazione di ereditarietà e selettori di risorse consente comunque di realizzare applicazioni che si adattano alle tante versioni di UI esistenti su Android Per esempio: lo skinning dei diversi produttori è ottenuto modificando i temi di default del sistema 19 Marzo
46 Eredità Ereditare da uno stile definito in altro package <style name="blackpaua" parent="android:theme.light"> <item name="android:textcolor">#000</item> </style> Ereditare da uno stile definito nello stesso package <style name="bigbutt.black"> <item name="android:textcolor">#000</item> </style> 19 Marzo
47 Personalizzare gli stili La pratica più comune consiste nell'usare un tema di sistema, personalizzandone solo alcuni dettagli <?xml version="1.0" encoding="utf-8"?> <resources> <style name="miotema" parent="android:theme.light"> <item name="android:windownotitle">true</item> <item <item </style> <style name="mialistview" <item </style> </resources> 19 Marzo
48 Quale tema scegliere? Android definisce numerosissimi stili e temi Stili: base/+/refs/heads/master/core/res/res/values/styles.xml Temi: base/+/refs/heads/master/core/res/res/values/themes.xml Scegliere quello giusto non è banale! 19 Marzo
49 Qualche esempio Temi di default Theme tema base Theme.NoTitleBar Theme.NoTitleBar.FullScreen Theme.NoTitleBar.OverlayActionModes Theme.WithActionBar 19 Marzo
50 Qualche esempio Temi per API 10 e inferiori Theme.Light sfondo chiaro e testo nero Theme.Light.NoTitleBar Theme.Light.NoTitleBar.FullScreen Theme.Black sfondo nero e testo chiaro Theme.Black.NoTitleBar Theme.Black.NoTitleBar.FullScreen Theme.Wallpaper sfondo uguale alla home Theme.Wallpaper.NoTitleBar Theme.Wallpaper.NoTitleBar.FullScreen Theme.Translucent sfondo trasparente Marzo
51 Qualche esempio Temi per API (Holographic) Theme.Holo.Light Theme.Holo.Dark Temi per API 21 (Material Design) Theme.Material Theme.Material.Light Ovviamente, ciascuno con innumerevoli sottotemi 19 Marzo
52 Stilare Material Design Con Android 5, lo stile Material Design raccomanda di usare colori pieni, personalizzati per la propria applicazione <resources> <style name="apptheme" parent="android:theme.material"> <item <item <item </style> </resources> Le style guide danno indicazioni precise sulla grafica 19 Marzo
Android. Custom View.
Android Custom View [email protected] Creazione di una Custom View (1) La classe View è la classe madre di tutti i componenti visuali di Android. Ogni sottoclasse implementa il metodo ondraw(canvas)
Grafica Android Mobile Programming Prof. R. De Prisco
Grafica Un immagine può essere disegnata in un oggejo View grafica semplice, senza necessità di cambiameno un oggeto Canvas grafica complessa, aggiornameno frequeno 144 Classe Drawable rappresenta un oggejo
Programmazione 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.
Android. Android01: Introduzione alle Activity.
Android Android01: Introduzione alle Activity [email protected] Applicazioni Android (1) Una applicazione android è un insieme di task ognuno dei quali è detto Activity. Ogni Activity ha un unico scopo
Raccolta di tutorial Python #1: basi e Tkinter dal sito francescomilanese.com SOMMARIO
Prima parte: le basi di Python 1. Introduzione. Cosa ci serve, cosa è richiesto, cosa faremo. Note sull'indentazione 1 Introduzione 1 Scrittura degli script: l'idle 2 Importare moduli in uno script 3 I
La 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
A. 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),
La programmazione ad oggetti (OOP)
Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente
Corso di programmazione di sistemi mobile 1. Android Laboratorio. Activity, ListView e Adapter
Corso di programmazione di sistemi mobile 1 Android Laboratorio Activity, ListView e Adapter Corso di programmazione di sistemi mobile 2 Passaggio di dati tra activity Il passaggio di tra activity può
Lezione 13 Content Provider
A cura di Carlo Pelliccia Come si è visto nelle due lezioni precedenti, secondi i meccanismi di gestione della sicurezza di Android, sia i file che i database sono solitamente di esclusiva proprietà dell
La geolocalizzazione
La geolocalizzazione La maggior parte dei dispositivi mobili di ultima generazione è dotata di un antenna GPS che permette di conoscere, in breve tempo e con la precisione di qualche metro, la propria
Android. Google Maps v2.
Android Google Maps v2 [email protected] Uso delle mappe Google v2 (1) Per poter utilizzare le mappe di Google v2 bisogna prima di tutto ottenere una API map key registrandosi sulla console delle api
Lezione 11 Accesso al file system
A cura di Carlo Pelliccia Qualunque applicazione Android può leggere e scrivere file dalla memoria interna del telefono o da una scheda esterna inserita nel dispositivo. I principi da osservare per compiere
Programmazione. 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
Programmazione orientata agli oggetti Classi astratte e interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
Pag. 1/8. Esercizi lezione 4. Esercizio A
Pag. 1/8 Esercizi lezione 4 Esercizio A Progettate una UI con una textview (id=text) e un pulsante (id=button). Cliccando sul pulsante appare una alert dialog con un avviso e un pulsante. Suggerimenti:
Array 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
Esempi 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
Proprietà 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
18 - 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/
Programmazione orientata agli oggetti. Ivan Lanese
Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows
Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
Lezione 8 Struct e qsort
Lezione 8 Struct e qsort Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort
Definizione 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
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
GRAFICA ED EVENTI SWING, AWT e JavaFX
GRAFICA ED EVENTI SWING, AWT e JavaFX argomenti JavaFX: architettura e gerarchia Componenti principali: Stage, Scene, contenuti Gestione degli eventi Java Package Grafici I package grafici che comprende
Alberi Binario in Java
Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un
Android. Layout.
Android Layout [email protected] Interfaccia grafica Interfaccia grafica (1) Esistono due tipi di componenti che ereditano da View: widget (Button, ImageView, TextView, etc.) e layout, sottoclassi di
MS Office Powerpoint La formattazione
MS Office Powerpoint 2007 - La formattazione La formattazione è la parte più importante del lavoro in Powerpoint, in quanto l essenziale per l aspetto finale che assumerà il nostro lavoro. Questo è un
Corso 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
Android. Implementare una interfaccia utente
Android Implementare una interfaccia utente Introduzione In questa lezione vedremo come implementare una interfaccia utente sullo schermo di Android. Vedremo gli elementi di base visualizzabili sullo schermo
Syllabus PEKIT CAD. Modulo Uno. Concetti di base
1 Syllabus PEKIT CAD Modulo Uno Concetti di base 2.1 Cominciare a lavorare Campi di applicazioni del CAD Sistemi di disegno tecnico computerizzato (CAE, CAM, GIS) Autodesk e le versioni di AutoCAD, installazioni
Strutture dati e loro organizzazione. Gabriella Trucco
Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi
Quadrato Magico. Fondamenti di Programmazione
Quadrato Magico Si richiede lo sviluppo di un programma che permette all utente l inserimento di una matrice quadrata di numeri interi positivi e verifica se si tratta di un quadrato magico Una matrice
Lezione 6 Gestione degli eventi dei widget
A cura di Carlo Pelliccia Nelle due precedenti lezioni abbiamo conosciuto i principali widget di Android e le tecniche utili per richiamarli e disporli nel display dello smartphone. In questa lezione impareremo
Alberi e alberi binari I Un albero è un caso particolare di grafo
Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra
Programmazione. 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
9In questa sezione. Ordinare e filtrare i dati. Dopo aver aggiunto dati ai fogli di lavoro, potresti voler
9In questa sezione Ordinare e filtrare i dati Ordinare i dati del foglio di lavoro Creare un elenco personalizzato Filtrare rapidamente i dati con Filtro automatico Creare un filtro avanzato Convalidare
Riassunto: 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 [email protected] Programmazione,
Uguaglianza 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
Android lezione 9 Le listview
Android lezione 9 Le listview In questa lezione introduciamo le ListView. Una listview ci permette di mostrare una serie di elementi all interno di una lista che puo anche essere scrollata. Ecco un esempio
Design Patterns. Introduzione 2. Introduzione 3
Design Patterns Introduzione Design patterns: factory, singleton, adapter, composite, decorator, observer Introduzione I Design Patterns sono stati applicati per la prima volta nell architettura Per costruire
Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
Esempio 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
Laboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo [email protected] 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
Laboratorio 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[]
layout senza tabelle Posizionamento con i CSS Ad ogni elemento HTML corrisponde un area rettangolare, detta box Contenuto
Posizionamento con i CSS creare layout senza tabelle 1 Gestione degli elementi della pagina Il box model Ad ogni elemento HTML corrisponde un area rettangolare, detta box Margine Bordo Area di padding
Lezione 6 programmazione in Java
Lezione 6 programmazione in Java Nicola Drago [email protected] Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi
GUI e java swing. Elmenti della GUI. Eventi e listener contenitori componenti layout manager. caratteristiche speciali
GUI e java swing Raffaella Brighi, a.a. 2005/06 Corso di Laboratorio II. A.A. 2005-06 CdL Operatore Informatico Giuridico. Elmenti della GUI Eventi e listener contenitori componenti layout manager caratteristiche
Esempio: Ogni colonna può contenere un solo tipo di dati. Colonne e righe sono numerate partendo da zero. L Header non conta nella numerazione:
JTable Cos è una JTable Una JTable è un elemento Swing che rende possibile visualizzare delle informazioni sotto forma di tabella e se necessario ne permette la modifica. Header - Nelle JTabel è possibile
Modulo 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
Java il Corso Fondamentale
Java il Corso Fondamentale Imparare a Programmare APP per Android, applicativi per Server e Desktop, applet e molto altro. IlTuoCorso - Ermes srl Via E.De Amicis 57 20123 Milano Il corso Ciao! Se desideri
3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni
IIndice Capitolo 1 Da dove partiamo: pagine web statiche 1 1.1 Principi di base.............................. 1 1.1.1 Il paradigma client-server.................... 1 1.1.2 Ipertesto, multimedia, ipermedia................
Programmazione Orientata agli Oggetti
Programmazione Orientata agli Oggetti Lezione 13 La programmazione ad oggetti si basa su due principi fondamentali ereditarietà polimorfismo Queste due proprietà consentono di definire nuovi tipi di dato
14 - 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
ESERCIZI 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
EXCEL software Excel .xlxs, La cella intestazione della colonna intestazione di righe l indirizzo della cella testo numeri formule
EXCEL Il software Excel appartiene alla categoria dei fogli elettronici. Ogni foglio è composto da 1.048.576 righe per 16.384 colonne suddivise in celle che è possibile collegare tra loro: in tal modo
Laboratorio di Programmazione Lezione 4. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 4 Cristian Del Fabbro Prossima lezione Mercoledì 25 novembre ore 8:30-11:00 Classe Una classe descrive degli oggetti tramite: Proprietà/variabili/campi (dati/caratteristiche,
Prova d Esame Compito A
Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private static int counter=0; private int code; public
Corso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
