Che materia stai cercando?

Anteprima

ESTRATTO DOCUMENTO

- Context Aware Computing: è il tentativo di adattare l' applicazione mobile e la sua elaborazionein base alle

informazioni provenienti dal contesto, definito come l' insime delle condizioni sia fisiche e sociali dove avviene

l' elaborazione dell' applicazione steessa. Ad esempio si potrebbe pensare ad un' applicazione mobile che

imposta una diversa suoneria o attiva la vibrazione in base alla propria posizione geografica.

4) Leggi di Moore

Le leggi di Moore sono due principalmente per cui:

1° Le prestazioni dei processori, e il numero dei transistor ad esso relativo raddoppiano ogni circa 18 mesi.

2° L' investimento per realizzare una nuova tecnologia di microprocessori cresce in maniera esponenziale

con il tempo.

Lezione 2 – Sfide tecnologiche

1) Reti Wireless – Problemi

Al giorno d' oggi attraverso i dispositivi mobili riusciamo a svolgere anche quei lavori che richiederebbero un

desktop, ma sottilmente resistono delle limitazioni: legati: alla mobilità quali problemi delle infrastrutture di

comunicazione, hardware legati ai limiti fisici dei dispositivi, software quali SO ed API legati alle limitazioni

hardware.

♦) Problemi Comunicazione

Il problema legato alla mobilità o connessione si riferiscono alla:

♦C opertura di rete: in quanto anche quando un' area possa risutare fisicamente coperta dal segnale, non vi è

garanzia che il segnale possa penetrare barriere fisiche come costruzioni, gallerie, ecc.

♦A mpiezza di banda: in quanto la velocità di connessione può variare in dipendenza del protocollo utilizzato.

Latenza: in una connessione wireless o via cavo, la Latenza si definisce come il ritardo che intercorre tra

l' invio della richiesta di elaborazione e la ricrazione dei dati, compresa l' elaborazione degli stessi dati.

Un' elevata latenza, che causa un intervallo di attesa lungo, può essere causata da diversi fattori come ad

esempio la diversa tipologia di connessione, dove in termini di codifica, la latenza può essere causata dalla

compressione e trattamento dei dati ad ogni estremità, ritardi addizionali possono essere aggiunti se un

collegamento si estende su diversi tipi di reti. La Latenza è un fattore che può incidere sulla velocità di

connessione dati, anche se differisce dalla larghezza di banda e del relativo rendimento, definendosi come una

misura dell' ampiezza del segnale di trasmissione o ricezione. I costi della connettività sono spesso significativi,

in quanto alcuni operatori applicano tariffe basate sul tempo do connessione, metre altri si basano sulla quantità

di dati trasferiti. Ogni operatore utilizza diversi protocolli di connessione ai dispositivi wireless.

♥) Soluzione Problemi Comunicazione

– Capacita "Always - ON"

La capacità Always-On si riferisce alla possibilità data all' utente di accedere ai dati in qualsiasi momento,

senza pagare tariffe a tempo e senza stabilire ogni volta una connessione alla rete wireless. Questa possibilità

è stata introdotta dalle reti Packet-Switched. La differenza sostanziale tra le due reti sta nel fatto che mentre le

reti Circuit-Swithed tariffano e connessioni basandosi sul tempo, le reti Packet-Swithed effettuano un calcolo

dei costi in base alla quantità di dati scambiata. Consentendo all' utente di restare collegato anche durate periodi

di inattività.

♦ Nelle reti Circuit-Switched ho un canale mio al quale nessuno può accedere.

♦ Nelle reti Packet-Switched si ha la possibilità di ricevere nuovi pacchetti dagli operatori wirelessi, basati sulla

quantità di dati utilizzata piuttosto che sul tempo di attivit, condividendo il canale con altri utenti attraverso un

meccanismo gestito dalla centrale. g iacomo.gargiulo.made4Core@gmail.com Pag 3

Appunti di Giacomo Gargiulo per info:

♦) Problemi Hardware

La scelta del dispositivo da utilizzare è determinate per il successo di una applicazione mobile, per scegliere

il dispositivo è importante porsi alcune domande quali: Che tipo di applicazione si vuole sviluppare? È una

applicazione di client business, email, etc. Che tipo di accesso ai dati è richiesto? E' richiesta la modalità

wireless? Se si, è richiesto un modem integrato o può essere aggiunto un componente esterno? Come deve

collegarsi il dispositivo ai server centrali? Via wireless oppure attraverso una base? Quali sistemi operativi si

vogliono utilizzare? Che tipo di sicurezza si vuole adottare? Che caratteristiche fisiche deve avere il

dispositivo?

♥) Soluzione problemi Hardware

La soluzione è data stesa dalla proliferazione sul mercato di diversi tipi di teminali mobili, dove le compagnie

intallano le componenti in base alle esigenze correnti, quale può essere ad esempio una maggiore quantità di

memoria, ecc.

♦) Problemi Software

La scelta della piattaforma software da utilizzare è legata alle "interazioni applicative" che il dispositivo dovrà

sostenere, con le altri componenti della soluzione da realizzare.

♥) Soluzioni Software

Nel campo degli strumenti di sviluppo di applicazioni mobili, sono stati introdotti: application server;

emulatori, "small mobile" database, tecnologie di sincronizzazione avanzate, sistemi operativi mobili.

Lezione 3 - Reti Wireless

1) Tipologia di reti Wireless e Differenze

A differenza delle reti wired, il segnale radio si attenua mentre attaversa il mezzo che in questo caso è l' aria,

riflettendosi su più oggetti può arrivare a destinazione con tempi e percorsi diversi, rischiando di ricevere delle

interferenze da altre sorgenti, in quanto le reti wireless usano frequenze standard che possono venire condivise

da altri dispositivi. Le reti vengono differite in: wireless che sono reti in cui i terminali accedono alla rete

