SlideShare a Scribd company logo
Creare app native su
iOS, Android, Mac &
Windows in C#
Introduzione a C#
Gli speaker di oggi
Guido Magrin
Xamarin & Microsoft Student Partner
Xamarin Certified Developer
@GuidoMagrin
Dove trovo le slide?
http://www.slideshare.net/guidomagrin
Gli Xamarin Student Partner
https://www.facebook.com/XSAMilano
Cosa impareremo oggi?
• Fondamenti di C#
• Branching & Looping
• Programmazione ad oggetti
• Behaviors
• Debugging ed Exceptions
Chi ha già
sentito parlare
di C#?
Breve storia di C#
C# si è evoluto a partire da linguaggi come C, C++ e Java.
Xamarin Studio
PC o Mac
Plugin Visual Studio
VS 2010 e superiore
Ambienti di Sviluppo
Fondamenti
di C#
Statements
Commenti
Tipi
Tipi e Variabili
Tipi predefiniti
Tipi numerici
Valori booleani
Lavorare con le stringhe
Concatenazione di Stringhe
Lavorare con caratteri singoli
Lavorare con le variabili
Stampare variabili tramite Console
Output complesso a Console
Sicurezza sui Tipi
Come nominare una variabile?
Branching &
Looping
Scegliere tra due alternative, If
“Switch”
“While”
“For”
Programmazione
ad oggetti
Cos’è la programmazione ad oggetti?
In informatica la programmazione orientata agli oggetti (OOP, Object
Oriented Programming) è un paradigma di programmazione che permette
di definire oggetti software in grado di interagire gli uni con gli altri
attraverso lo scambio di messaggi
Definizione di nuovi tipi
L’idea base della programmazione ad oggetti è che il programmatore possa
creare nuovi tipi
Cos’è una classe?
La classe è un costrutto di un linguaggio di programmazione usato come
modello per creare oggetti
Cosa c’è in una classe?
Una classe contiene fields e metodi
Cos’è un field?
Un field è una variabile posseduta dalla classe che contiene il dato
Cos’è un metodo?
I metodi sono blocchi di codice, contenenti istruzioni C#, che “lavorano” con
i field della classe
Come identificare le classi che mi servono?
Quali sono le classi che
potenzialmente ci servirebbero per
descrivere un’app di routing?
Le classi sono modelli di cose nel mondo reale; possiamo spesso identificare
quali classi usare esaminando cosa l’app deve fare.
Come identificare le classi che mi servono?
• Mappa
• Posizione corrente
• Percorso
• Strada
Le classi sono modelli di cose nel mondo reale; possiamo spesso identificare
quali classi usare esaminando cosa l’app deve fare.
Cos’è un object?
Una classe definisce un template. Gli objects sono istanze di quel template.
Come definisco una classe?
Una classe C# ha un nome e un body. Il body è limitato da { e }
Ogni classe dovrebbe essere definita nel suo file (BankAccount.cs)
Innestamento di classi
Classi pubbliche VS Classi private
Bisogna prestare attenzione al livello di accessibilità che si vuole garantire ad ogni
singolo campo e metodo:
• Le altre classi hanno bisogno di accedere a questo campo, o è solamente utile allo
svolgimento di operazioni interne alla classe?
• Le altre classi possono trarre vantaggio dall’accedere a questo metodo?
Come creare objects?
Ogni oggetto possiede i propri field in maniera univoca
Come accedo ai fields di un object?
Uso l’operatore “punto” per accedere (leggere o modificare) i fields di un object
Behaviors
Come definisco un metodo?
Un metodo è dichiarato all’interno di una classe con un nome univoco che indica
di cosa si occupa il metodo
Come accedo ad un metodo?
Devo usare l’operatore “punto” e le parentesi
Passaggio di parametri a un metodo
I parametri di un metodo sono «pezzi aggiuntivi di informazioni» passati al
metodo dal chiamante.
Validazione di parametri
I parametri passati DEVONO essere del tipo richiesto dal metodo
Passaggio di parametri multipli
I parametri passati ad una classe possono essere anche di tipi differenti
Ritorno di valori da un metodo
Per ogni metodo deve essere definito il tipo ritornato. Nel caso non ritorni nulla,
si usa la keyword «void»
Overloading di un metodo
Talvolta un metodo può avere metodi con lo stesso nome ma che, a seconda
dei parametri passati, adempiono a funzioni differenti
Cos’è una property?
Una property C# consente un accesso regolato ad un determinato field
Debugging ed
Exceptions
Diverse tipologie di bug
Usare breakpoint per interrompere il programma
I breakpoint servono a interrompere l’esecuzione del programma in un punto
specifico
Modificare le condizioni di un breakpoint
Cos’è una exception?
Un’exception serve a gestire una condizione imprevista, durante l’esecuzione
del programma
A cosa ci serve un’exception?
A cosa ci serve un’exception?
Un’exception non gestita, solitamente, causa un crash nel programma
Catturare un’exception
Le exception devono essere catturate in maniera da gestire il caso
Catturare un’exception
Le exception devono essere catturate in maniera da gestire il caso
Catturare differenti tipologie di exception
E’ possibile specificare diversi catch, a seconda dell’eccezione che si intende catturare
Lanciare un’exception
E’ possibile generare manualmente un’exception per descrivere un problema
che causerebbe l’interruzione dell’esecuzione di un metodo
Altro su C#
LINQ, Eventi & Delegati
Supporto a LINQ
Gestione di Eventi & Delegati
Json.NET permette di lavorare agevolmente con stringhe in formato JSON e
oggetti .NET, grazie ai metodi SerializeObject e DeserializeObject
Lavorare con i JSON
C# con XamarinObjective-C
Differenze tra Obj-C e Xamarin C# – Classi e Metodi
C# con Xamarin
Objective-C
Semplificazione offerta da Async/Await
C# con XamarinJava
C# & Async con Xamarin
Click di oggetti – Android ItemClick

More Related Content

Introduction to C#

Editor's Notes

  1. LINQ consente di eseguire query e selezionare dati da array e database come SQLite Inoltre potremo lavorare con IntelliSense e le espressioni Lambda
  2. Xamarin Studio PC -> Android Mac -> iOS, Android, Mac Visual Studio: iOS, Android Windows
  3. LINQ consente di eseguire query e selezionare dati da array e database come SQLite Inoltre potremo lavorare con IntelliSense e le espressioni Lambda
  4. Questo è un esempio di come si crea una classe, in objective-C, paragonata al C#. E’ una classe che mi consente di salvare un nome e ottenerlo Tutto quell codice che vedete in Objective-C diventa una riga sola usando LINQ in C#, per non parlare delle properties di getters e setters Here is an example of creating a class with a method to get names 1 Line with LINQ to execute this command Take advantage of C# features and set properties easily
  5. Si aggiungono metodi agli oggetti con “+=“ e non abbiamo bisogno di implementare i listener su ogni oggetto, i listener sono caratteristici di Java e quindi Android. Lettura del parametro args