SlideShare a Scribd company logo
1 of 20
PROGRAMMAZIONE DI
APPLICAZIONI UWP
Dalle basi del C# alla creazione di un’applicazione pratica
Cramarossa Giuseppe
Microsoft Student Partner
23 Maggio 2016
Corso sulle UWP @ PoliBA
SOMMARIO
• Programmazione ad oggetti con riferimento al C#
• Tipi di dati
• Classi
• Metodi
• Proprietà
• Modificatori di accesso
• Eccezioni
• Personalizzazione dell’ interfaccia tramite codice
• Collegamento dell’app alle Mobile Service di Azure
GENERALITÀ SUL C#
• Linguaggio orientato agli oggetti
• Il problema da risolvere viene visto come un insieme di oggetti che si possono estendere,
includere o incapsulare
• Esempio: l’automobile
• Ruote, motore, volante, frizione, cambio, …
• La compilazione non produce direttamente il codice in linguaggio macchina
• Viene inizialmente compilato in un linguaggio intermedio (IL – Intermediate Language)
• Viene poi esguito dal CLR
• Piattaforme su cui sviluppare in C#: tutte
• Progetto Mono
DATI E TIPI DI DATI
• Durante l’esecuzione di un programma è necessario salvare o ottenere dati
• Variabili come contenitori di dati
• Esistono vari tipi di dati
• Interi
• Reali
• Stringhe
• Booleani
• Definiti dal programmatore
• …
• I tipi determinano le operazioni che si possono fare con i dati
• I dati sono identificati da un nome, che può essere scelto dal programmatore
ALCUNI TIPI DI DATI IN C#
Tipo di dato Notazione in C#
Intero* byte, short, int, long
Reale float, double
Booleano** bool
Stringa string
Tipi di dato composti classi organizzati in namespace, struct
* Anteponendo unsigned al tipo di dato, si possono assegnare solo valori senza segno (ad
esempio unsigned byte)
** Può assumere solo due valori: true o false
Per approfondimenti sui tipi di dati: https://msdn.microsoft.com/it-
it/library/ms228360%28v=vs.90%29.aspx e https://msdn.microsoft.com/it-
it/library/ms173104.aspx
CLASSI E OGGETTI
• La classe definisce un nuovo tipo di dato composto
• Campi e Proprietà
• Contengono i dati della classe. Tutti i metodi della classe potranno accedere alle proprietà
• Risponde alla domanda: cosa deve contenere l’oggetto?
• I campi sono generalmente privati
• Metodi
• Risponde alla domanda: cosa deve fare l’oggetto? E di cosa ha bisogno per farlo?
• Possono anche contenere dati, ma potranno essere utilizzati solamente nel metodo
• Possono ritornare valori di tutti i tipi
• Diventa oggetto quando viene usato come tipo di un dato per una variabile, un
campo, una proprietà o un metodo
• L’oggetto è l’istanza di una classe
MODIFICATORI DI ACCESSO DELLE
PROPRIETÀ E DEI METODI
• Oltre a un tipo, un dato può avere una visibilità
• Si vedranno solo public e private
Visibilità (C#) Descrizione
private La proprietà o il metodo è visibile solo all’interno della classe che lo
contiene
public La proprietà o il metodo è visibile all’interno e all’esterno della classe
che lo contiene
protected Simile a private, con la differenza che il metodo o la proprietà è visibile
anche alle classi derivate
internal Visibile solo all’interno del namespace
Per approfondire l’argomento: https://msdn.microsoft.com/it-it/library/6tcf2h8w.aspx
ESEMPIO PRATICO DI UN OGGETTO DI USO
COMUNE: LA PENNA
• Alcune proprietà
• Lunghezza : numero
• Marca : stringa
• Tappo : può essere visto come un oggetto a sè stante
• Ha le sue proprietà e i suoi metodi
• Alcuni metodi
• Scrive un testo su un supporto
• Disegna una figura
• Scarica l’inchiostro
• Metodo privato
ESEMPIO PRATICO DELLA PENNA IN C#
ECCEZIONI
• Gestire comportamenti anomali
• Un numero di telefono contiene anche dei caratteri
• Si vuole dividere un numero per zero
• Blocco try/catch
• Nel try vengono inserite le istruzioni da fare normalmente
• Nel catch vengono invece inserite le istruzioni da eseguire in caso si verifica l’eccezione
• Le eccezioni vengono definite in classi con postfisso «Exception»
• Alcune sono già implementate (es. divisione per zero, file non trovato)
• Si possono creare anche eccezioni personalizzate
ESEMPIO DI GESTIONE DELLE ECCEZIONI
L’ESEMPIO CHE REALIZZEREMO -
DESCRIZIONE
• Un semplice gestore di un portafoglio
• Dati che verranno inseriti
• Causale credito/pagamento
• Importo
• Decidere se è un credito o un pagamento
• Uso di due ListView per memorizzare i pagamenti e i crediti
• Contatore con saldo attuale
• Utilizzo delle mobile services per salvare i dati su Azure
• Per approfondimenti vedere SLIDE 19
L’ESEMPIO CHE REALIZZEREMO –
PROGETTAZIONE CLASSI
L’ESEMPIO CHE REALIZZEREMO –
PROGETTAZIONE INTERFACCIA
Input Causale Pagamento
Input Valore
Casella che, se spuntata, indica che il pagamento è un credito
Bottone Aggiungi Pagamento
Totale:
Lista Crediti Lista Debiti
L’ESEMPIO CHE REALIZZEREMO –
L’INTERFACCIA REALIZZATA
TIPICA ESECUZIONE - PROGRAMMA
TIPICA ESECUZIONE – RECORD
MEMORIZZATI SUL DATABASE
LINK PER APPROFONDIRE
• Mobile Services
• https://channel9.msdn.com/Series/Windows-Azure-Mobile-Services
• Serie in inglese
• https://azure.microsoft.com/it-it/documentation/services/mobile-services/
• Documentazione in italiano
• http://www.slideshare.net/GiuseppeCramarossa/cloud-development-with-microsoft-azure-
guida-pratica-alle-mobile-services-e-una-semplice-demo-per-dispositivi-android
• Guida passo passo per implementare le mobile services in un’ applicazione per dispositivi
Android utilizzando Andoid Studio
• Guida passo passo per implementare le mobile services in un progetto creato con Visual Studio
LINK PER APPROFONDIRE
• C#
• Link inseriti nelle slide precedenti
• https://msdn.microsoft.com/it-it/library/512aeb7t.aspx
• Approfondimento sui Generics, utilizzati per interfacciarsi con la libreria per le Mobile Services
• https://msdn.microsoft.com/it-it/library/b2s063f7.aspx
• Utile per creare codice ben documentato
• UWP
• https://msdn.microsoft.com/it-it/library/windows/apps/dn958439.aspx
• Informazioni di base sulle UWP
• https://github.com/gcramarossa/SimpleUWPWalletManager
• Demo svolta
GRAZIE PER L’ATTENZIONE

More Related Content

Viewers also liked (13)

Inglesa1 sinspeaking-150515103012-lva1-app6891
Inglesa1 sinspeaking-150515103012-lva1-app6891Inglesa1 sinspeaking-150515103012-lva1-app6891
Inglesa1 sinspeaking-150515103012-lva1-app6891
 
Marrion Kujinga ; Firewalls
Marrion Kujinga ; FirewallsMarrion Kujinga ; Firewalls
Marrion Kujinga ; Firewalls
 
El cheque peru
El cheque peruEl cheque peru
El cheque peru
 
30 enero al 5 febrero
30 enero al 5 febrero30 enero al 5 febrero
30 enero al 5 febrero
 
presentació
presentaciópresentació
presentació
 
L'origen dels planetes
L'origen dels planetesL'origen dels planetes
L'origen dels planetes
 
5 reasons you need to engage a design agency for your website
5 reasons you need to engage a design agency for your website5 reasons you need to engage a design agency for your website
5 reasons you need to engage a design agency for your website
 
Paidéia parkatejê os gavião do pará
Paidéia parkatejê   os gavião do paráPaidéia parkatejê   os gavião do pará
Paidéia parkatejê os gavião do pará
 
STAND LOCAL
STAND LOCAL STAND LOCAL
STAND LOCAL
 
Global Innovation Roundtable
Global Innovation Roundtable Global Innovation Roundtable
Global Innovation Roundtable
 
logic in sinhala
logic in sinhalalogic in sinhala
logic in sinhala
 
Juneanthony Quintos Duque CV 07-February-2016
Juneanthony Quintos Duque CV 07-February-2016Juneanthony Quintos Duque CV 07-February-2016
Juneanthony Quintos Duque CV 07-February-2016
 
eBIZ.com Pvt. Ltd. (latest ppt 2013)
eBIZ.com Pvt. Ltd. (latest ppt 2013)eBIZ.com Pvt. Ltd. (latest ppt 2013)
eBIZ.com Pvt. Ltd. (latest ppt 2013)
 

Similar to Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’applicazione pratica

Introduction to C#
Introduction to C#Introduction to C#
Introduction to C#Guido Magrin
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDDotNetCampus
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Codemotion
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...DrupalDay
 
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagram
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagramIl linguaggio UML - Teoria ed esempi pratici sugli use case diagram
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagramGiuseppe Cramarossa
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerAlessandro Alpi
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Wellnet srl
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Eugenio Minardi
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)Sabino Labarile
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Codemotion
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech LabUgo Landini
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataVincenzo Manzoni
 