tramite canali "senza fili", radiomobili che sono reti wireless dove i terminali utenti possono spostarsi sul

territorio senza perdere la connettività con la rete, cellulari sono reti radiomobili la cui copertura geografica è

ottenuta con delle celle del territorio.

- Elementi di una rete wireless: wireless host sono i Laptop o cellulari, eseguono applicazioni stazionarie o

mobili, stazione di base è tipicamente connessa ad una rete wired, ed è responsabile dello scambio di pacchetti

tra rete wired e host wireless nella sua area di access point, link wireless è usato per connettere stazioni wireless

alla base station. Accessi multipli differiscono per banda e per distanza di trasmissione, reti ad hoc non esiste

una stazione base, i nodi possono sono comunicare con altri nodi nel loro raggio, i nodi si auto-organizzano in

una rete esempio Bluetooth.

- Evento di Handoff L' evento di Handoff è un evento che provoca il passaggio,

da parte dell' utente mobile, da una stazione di base a un'

altra. La stazione di base connette gli utenti mobili alla rete

Wired, permettendo quindi lo scambio di pacchetti tra rete

Wired e Host Wireless nella sua area definita "access point".

L' evento di Handoff per le sue caratteristiche è un fenomeno

puramente trasparente e si definisce inoltre ROAMING

l' evento di Handoff tra due celle di gestori diversi.

g iacomo.gargiulo.made4Core@gmail.com Pag 4

Appunti di Giacomo Gargiulo per info:

2) Le reti wireless categorie e configurazioni:

♦ WPAN ( Wireless Personal Area Network ): le principali caretteristiche di questa rete sono: raggio limitato

di comunicazione, un basso consumo di energia, costi molto bassi o nulli e sono composti da pochi dispositivi

connessi. Il mezzo di comunicazione principale tra dispositiv, quali IrDA ( Infrared Data Associtianon ) la cui

idea di base è di far comunicare 2 dispositivi semplicemente facendoli puntare "l' un l' altro", in questo caso

è il Bluetooth, che posside un indirizzo univoco e fornisce un meccanismo di autodiscovery per la ricerca di

altri dispositivi Bluetooth attivi nell' area circostante. Le specifiche Bluetooth definiscono 3 modalità di

discovery:

Generally: consente ad un dispositivo Bluetooth di essere individuato da una qualsiasi altro dispositivo

Bluetooth nelle vicinanze.

Limited: soltanto dispositivi predefiniti possono individuare un altro dispositivo Bluetooh., questa modalità è

utilizzato in presenza di diverse periferiche BT collegabili automaticamente.

Nondiscoverable: che rende virtualmente invisibile il dispositivo ad altri dispositivi BT.

Quando 2 o più dispositivi sono collegati, essi formano una Piconet ossia una rete da hoc che è formata al più

da 8 dispositivi. Se più reti Piconet si combinano tra loro, qualora vi siano reti con più di 8 dispositivi connessi,

si è in presenza di una Scatternet, dove non tutti i dispositivi sono collegati direttamente. Al momento la

tipologia di Bluetooth più avanzato è il 4.0 che rispetto al 3.0 non porta alcun incremento prestazionale, ma

comporta un minore consumo data la presenza di una più bassa Latenza rispetto alla versione precedente.

Una nuova tecnologia in atto è lo ZigBee che da il nome ad una specifica per un insieme di protocolli di

comunicazione ad alto livello incentrata principalemente a portare questa tecnologia ad un consumo ancora più

basso ed economico di altre WPAN ed è utilizzata in scopi quali il controllo industriale, le reti sensori e la

domotica che permette di relazionare la robotica all' ambiente domestico.

♦ WLAN ( Wireless Local Area Network): la più semplice rete è costituita da una configurazione Peer-to-Peer

( rete ad hoc ), senza amministrazione o Access Point ( AP ) centrale ( caso di WPAN ). Le reti ad hoc possono

essere estese utilizzando un wireless AP che funziona come un "ripetitore" tra i dispositivi, fornendo

connettività ad una rete wired. In uno scenario tipico diversi AP possono fornire insieme copertura wireless

ad un' ampia area. Ogni area coperta da un AP è una microcella. Il movimento tra grappoli ( cluster ) di AP

è chiamato handoff. L' Handoff è reso possibile dallo scambio automatico delle informazioni del Client

( è un elaboratore che riceve servizi da un altro Computer chiamato Server ( Computer dedicato esclusivamente

al controllo della rete, progettato per condividere i dati con applicazioni Client. ), tra i diversi AP.

Nella specifica di sicurezza delle reti WLAN è stata implementata una funzionalità chiamata Wired

Equivalent Privacy, che fornisce meccanismi base di autenticazione e crittografia. Per l' autenticazione,

un AP ( WEP enable ) manderà un testo al client per verificare l' identità. Il client utilizza una chiave privata

per cifrare il testo ( algoritmo RC4 ), successivamente restituisce il testo cifrato all' AP che decifra il testo

utilizzando la sua chiave, se il testo decifrato corrisponde a quello iniziale viene data l' autorizzazione al client,

ma non fornisce una sicurezza di tipo end to end, ma deve essere integrato con altri meccanismi.

♦ WWAN ( Wireless Wide Area Network ): l' accesso a questa rete richiede la sottoscrizione di un

abbonamento con una compagnia ( Wind, Tim, ecc.. ), con l' applicazione di tariffe tempo o a traffico.

Inizialmente le prime reti erano analogiche, ma con l' introduzione del digitale, è stata migliorata

principalmente l' efficienza del trasferimento di dati, la sicurezza nella cifratura dei segnali, la qualità del

segnale con la presenza di filtri che puliscono il segnale dopo la sua trasmissione ed infine la funzionalità,

che consente l' uso di informazioni fornendo le basi per applicazioni m-business.

-Reti WWAN - Packet Switched vs Circuit switched

Esistono 2 meccanismi di switching nell' ambito delle WWAN per il trasferimento dati:

♦ Circuit – Switched ( CS );♦ Packet – Switched ( PS );

Le reti CS stabiliscono una connessione fisica tra le parti, questa connessione non può essere utilizzata da atri,

mantenendo la connessione per tutta la durata, ma sono inefficienti dove non esiste un continuo flusso di dati.

Richiedendo per ogni connessione una linea dedicata.

Le reti PS non richiedono connessioni dedicate, ma più utenti condividono un unica connessione, dove i

pacchetti che viaggiano sulla rete possono condividere gli stessi percorsi tariffandone quindi l' effettiva quantità

di dati trasmessa. g iacomo.gargiulo.made4Core@gmail.com Pag 5

Appunti di Giacomo Gargiulo per info:

3) Reti cellulari e Roaming

