SlideShare una empresa de Scribd logo
1 de 70
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

Más contenido relacionado

La actualidad más candente

Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoGabriele Gaggi
 
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Luca Zulian
 
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controNativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controCarmelo Ruota
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETStefano Ottaviani
 
App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile PowerappsGiuneco S.r.l
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazorNicolò Carandini
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinFabio Cozzolino
 
Community Days 2015 Introduzione a Xamarin
Community Days 2015  Introduzione a XamarinCommunity Days 2015  Introduzione a Xamarin
Community Days 2015 Introduzione a XamarinDan Ardelean
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSGiovanni Buffa
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioGiuneco S.r.l
 
Notifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele CoppolaNotifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele CoppolaGiuneco S.r.l
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Progettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web DesignProgettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web DesignSalvatore Paone
 

La actualidad más candente (20)

AngularJS 2.0
AngularJS 2.0 AngularJS 2.0
AngularJS 2.0
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
 
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 
Xamarin
XamarinXamarin
Xamarin
 
Nativo vs Xamarin pro e contro
Nativo vs Xamarin pro e controNativo vs Xamarin pro e contro
Nativo vs Xamarin pro e contro
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
 
App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile Powerapps
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Community Days 2015 Introduzione a Xamarin
Community Days 2015  Introduzione a XamarinCommunity Days 2015  Introduzione a Xamarin
Community Days 2015 Introduzione a Xamarin
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele Gaggio
 
Xcode - Just do it
Xcode - Just do itXcode - Just do it
Xcode - Just do it
 
Notifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele CoppolaNotifiche Locali vs Notifiche Push - di Gabriele Coppola
Notifiche Locali vs Notifiche Push - di Gabriele Coppola
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Workshop angular
Workshop angularWorkshop angular
Workshop angular
 
Progettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web DesignProgettare in Team per il Responsive Web Design
Progettare in Team per il Responsive Web Design
 

Similar a Introduction to C#

Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...Giuseppe Cramarossa
 
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014Marco Parenzan
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereMatteo Valoriani
 
Inversion of Control @ CD2008
Inversion of Control @ CD2008Inversion of Control @ CD2008
Inversion of Control @ CD2008Mauro Servienti
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
 
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwpCorso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwpGiuseppe Cramarossa
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 
Slide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScriptSlide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScriptLuca Pagliaro
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Antonio Musarra
 
Una fugace occhiata al Test Driven Development (2006)
Una fugace occhiata al Test Driven Development  (2006)Una fugace occhiata al Test Driven Development  (2006)
Una fugace occhiata al Test Driven Development (2006)Roberto Bettazzoni
 
Repository pattern slides v1.1
Repository pattern slides v1.1Repository pattern slides v1.1
Repository pattern slides v1.1Christian Nastasi
 
Clean programming 2020-01-25 @ Modena Tech Summit
Clean programming 2020-01-25 @ Modena Tech SummitClean programming 2020-01-25 @ Modena Tech Summit
Clean programming 2020-01-25 @ Modena Tech SummitDavide Muzzarelli
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaDario Rusignuolo
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOSGaspare Novara
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitalelostrettodigitale
 
Test Driven Development @ Xe.Net
Test Driven Development @ Xe.NetTest Driven Development @ Xe.Net
Test Driven Development @ Xe.NetMauro Servienti
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsCommit University
 

Similar a Introduction to C# (20)

Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
Programmazione di applicazioni UWP - Dalle basi del C# alla creazione di un’a...
 
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014
Modelli applicativi per il Cloud Computing - Part 1 - Edition 2014
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
 
Software Testing e TDD
Software Testing e TDDSoftware Testing e TDD
Software Testing e TDD
 
Inversion of Control @ CD2008
Inversion of Control @ CD2008Inversion of Control @ CD2008
Inversion of Control @ CD2008
 
Guida C++
Guida C++Guida C++
Guida C++
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwpCorso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
Corso c# - Dalle basi del linguaggio alla creazione di un'applicazione uwp
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
Slide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScriptSlide evento Code Refactoring JavaScript
Slide evento Code Refactoring JavaScript
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1
 
Una fugace occhiata al Test Driven Development (2006)
Una fugace occhiata al Test Driven Development  (2006)Una fugace occhiata al Test Driven Development  (2006)
Una fugace occhiata al Test Driven Development (2006)
 
Repository pattern slides v1.1
Repository pattern slides v1.1Repository pattern slides v1.1
Repository pattern slides v1.1
 
Clean programming 2020-01-25 @ Modena Tech Summit
Clean programming 2020-01-25 @ Modena Tech SummitClean programming 2020-01-25 @ Modena Tech Summit
Clean programming 2020-01-25 @ Modena Tech Summit
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOS
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitale
 
Test Driven Development @ Xe.Net
Test Driven Development @ Xe.NetTest Driven Development @ Xe.Net
Test Driven Development @ Xe.Net
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step Functions
 

Más de Guido Magrin

Xamarin.iOS introduction
Xamarin.iOS introductionXamarin.iOS introduction
Xamarin.iOS introductionGuido Magrin
 
Xamarin.Android Introduction
Xamarin.Android IntroductionXamarin.Android Introduction
Xamarin.Android IntroductionGuido Magrin
 
LGL Team - UniShare & UniBuy
LGL Team -  UniShare & UniBuyLGL Team -  UniShare & UniBuy
LGL Team - UniShare & UniBuyGuido Magrin
 
Evius Presentation
Evius PresentationEvius Presentation
Evius PresentationGuido Magrin
 
Enel Smart Info presentation
Enel Smart Info presentationEnel Smart Info presentation
Enel Smart Info presentationGuido Magrin
 
Microsoft Azure Websites
Microsoft Azure WebsitesMicrosoft Azure Websites
Microsoft Azure WebsitesGuido Magrin
 

Más de Guido Magrin (6)

Xamarin.iOS introduction
Xamarin.iOS introductionXamarin.iOS introduction
Xamarin.iOS introduction
 
Xamarin.Android Introduction
Xamarin.Android IntroductionXamarin.Android Introduction
Xamarin.Android Introduction
 
LGL Team - UniShare & UniBuy
LGL Team -  UniShare & UniBuyLGL Team -  UniShare & UniBuy
LGL Team - UniShare & UniBuy
 
Evius Presentation
Evius PresentationEvius Presentation
Evius Presentation
 
Enel Smart Info presentation
Enel Smart Info presentationEnel Smart Info presentation
Enel Smart Info presentation
 
Microsoft Azure Websites
Microsoft Azure WebsitesMicrosoft Azure Websites
Microsoft Azure Websites
 

Introduction to C#

Notas del editor

  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