Similar to Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’applicazione pratica (20)

Introduction to C#
Introduction to C#Introduction to C#
Introduction to C#
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
06 3 struct
06 3 struct06 3 struct
06 3 struct
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
Corso ABAP OO 02
Corso ABAP OO   02Corso ABAP OO   02
Corso ABAP OO 02
 
Repository pattern
Repository patternRepository pattern
Repository pattern
 
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
 
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagram
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagramIl linguaggio UML - Teoria ed esempi pratici sugli use case diagram
Il linguaggio UML - Teoria ed esempi pratici sugli use case diagram
 
OOP with C#
OOP with C#OOP with C#
OOP with C#
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL Server
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
 
Usare Knockout JS
Usare Knockout JSUsare Knockout JS
Usare Knockout JS
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech Lab
 
Presentazione Tesi
Presentazione TesiPresentazione Tesi
Presentazione Tesi
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big Data
 

More from Giuseppe Cramarossa

Lezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RLezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RGiuseppe Cramarossa
 
Lezione 8 - Teoria - Progettare una base di dati
Lezione 8 - Teoria - Progettare una base di datiLezione 8 - Teoria - Progettare una base di dati
Lezione 8 - Teoria - Progettare una base di datiGiuseppe Cramarossa
 
Lezione 6 - Accenni sull’ingegneria del software
Lezione 6 - Accenni sull’ingegneria del softwareLezione 6 - Accenni sull’ingegneria del software
Lezione 6 - Accenni sull’ingegneria del softwareGiuseppe Cramarossa
 