In una rete cellulare copertura geografica è ottenuta con una tassellatura di aree adiacenti e/o sovrapposte dette

celle, che ottiene copertura wireless da un base station fissa. L' utente che possiede il terminale mobile si può

muovere attraverso la rete passando da una cella all' altra senza interrompere la comunicazione. In aree

densamente popolate vengono usate le microcelle ( ovvero aree generte da un AP ) e il processo con cui un

utente si sposta da una cella ad un altra si chiama Handoff o Handover. Quando un utente si sposta su di una

cella gestita da un diverso operatore si verifica il Roming.

4) Geteway WAP

Il WAP ( Wireless Application Protocol ) è nato nel 1997 ed è costituito da una serie di protocolli che

permettorno una navigazione simile a quella web, ma senza l' ausilio del pc e ricorrendo a specifici software

per adattare il linguaggio del Web alle esigenze delle limitate potenzialità di un cellulare. Il linguaggio di

programmazione che c' è dietro alle pagine WAP è il WML ( Wireless Markup Language ): questo linguaggio

deriva dall' XML ed è stato progettato per terminali con le seguenti carattaristiche:

♦ Display di bassa risoluzione;

♦ Limitate capacità di input;

♦ Limitate capacità di elaborazione;

♦ Banda ristretta e con tempi di attesa lunghi.

La pagina WML è detta deck ( mazzo di carte ) poichè è composto da più carte ( card ) che rappresentano le

singole unità di navigazione visualizzate dal browser sul display del cellulare. Poichè un web server

opportunamente configurato è in grado di erogare pagine WML tramite HTTP ( Hyper Text Transport

Protocol: è il protocollo per il trasferimento di pagine ipertestuali e di risorse del WWW ( Word Widle Web ).

Nell' architettura WAP è stato inserito un gateway che possa fare da ponte tra il Web server ed i telefoni WAP

traducendo il protocollo da HTTP a WAP e viceversa. Il richiedente spedisce al server il nome di un documento

e il Server spedisce indietro il documento che può avere al suo interno puntatori ad altri documenti.

5) La rete 2.5G e l' evoluzione della generazione della rete

Nel corso del tempo abbiamo un' evoluzione della generazione delle reti WWAN. La 1° generazione introdotta

negli anni 70 e caratterizzata da reti analogiche che presentavano una qualità dei servizi molto bassa con la

presenza di interferenze, cadute di connessione, nessuna sicurezza, ecc. La 2° generazione nasce nei primi anni

90 e inizia a fornire capacità digitli con un netto miglioramento delle qualità e dei servizi. Poi abbiamo le reti

2.5G che sono un passo avanti verso le reti di terza generazione. La loro caratteristica principale consiste

nell' essere reti Pachet – Switched. Il protocollo utilizzato da queste reti è il GPRS ( General Packet Radio

Services ). La rete 2.5G presenta la capacità Always-ON, una capacità che consente agli utenti di rimanere

connessi senza pagare tariffe a tempo. Ciò consente quindi lo sviluppo di una nuova gamma di applicazioni che

possono spedire ( PUSH ) informazioni ai Client, piuttosto che attendere la richiesta. La tecnologia delle reti

2.5G costituisce la base del pasaggio ai sistemi 3G. La 3° generazione, la rete 3G è spesso indicata con la sigla

UMTS ( Universal Mobile Telecommunications System ). I miglioramenti principali portati da questa rete sono

sicuramente maggiore velocità di trasmissione dei dati e migliore qualità del servizio, con più affidabilità e

minore presenza di latenza. La 4° generazione, la rete 4G rappresenta il futuro della rete WWAN.

6) Reti WWAN

♦ WiMAX: ( Worldwide Interoperability for Microwave Access ) è una tecnologia che consente l' accesso a reti

di telecomunicazioni a banda larga senza fili, utilizzando una tecnologia che non richiede la visibilità ottica tra

le stazione, riuscendo ad irrigare connessioni internet verso abitazioni e aziende per un raggio di circa 50 Km

collocando ciascuna area entro una Wireless MAN ( Metropolitan Area Network ).

♦ HSDPA: ( High speed Downlink Packet Access ) è un protocollo introdotto nel pacchetto nello standard

UMTS per migliorarne le prestazioni, aumentandone le prestazioni e la larghezza di banda.

♦ LTE: ( Long Term Evolution ) nasce come una nuva generazione basata su IP per sistemi di accesso mobile a

banda larga. g iacomo.gargiulo.made4Core@gmail.com Pag 6

Appunti di Giacomo Gargiulo per info:

Lezione 4 – Architettura di applicazioni mobile

1) Definizione e caratteristiche dei principali tipi di architetture

Le principali architetture nell' ambito del mobile computing sono classificabili in:

♦ Wireless Internet Applications: queste applicazioni hanno la stessa archittetura delle applicazioni internet

Wired ( con cavo ). I componenti sono: Microbrowser client, Wireless Web sever e Enterprise Data source.

La differenza sta nel modo in cui l' informazione viene

trasmessa all' utente finale. Esistono vantaggi e

svantaggi per questo tipo di architettura. Tra i vantaggi