Lezione 4 - Pratica - Lavorare in azienda: il teamwork
Lezione 4 - Pratica - Lavorare in azienda: il teamworkLezione 4 - Pratica - Lavorare in azienda: il teamwork
Lezione 4 - Pratica - Lavorare in azienda: il teamworkGiuseppe Cramarossa
 
Lezione 4 - Teoria - Lavorare in azienda: organizzazione aziendale e strumenti
Lezione 4 - Teoria - Lavorare in azienda: organizzazione aziendale e strumentiLezione 4 - Teoria - Lavorare in azienda: organizzazione aziendale e strumenti
Lezione 4 - Teoria - Lavorare in azienda: organizzazione aziendale e strumentiGiuseppe Cramarossa
 
Lezione 1 - Teoria - Accenni sulle reti e sui servizi internet
Lezione 1 - Teoria - Accenni sulle reti e sui servizi internetLezione 1 - Teoria - Accenni sulle reti e sui servizi internet
Lezione 1 - Teoria - Accenni sulle reti e sui servizi internetGiuseppe Cramarossa
 
Cortana, non solo un' assistente vocale
Cortana, non solo un' assistente vocaleCortana, non solo un' assistente vocale
Cortana, non solo un' assistente vocaleGiuseppe Cramarossa
 
Internet services, protocols, applications, packets and frames
Internet services, protocols, applications, packets and framesInternet services, protocols, applications, packets and frames
Internet services, protocols, applications, packets and framesGiuseppe Cramarossa
 
UWP e Mobile App Mobile Services
UWP e Mobile App Mobile ServicesUWP e Mobile App Mobile Services
UWP e Mobile App Mobile ServicesGiuseppe Cramarossa
 
Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...
Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...
Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...Giuseppe Cramarossa
 
Arduino + Azure: Realizzazione pratica di circuiti usando vari sensori e app ...
Arduino + Azure: Realizzazione pratica di circuiti usando vari sensori e app ...Arduino + Azure: Realizzazione pratica di circuiti usando vari sensori e app ...
Arduino + Azure: Realizzazione pratica di circuiti usando vari sensori e app ...Giuseppe Cramarossa
 
Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web ...
Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web ...Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web ...
Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web ...Giuseppe Cramarossa
 

More from Giuseppe Cramarossa (16)

Lezione 9 - Il linguaggio SQL
Lezione 9 - Il linguaggio SQLLezione 9 - Il linguaggio SQL
Lezione 9 - Il linguaggio SQL
 
Lezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RLezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-R
 
Lezione 8 - Teoria - Progettare una base di dati
Lezione 8 - Teoria - Progettare una base di datiLezione 8 - Teoria - Progettare una base di dati
Lezione 8 - Teoria - Progettare una base di dati
 
Lezione 6 - Accenni sull’ingegneria del software
Lezione 6 - Accenni sull’ingegneria del softwareLezione 6 - Accenni sull’ingegneria del software
Lezione 6 - Accenni sull’ingegneria del software
 
Lezione 5 - L'HTML
Lezione 5 - L'HTMLLezione 5 - L'HTML
Lezione 5 - L'HTML
 
Lezione 4 - Pratica - Lavorare in azienda: il teamwork
Lezione 4 - Pratica - Lavorare in azienda: il teamworkLezione 4 - Pratica - Lavorare in azienda: il teamwork
Lezione 4 - Pratica - Lavorare in azienda: il teamwork
 
Lezione 4 - Teoria - Lavorare in azienda: organizzazione aziendale e strumenti
Lezione 4 - Teoria - Lavorare in azienda: organizzazione aziendale e strumentiLezione 4 - Teoria - Lavorare in azienda: organizzazione aziendale e strumenti
Lezione 4 - Teoria - Lavorare in azienda: organizzazione aziendale e strumenti
 
Lezione 3 - Il CMS Joomla
Lezione 3 - Il CMS JoomlaLezione 3 - Il CMS Joomla
Lezione 3 - Il CMS Joomla
 
Lezione 2 - Il World Wide Web
Lezione 2  - Il World Wide WebLezione 2  - Il World Wide Web
Lezione 2 - Il World Wide Web
 
Lezione 1 - Teoria - Accenni sulle reti e sui servizi internet
Lezione 1 - Teoria - Accenni sulle reti e sui servizi internetLezione 1 - Teoria - Accenni sulle reti e sui servizi internet
Lezione 1 - Teoria - Accenni sulle reti e sui servizi internet
 