principali vi è l' aggiornamento costante dei dati

essendo questi mantenuti unicamente dal Server e la

sicurezza sui dati, i quali restano all' interno della rete

aziendale e non vengono lasciati sul client. I svantaggi

principali sono la connessione, in quanto è richiesta

per l' accesso ai dati, i costi e le performance, dato che

ogni richiesta trasmessa sulla rete può causare una

latenza significativa.

♦ Smart Client Applications: questa architettura si caratterizza per il software ad Hoc sul Client. Solitamente

questo software contiene sia un meccanismo di Data Storage persistente sia logica di Business. Ciò significa

che l' applicazione può essere eseguita anche in assenza di connessione wireless. I componenti di questa rete

sono: Smart client, Server di Sincronizzazione e Enterprise Data source.

Tuttavia uno dei principali problemi di questa architettura

è il Software Deployment e perciò è stato sviluppato l'

OTA ( Over –The –Air ), un servizio di distrubuzione

che consente di scaricare un' applicazione o controllare la

disponibilità di una nuova versione direttamente dal

dispositivo. Le applicazioni smart client sono spesso

definite terminal based, in quanto l' applicazione "gira"

localmente al dispositivo. Quindi il principale vantaggio è

la presenza di dati sempre disponibili, infatti sebbene non

sia presente la connessione wireless, l' utente è in grado di

accedere ai dati dell' applicazione. L' elaborazione

principale è distribuita sui client. Lo svantaggio principale

si presenta sull' application deployment, dove il

problema significativo resta sulla gestione e

manutenzione di applicazioni Smart Client da remoto.

♦ Messaging Applications ( M2M – Machine to Machine ): Queste applicazioni presentano come principali

meccanismi di comunicazione: I Messaggi User – To - User, che sono generti dal sistema Server e sono

utilizzati per distribuire l' informazione come ad esempio gli SMS, le notifiche ed arlet è possibile che i

messaggi debbano essere recapitati ai client wireless, e i Messaggi Application- to - Application quando il

server comunica direttamente con il dispositivo senza la presenza dell' iterazione dell' utente.

Il vantaggio principale di queste aapplicazioni è

sicuramente la comunicazione Wired and Wireless e tra

gli svantaggi ricordiamo lo sviluppo di codice aggiuntivo

sia lato Client che Server. La tecnologia basata su

messaggi è utile per la schedulazione di Job. Ad esempio

un agente può ricevere notifiche di una nuova attività da

eseguire ( magari tramite SMS ), oppure, attraverso un

meccanismo più avanzato, ( Application-to-Application )

il sistema può inserigli automaticamente un appuntamento

nel calendario.

g iacomo.gargiulo.made4Core@gmail.com Pag 7

Appunti di Giacomo Gargiulo per info:

Lezione 5 – La programmazione OOP

1) Caratteristiche del linguaggio ad oggetti

Esistono 4 tipi di meccanismi che sono alla base della programmazione ad oggetti:

♦ Incapsulamento -> occultamento delle informazioni : ogni componente di un sistema deve conoscere solo

ciò che gli è indispensabile;

♦ Information Hiding: è il principio teorico dell' Incapsulamento;

♦ Ereditarietà: una sottoclasse eredita tutte le proprietà di una sopraclasse e aggiunge altre proprietà;

♦ Polimorfismo: Una stessa operazione si comporta diversamente in diverse classi.

2) Che cos' è l' Ereditarietà e il Polimorfismo ed esempi

L' Ereditarietà permette di derivare nove classi a partire da classi già definite. Essa consente inoltre di

aggiungere attributi ad una classe e di modificare il comportamento dei metodi, in modo da adattarla alla nuova

struttura della classe. La classe che è stata derivat da un' altra classe prende il nome di sottoclasse e la classe

generatrice è detta invece superclasse. Queste relazioni tra le classi individuano una gerarchia che nasce da un

processo di specializzazione. Infatti le classi che si trovano in cima alla gerarchia sono le più generali a man

mano che si scende si trovano classi più specializzate. Un esempio di ereditarietà:

La nuova classe che eredita si differenzia dalla superclasse in due modi:

♦ Per Estensione, quando la sottoclasse aggiunge nuovi attributi e metodi che si sommano a quelli ereditati;

♦ Per Ridefinizione quando la sottoclasse ridefinisce il metodi ereditati, cioè viene data un' implementazione

diversa di un metodo, è detto Overriding del metodo. L' ereditarietà può essere:

♦ Singola, quando una sottoclasse deriva da un' unica superclasse

♦ Multipla, quando una sottoclasse deriva da due o più sottoclassi:

Il Polimorfismo indica la possibilità per i metodi di assumere più forme, cioè implementazioni diverse

all' interno della gerarchia delle classi. Quindi attraverso il Polimorfismo c'è la possibilità che le classi deriate

implementino in modo differente i metodi e le proprietà dei propri antenati, ciò rende possibile il fatto che gli

g iacomo.gargiulo.made4Core@gmail.com Pag 8

Appunti di Giacomo Gargiulo per info:

oggetti appartenenti a delle sottoclassi di una stessa classe rispondano diversamente alle stesse istruzioni.

Ad esempio, in una gerarchia in cui le classi Cane e Gatto discendano dalla Superclasse Animale, potremmo

avere il metodo mangia( ) che restituisce la stringa "osso" se eseguito sulla classe Cane e "pesce" se eseguito

sulla classe Gatto.

3) Differenza tra Private e Protected

Solitamente, all' interno di una classe i dati di tipo private e le funzioni/metodi che utilizzano i dati sono di tipo

public cioè accessibili dall' esterno: infatti i dati membro di una classe sono privati per default. I membri di

tipo pubblico sono accessibili da qqualunque parte del programma e costituiscono l' interfaccia pubblica della

classe. I membri di tipo privato sono accessibili solo da parte delle funzioni membro della classe, ossia sono

incapsulati all' interno della classe, essi ne costituiscono l' interfaccia privata.

l4) Differenza tra Override e Overloading

L' Overloading dei metodi si definisce, come la possibilità di dichiarare due funzioni distinte che abbiamo lo

stesso nome purchè essa abbia una diversa lista di paramentri o almeno un paramentro sia di tipo diverso.

Quindi l' Overloading risulta molto utile nel caso di funzioni che hanno fini simili, ma compiono operazioni

diverse perchè operano su argomenti di tipo diverso e al momento della chiamata il compilatore stabilisce quale

funzione invocare in base ad un argomento. L' Overloading è una procedura di tipo orizzontale, in quanto

agisce direttamente sulla classe coinvolta. Vediamo con un esempio in C++:

// Esempio si funzione sovraccaricata

#include <iostream>

using namespace std;

int dividi( int div_endo, int div_ore)

{ return div_endo / div_ore;

}

float dividi( float num, float denom)

{ return num / denom;

}

int main( )

{ int x = 7, y = 3;

float n = 7, m = 3.0;

cout << dividi ( x, y );

cout << endl;

cout << dividi ( n, m );

cout << endl;

return 0;

}

OUTPUT: 2 2.33333

L' Overriding è la ridefinizione in una sottoclasse di un metodo ereditato da una superclasse, coincidendo con

il concetto di CUT&PASTE. L' Overriding è una progedura di tipo verticale, in quanto agisce sovrascrivendo

le classi che ereditano. Vediamo con un esempio:

class Alfa class Beta extends Alfa

{ {

string leggi( ) string leggi( )

g iacomo.gargiulo.made4Core@gmail.com Pag 9

Appunti di Giacomo Gargiulo per info:

{ {

return " Alfa ha letto"; return " Beta ha letto";

} }

void scrivi( ) }

{ Alfa dato = new Rata();

system.out.println("Alfa ha scritto"); // l' oggetto è un istanza di Beta

} dato.leggi( ); // viene eseguito il metodo Beta

}

Lezione 7 – Sintassi Java

1) Definizione dei Dati primitivi

Boolean = tue ( 1 ) / false ( 0 ) occupa 1 bit

Byte ( 8 bit )

short

char

int

float

Long

double

Il Byte rappresenta l' unità minima di trasferimento dei dati

Boolean x = false;

If ( x = tue ( assegnamento))

system.out.println("ciao");

else ystem.out.println("miao");

int x =1;

if( x++==1) --> falsa

string s1 = new("ciao");

string s2 = new("ciao");

if(s1 == s2 ) --> falsa ( se puntano all stessa area di memoria ma in questo caso no )

2) Che cos' è il comportamento Short – circuit?

If ( f( ) && g( )) g iacomo.gargiulo.made4Core@gmail.com Pag 10

Appunti di Giacomo Gargiulo per info:

Due funzioni f e g

L' AND ( && ) è un espressione corto – circuitale

Gli operatori bit a bit o bitwise non sono corto – circuitati, il comportamento Sort – circuit, date due funzioni

per esempio f e g presenta un valore determinato già se il primo operando è false ed in tal caso non viene

valutato il secondo operando ad esempio:

c != -1 && c = in.read( )

se c' è EOF ( End Of File , in questo caso -1 ), esso non viene letto un altro carattere.

Lezione 9 – Programmazione OOP in Java

1) Definizione del costuttore

Il costruttore è un metodo speciale che ci consente di costruire l' oggetto di una classe. I costruttori tra classi

non si ereditano a causa del principio di costruzione locale. Inoltre, se in una classe non specifico uno o più

costruttori, ne viene definito automaticamente uno di default ( vuoto ), che non fa nulla tranne che chiamare il

costruttore della super classe. Se all' interno di una classe definisco un coostruttore si perde automaticamente

quello di default. This = puntatore all' oggetto corrente, la keyword this in Java viene utilizzata per fare

riferimento, all' interno di un metodo o di un costruttore, agli attributi o metodi locali. Questo tipo di

riferimento non fa altro che puntare all' oggetto a cui appartiene risolvendo possibili problemi di ambiguità.

L' uso fondamentale del riferimento this è con oggetti, e viene utilizzato quando si vuole fare riferimento al

prooprio oggetto di appartenenza, ed è utilizzabile con costruttori: infatti se dichiaro all' interno del costruttore

della classe this( ), chiamo automaticamente il costruttore di default.

2) L' ordine in cui vengono invocati i costruttori

In riferimento alla definizione di più classi, l' ordine di invocazione dei costruttori è il seguente:

-1) Il costruttore della superclasse è invocato. Questo passo è ripetuto ricorsivamente in modo che prima il

costruttore della radice della gerarchia è invocato e poi gli altri ( dall' alto verso il basso con una

metodologia top-down ).

-2) Gli attributi della classe sono inizializzati secondo l' ordine della dichiarazione ( prima dei costruttori )

-3) Il corpo del costruttore della sottoclasse è invocato alla fine.

Class

{ Static int x = 10;

int y=20;

}

( oggetti ) ( classi )

NON STATIC STATIC g iacomo.gargiulo.made4Core@gmail.com Pag 11

Appunti di Giacomo Gargiulo per info:

Test t = new Test( );

t.y ---> OK Test.x ---> OK

t.x ---> OK Test.y ---> KO

L' oggetto Non Statico può accedere anche a oggetti Statici, mentre un oggetto Statico deve accedere a tutti gli

oggetti statici.

Base

^

|

| Extends

|

Derivata

A run time si esegue il metodo partendo dalla foglia dell' insieme delle classi, quindi la classe foglia, il

polimorfismo prende vita a run time. Nel Polimorfismo essenziali sono l' eredità e l' override. A compile

time si verifica che il codice si corretto in compilazione.

3) Definizione dell' LSP ( Principio di Sostituzione di Liskov )