Cortana, non solo un' assistente vocale
Cortana, non solo un' assistente vocaleCortana, non solo un' assistente vocale
Cortana, non solo un' assistente vocale
 
Internet services, protocols, applications, packets and frames
Internet services, protocols, applications, packets and framesInternet services, protocols, applications, packets and frames
Internet services, protocols, applications, packets and frames
 
UWP e Mobile App Mobile Services
UWP e Mobile App Mobile ServicesUWP e Mobile App Mobile Services
UWP e Mobile App Mobile Services
 
Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...
Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...
Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...
 
Arduino + Azure: Realizzazione pratica di circuiti usando vari sensori e app ...
Arduino + Azure: Realizzazione pratica di circuiti usando vari sensori e app ...Arduino + Azure: Realizzazione pratica di circuiti usando vari sensori e app ...
Arduino + Azure: Realizzazione pratica di circuiti usando vari sensori e app ...
 
Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web ...
Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web ...Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web ...
Arduino + Azure: Dal circuito allo sketch e controllo remoto con una app web ...
 

Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’applicazione pratica

  • 1. PROGRAMMAZIONE DI APPLICAZIONI UWP Dalle basi del C# alla creazione di un’applicazione pratica Cramarossa Giuseppe Microsoft Student Partner 23 Maggio 2016 Corso sulle UWP @ PoliBA
  • 2. SOMMARIO • Programmazione ad oggetti con riferimento al C# • Tipi di dati • Classi • Metodi • Proprietà • Modificatori di accesso • Eccezioni • Personalizzazione dell’ interfaccia tramite codice • Collegamento dell’app alle Mobile Service di Azure
  • 3. GENERALITÀ SUL C# • Linguaggio orientato agli oggetti • Il problema da risolvere viene visto come un insieme di oggetti che si possono estendere, includere o incapsulare • Esempio: l’automobile • Ruote, motore, volante, frizione, cambio, … • La compilazione non produce direttamente il codice in linguaggio macchina • Viene inizialmente compilato in un linguaggio intermedio (IL – Intermediate Language) • Viene poi esguito dal CLR • Piattaforme su cui sviluppare in C#: tutte • Progetto Mono
  • 4. DATI E TIPI DI DATI • Durante l’esecuzione di un programma è necessario salvare o ottenere dati • Variabili come contenitori di dati • Esistono vari tipi di dati • Interi • Reali • Stringhe • Booleani • Definiti dal programmatore • … • I tipi determinano le operazioni che si possono fare con i dati • I dati sono identificati da un nome, che può essere scelto dal programmatore
  • 5. ALCUNI TIPI DI DATI IN C# Tipo di dato Notazione in C# Intero* byte, short, int, long Reale float, double Booleano** bool Stringa string Tipi di dato composti classi organizzati in namespace, struct * Anteponendo unsigned al tipo di dato, si possono assegnare solo valori senza segno (ad esempio unsigned byte) ** Può assumere solo due valori: true o false Per approfondimenti sui tipi di dati: https://msdn.microsoft.com/it- it/library/ms228360%28v=vs.90%29.aspx e https://msdn.microsoft.com/it- it/library/ms173104.aspx
  • 6. CLASSI E OGGETTI • La classe definisce un nuovo tipo di dato composto • Campi e Proprietà • Contengono i dati della classe. Tutti i metodi della classe potranno accedere alle proprietà • Risponde alla domanda: cosa deve contenere l’oggetto? • I campi sono generalmente privati • Metodi • Risponde alla domanda: cosa deve fare l’oggetto? E di cosa ha bisogno per farlo? • Possono anche contenere dati, ma potranno essere utilizzati solamente nel metodo • Possono ritornare valori di tutti i tipi • Diventa oggetto quando viene usato come tipo di un dato per una variabile, un campo, una proprietà o un metodo • L’oggetto è l’istanza di una classe
  • 7. MODIFICATORI DI ACCESSO DELLE PROPRIETÀ E DEI METODI • Oltre a un tipo, un dato può avere una visibilità • Si vedranno solo public e private Visibilità (C#) Descrizione private La proprietà o il metodo è visibile solo all’interno della classe che lo contiene public La proprietà o il metodo è visibile all’interno e all’esterno della classe che lo contiene protected Simile a private, con la differenza che il metodo o la proprietà è visibile anche alle classi derivate internal Visibile solo all’interno del namespace Per approfondire l’argomento: https://msdn.microsoft.com/it-it/library/6tcf2h8w.aspx
  • 8. ESEMPIO PRATICO DI UN OGGETTO DI USO COMUNE: LA PENNA • Alcune proprietà • Lunghezza : numero • Marca : stringa • Tappo : può essere visto come un oggetto a sè stante • Ha le sue proprietà e i suoi metodi • Alcuni metodi • Scrive un testo su un supporto • Disegna una figura • Scarica l’inchiostro • Metodo privato
  • 9. ESEMPIO PRATICO DELLA PENNA IN C#
  • 10. ECCEZIONI • Gestire comportamenti anomali • Un numero di telefono contiene anche dei caratteri • Si vuole dividere un numero per zero • Blocco try/catch • Nel try vengono inserite le istruzioni da fare normalmente • Nel catch vengono invece inserite le istruzioni da eseguire in caso si verifica l’eccezione • Le eccezioni vengono definite in classi con postfisso «Exception» • Alcune sono già implementate (es. divisione per zero, file non trovato) • Si possono creare anche eccezioni personalizzate
  • 11. ESEMPIO DI GESTIONE DELLE ECCEZIONI
  • 12. L’ESEMPIO CHE REALIZZEREMO - DESCRIZIONE • Un semplice gestore di un portafoglio • Dati che verranno inseriti • Causale credito/pagamento • Importo • Decidere se è un credito o un pagamento • Uso di due ListView per memorizzare i pagamenti e i crediti • Contatore con saldo attuale • Utilizzo delle mobile services per salvare i dati su Azure • Per approfondimenti vedere SLIDE 19
  • 13. L’ESEMPIO CHE REALIZZEREMO – PROGETTAZIONE CLASSI
  • 14. L’ESEMPIO CHE REALIZZEREMO – PROGETTAZIONE INTERFACCIA Input Causale Pagamento Input Valore Casella che, se spuntata, indica che il pagamento è un credito Bottone Aggiungi Pagamento Totale: Lista Crediti Lista Debiti
  • 15. L’ESEMPIO CHE REALIZZEREMO – L’INTERFACCIA REALIZZATA
  • 16. TIPICA ESECUZIONE - PROGRAMMA
  • 17. TIPICA ESECUZIONE – RECORD MEMORIZZATI SUL DATABASE
  • 18. LINK PER APPROFONDIRE • Mobile Services • https://channel9.msdn.com/Series/Windows-Azure-Mobile-Services • Serie in inglese • https://azure.microsoft.com/it-it/documentation/services/mobile-services/ • Documentazione in italiano • http://www.slideshare.net/GiuseppeCramarossa/cloud-development-with-microsoft-azure- guida-pratica-alle-mobile-services-e-una-semplice-demo-per-dispositivi-android • Guida passo passo per implementare le mobile services in un’ applicazione per dispositivi Android utilizzando Andoid Studio • Guida passo passo per implementare le mobile services in un progetto creato con Visual Studio
  • 19. LINK PER APPROFONDIRE • C# • Link inseriti nelle slide precedenti • https://msdn.microsoft.com/it-it/library/512aeb7t.aspx • Approfondimento sui Generics, utilizzati per interfacciarsi con la libreria per le Mobile Services • https://msdn.microsoft.com/it-it/library/b2s063f7.aspx • Utile per creare codice ben documentato • UWP • https://msdn.microsoft.com/it-it/library/windows/apps/dn958439.aspx • Informazioni di base sulle UWP • https://github.com/gcramarossa/SimpleUWPWalletManager • Demo svolta