Questo pricipio afferma che i metodi che utilizzano riferimenti a classi base devono essere in grado di utilizzare

anche oggetti delle classi derivate, senza saperlo. Insomma c' è l' idea di fondo che i supertipi devono poter

essere sostituiti da riferimenti a sottotipi senza influenzare l' esecuzione del programma. Andando di più nello

specifico, questa notazione di sottotipo è quindi basata sula notazione di sostituibilità secondo cui, se S è un

sottotipo di T, allora oggetti dichiarati in un programma di tipo T possono essere sostituiti con oggetti di tipo S

senza alterare la correttezza dei risultati del programma.

4) Definizione del concetto di astrazione

L' astrazione è un concetto non completamente definito, ma che sono sicuro che esiste a livello di funzionalità

ed ecco perchè parliamo di concetti astratti. Un metodo astratto non ha parentesi graffe. Ad esempio:

public abstract void Test ( Base b ), è un metodo dichiratato, ma senza relativa implementazione, nel senso

che so cosa vorrei fargli fare, ma non so come farglielo fare. Se io ho una classe astratta Animale non posso

fare ad esempio new Animale( ). La classe astratta ha costruttori, ma questi non possono essere richiamati per

creare oggetti. Una classe astratta può anche essere caratterizzata da tutti metodi non astratti. Quindi viene da

chiederci: in una classe astratt ho qualche metodo concreo ovvero non astratto? La risposta è si.

Caratteristiche dell' eredità

Implements = mi comporto come // si riferisce all' interfaccia

Extends = sono figlio di // ruolo proprio di eredità

Mi si garantiscono più interfacce, ad esempio n finchè la memoria resiste.

5) Differenza tra classe astratta e interfaccia

L' interfaccia permette di definire il comportamento di una classe. L' interfaccia ha solo costanti e non può

avere metodi concreti, ma solo metodi che sono implicitamente definiti abstract. Le interfacce servono a

definire un modello, ma non una effettiva implementazione, e infatti le possiamo definire come contenitori

dove si inseriscono dei metodi da mettere a disposizione di tutte le classi, indipendentemente dalla gerarchia.

Le interfaccia sono simili per molti versi alle classi astratte, le quali sono classi che non possono essere

g iacomo.gargiulo.made4Core@gmail.com Pag 12

Appunti di Giacomo Gargiulo per info:

istanziate ( è possibile istanziare le relative sottoclassi ), utilizzate come una sorta di punto di riferimento per

una serie di classi correlate. Non è possibile costruire oggetti di tipo interfaccia, inoltre in molti casi è possibile

utilizzare le interfacce al posto delle classi, purchè i relativi metodi siano definiti altrove. Una classe poi può

implementare un numero qualsiasi di interfacce, questo significa che essa deve implementare tutti i relativi

metodi.

6) Metodo di passaggio dei parametri in Java

Quando l' istanza di un oggetto è passata come argomento ad un metodo, viene passata la copia del riferimento

all' oggetto. Nel passaggio di parametri passo la copia, ma da un punto di vista di memoria abbiamo la seguente

condizione: in questo caso sono due puntatori che puntano alla stessa area di memoria, ma si lavora con la

copia a livello di programmazione: x ---> | a= 10; b = 5 | <--- gli passo x' che punta all stessa area di memoria

puntata da x. Ad esempio:

// Passaggio di parametri

public void foo ( Dog d )

{ d.name.equals("Max"); // true

d = new Dog(" Fifi");

d.name.equals("Fifi"); // true

}

---------------------------------------------

Dog aDog = new Dog("Max");

foo( aDog );

aDog.name.equals("Max"); // true

Alla fine vedendo l' output, cambio la copia di riferimento x', ma non il valore della variabile x cioè Max.

Ricordiamo poi che il riferimento non può essere cambiato. Sono tutelato sulla reference che nessun mi può

distruggere.

Lezione 10 - Le eccezioni in Java

La classe Object si definisce come la ma di tutte le classi.

Object

^

|

|

Throwable

^

|

|

Exception

^

|

|

Not point exception AOB ( digli dell' exception )

Try

{

}

Catch ( Exception_A a)

{ g iacomo.gargiulo.made4Core@gmail.com Pag 13

Appunti di Giacomo Gargiulo per info:

}

Carch ( Exception_B b)

{

}

Finally

{

}

Class MyException extends Exception

{

}

MyException me = new MyException( );

Lezione 12 – Sistemi Operativi Mobili

push ( server --> client )

polling ( client --> server )

ogni applicazione gira in un proprio processo, quindi ha una propria run time e una propria virtual machine,

le applicazioni sono isolate tra loro in modo che se un applicazione crashi, non mette a repentaglio tutto il

sistema operativo.

Lezione 15 – Android – componenti e risorse

Di default sta scritto extends Object vicino a una classe

public class Pippo extends Object

{ Public Pippo( )

{ super( );

}

}

OnCreate è una call-back viene richiamata all' intero del sistema.

1) Ciclo di vita di una Activity ( slide 15 )

Le Activity rappresentano una possibile iterazione con l' utente e possono essere associate al concetto di

schermata, esse sono organizzate in una struttura Strack, e quella visibile è in cima allo stack. Il ciclo di vita di

una Activity funziona seguendo questi passi: dopo la costruzione dell' Activity, questa è pronta all' esecuzione e

viene messa in cima allo stack delle componenti visibili andando in Running. Poi un evento mette in pausa

l' Actived inserendola nelo stato di Paused: non è quindi sensibile agli eventi da parte degli utenti e viene

eliminata solamente in situazioni di estrema necessità. Se dopo essere stata messa in pausa, una nuova Activity

è Running, allora si entra nella fase di Stopped, quindi l' Activity non è nè attiva nè visibile e sarà tra le Activity

candidate a essere terminate. Quando viene terminata l' Activity, questa viene killata nell' ultima fase detta

Inactive.

2) In merito alla piattaforma Android, descrivere la gestione delle risorse e la gestione delle GUI via

XML ( vantaggi e svantaggi )

Android pone particolare attenzione alla gestione delle risorse, utilizzando principi di programmazione

dichiarativa ( in un file di tipo XML ). Il vantaggio di tale approccio sta nella possibilità di non dover

ricompilare il codice a valle di modifiche alle risorse, e anche il fatto che ilcodice può essere soggetto a diverse

g iacomo.gargiulo.made4Core@gmail.com Pag 14

Appunti di Giacomo Gargiulo per info:

interpretazioni in funzione del tipo di risorsa indicata dai tag. Inoltre il modo in cui Android gestisce le risorse

impone una rigorosa organizzazione della struttura del progetto in opportune cartelle. In un file di valori si può

inserire qualunque mix degli elementi e la prassi suggerisce di ripartire i differenti tipi di valore nei seguenti

file: arrays.xml per le dimensioni, string.xml per le stringhe e styles.xml per gli stili.

Pattern importante in Android -> MCV ( Model, View, Controller )

♦ Model Banca dati;

♦ View Vista dei contenuti, interfaccia grafica;

♦ Controller chi si occupa di far interagire la vista con i dati, cioè l' elaborazione dei contenuti.

3) Qual è il vantaggio di usare la programmazione dichiarativa in Android? ( XML )

Il vantaggio di tale approccio sta nella possibilità di non dover ricompilare il codice a valle di modificare alle

risorse, ed anche nel fatto che il codice può essere soggetto a diverse interpretazioni in funzione del tipo di

risorsa indicata dai tag. Ricordiamo poi che Android gestisce le risorse con una rigorosa organizzazione della

struttura del progetto in opportune cartelle.

Albero cartelle Android :

-Src = sorgenti

-Gen = generated Java Files

--> R è l' elenco delle risorse che saranno puntate dal codice Java ( esiste la comunicazione tra Java e XML )

-assets cartella che contiene risorse non compilate

-res Layout: dentro ci sono i file che descrivono l' organizzazione dell' Activity;

Strings: contiene l' elenco di bottoni e altre cose che possiamo configurare all' interno della nostra

applicazione

inner class: classi innestate

Lezione 19 - Android Intent

1) In merito alla piattaforma Android, descrivere il concetto di internet, ed esempio in pseudocodice

Un Intent è una descrizione astratta di una operazione, ovvero descrive ciò che l' applicazione vorrebbe fare,

eventualmente riutilizzando componenti esistenti. Le comunicazioni basate su Intent sono basate su tecniche di

"late runtime binding" tra componenti o di una stessa applicazione o di applicazioni diverse. La risoluzione

( Intent resolution ) delle richieste di azioni avviene a run time, tramite meccanismi messi a disposizione del

sistema operativo Android. L' Intent presenta poi l' Action datta category e il tipo di dati su cui agisce. Ad

esempio l' intenzione di aprire una pagina web tramite browser si traduce in una intent che ha come azione

predefinita VIEW e come dati la URL delle pagine Web, Ecco il codice:

Intent intent = new Intent ( android.content.Intent VIEW_ACTION, Uri.parse( http://www.google.it);

infine ci sono due tipi di Intent: Esplicita, quando l' Activity chiamante conosce l' Activity di destinazione,

Implicita quando non la conosce.

Lezione 21 – Android I/O

1) Descrivere brevemente il concetto di stream e le relative classi di I/O utilizzabili in Java/Android

Uno Stream è un canale di comunicazione collegato ad una sorgente o destinazione attraverso il quale le unità

di base dell' informazione ( i byte ) viaggiano in sequenza. Infatti per ricevere in ingresso dei dati, un

programma apre uno steam verso di esso e scrivendo sequenzialmente le informazioni in uscita.

Le varie classi che realizzano gli stream di byte si distinguono per il tipo di sorgente e destinazione con cui

possono dialogare. In Java.io sono definite due classi astratte InputStream e OutputStream che definiscono

l ' interfaccia di lettura/scrittura per gli stream di input e output rispettivamente. In particolare InputStream

dichiara i metodi che permettono di leggere i byte di una sorgente e la classe OutputStream fornisce un'

g iacomo.gargiulo.made4Core@gmail.com Pag 15

Appunti di Giacomo Gargiulo per info:

astrazione per scrivere i byte in una certa destinazione.

Stream: Un tipo particolare di collezioni, ma mentre queste ultime sono strutture dati che mancano i loro

elementi in memoria, gli utenti elaborano i loro elementi soltanto nel momento in cui sono richiesti, senza

quindi occupare grandi porzioni di memoria. Gli stream si distinguono perchè non sono strutture dati vere e

proprie e non utilizzano un' area prefissate di memoria, ma si servono di Pipeline, non l' accesso mediante

indici, ma possono essere facilmente inviati in output come array o liste.

2) Concetto di stream nella piattaforma Android ( Java ) e le caratteristiche di storage offerte dai device

Un programma apre uno stream su una sorgente di informazioni e ne legge sequenzialmente le informazioni

ad un destinatario, aprendo uno stream verso di esso e scrivendo sequenzialmente le informazioni ad un

destinatario, aprendo uno stream verso di esso e scrivendo sequenzialmente le informazioni in uscita.

Lo storage, che riguarda la memorizzazione dei file, può essere sia interno che esterno:

♦ Interno, essendo contenuto nel file system del dispositivo consentendo alle applicazioni di disporre

di una porzione di spazio per creare e leggere i file. Ricordiamo che tale spazio è gestito in maniera

esclusiva dell' applicazione, nel senso che altre applicazioni non possono accedervi.

♦ Esterno, che è un secondo spazio di memoria alternativo e solitamente si presenta attraverso

la presenza di una scheda ( esempio SD card ) che all' occorenza può essere rimossa o sostituita,

ma non è detto: in alcuni casi lo storage esterno è comunque interno al dispositivo e non è rimovibile.

Lezione 24 – Android Servizi

1) Descrivere brevemente il concetto di servizio in Android

Il servizio in Android è una parte di una applicazione che gira in background, a differenza delle attività,

i servizi non dispongono di un' interfaccia grafica attraverso la quale interagire con l' utente. I servizi non

vanno confusi nè con i processi nè con i thread e un servizio, in generale, gira all' interno del processo dell'

applicazione che lo ha lanciato. Un servizio, inoltre, possiede un proprio ciclo di vita che può essere controllato

tramite implementazine di metodi che ne tracciano lo stato: questi sono void onCreate( ),

void onStart( intent intent ) e void onDestroy( ). Oltre a questo i servizi si avvantaggiano delle interfacce

di programmazione messe a disposizione da Android e con queste si integrano con il sistema sottostante.

Ci sino poi due tipi di servizi principali: locali e remoti. La differenza sostanziale tra questi due è nella

modalità di interazione al servizio. Infine un servizio ricordiamo può essere arrestato per 3 cause principali:

o viene arrestato da un' altra applicazione, o si arresta da solo o viene arresta dal sistema se le risorse

scarseggiano e bisogna liberare la memoria.

Lezione 35_LBS Android Location Based Services

2) Descrivere i servizi di tipo Location Base ( LBS ) e le tecnologie su cui sono basati

Un' applicazione o un servizio possono definirsi location based quando lavorano con il posizionamento

geografico dell' utente. Le tecnologie su cui si basano questi servizi sono ad esempio i software di navigazione

satellitare: tra questi software ricordiamo il più importante è il GPS ( Global Positioning System ) che si

definisce come un sistema di localizzazione costituito da una serie di satelliti artificiali in orbita intorno al

pianeta. Ciascun satellite trasmette ciclicamente dei messaggi verso la superficie. I messaggi contengono il

segnale orario e delle informazioni sulle orbite percorse. Il ricevitore GPS ascolta questi messaggi e li elabora,

in base al ritardo dei segnali e ai contenuti dei messaggi, il ricevitore è in grado di calcolare la propria distanza

da ciascun satellite. Nel momento in cui il ricevitore riesce ad agganciare il segnale di quattro o più satelliti,

diventa possibile applicare un calcolo matematico detto triangolazione. In questa maniera, il ricevitore può

determinare la propria posizione dul globo, esprimendola in termini di latitudine e longitudine. Ovviamente

maggiore è il numero di satelliti di cui il dispositivo riceve il segnale, più accurata è la posizione calcolata.

g iacomo.gargiulo.made4Core@gmail.com Pag 16

Appunti di Giacomo Gargiulo per info:

Prova Giugno 2012

1) Descrivere brevemente la differenza tra mobile computing e wireless computing

// risposta scitta nella Prova di Maggio

I dispositivi portatili wireless superano i limiti di comunicazione rispetto ai dispositivi portatili che necessitano

della connesione wired, cioè la connessione via cavo. In molti casi i termini mobili e wireless sono spesso fonte

di confusione, considerando per esempio che le applicazioni wireless possone essere "non mobili" si utilizzano

reti wireless fisse e viceversa possiamo trovare applicazioni mobili che non sono wireless. Difronte a tutto

questo, per il mobile computing, che designa in modo generico l' insieme di operazioni computazionali che

consentono all' utente di accedere e/o elaborare informazioni da dispositivi portatili senza vincoli nella

posizione fisica, non è necessario che i dispositivi portatili necessitano di connessione wireless, visto che il

sistema di comunicazione wireless è solo un particolare mezzo di comunicazione.

2) Illustrare le differenze tra un applicazione basata su architetura wireless internet ed una basata su

architettura smart client.

Mentre una applicazione basata sull' architettura wireless intenet, che ha la stessa architettura delle applicazioni

Internet wired, presenta un accesso ai dati che richiedono necessariamente di una connessione di rete, ma

applicazioni basate nell' arrchitettura smart client presenta sia un meccanismo di data storage presenta sia la

logica di business in modo tale che l' applicazione stessa può eseguita anche in assenza di connessione wireless.

Quindi il principali vantaggio della seconda applicazione, a differenza della prima, è la presenza di dati sempre

disponibili anche in assenza di connessioni wireless, ricordiamo inoltre, mentre nelle applicazioni basate sulla

architettura wireless internet c' è l' aggiornamento dei dati costante, in quelli di tipo smart client si presenta

il problema dell' application deployment realmente alla gestione e manutenzione di applicazioni smart client da

remoto.

3) Descrivere il concetto di polimorfismo in un sistema ad oggetti.

Il polimorfismo indica la possibilità per i metodi di assumere più forme, cioè implementazioni diverse allo

interno della gerarchia delle classi. Insomma attraverso il polimorfismo c' è la possibilità che le classi derivata

implementino in modo differente i metodi e le proprietà dei propri strati: ciò rende possibile il fatto che oggetti

appartenenti a delle sottoclassi di una stessa classe rispondono diversamente alle stesse istruzioni. Ad esempio,

g iacomo.gargiulo.made4Core@gmail.com Pag 17

Appunti di Giacomo Gargiulo per info:


ACQUISTATO

6 volte

PAGINE

35

PESO

544.18 KB

AUTORE

GG4core

PUBBLICATO

+1 anno fa


DETTAGLI
Corso di laurea: Corso di laurea in informatica
SSD:
A.A.: 2016-2017

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher GG4core di informazioni apprese con la frequenza delle lezioni di Terminali Mobili e Multimedialità e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Parthenope - Uniparthenope o del prof Di Capua Michele.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Terminali mobili e multimedialità

Event, Intent, Menu e I/O Android
Appunto
Programmazione II  - esercizi
Esercitazione
Appunti Calcolo Numerico via HW2
Appunto
Calcolo parallelo e distribuito - Formulario
Appunto