C# 2.0, un an après Mitsuru FURUTA

Slides:



Advertisements
Présentations similaires
La boucle for : init7.c et init71.c
Advertisements

Programmation Orienté Objet en C++
Formation universitaire à .NET: Introduction à C#
C#3 et le projet Linq Mitsuru FURUTA
Linq, fonctionnement et architecture
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Introduction à l’Algorithmique
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
Conception de Programmes Evolutifs Pré Soutenance de TER Année Encadrants : Cathy Escazut et Michel Gautero Auteurs: Paul-Kenji Cahier Sylvain.
Conception de Programmes Evolutifs
L’architecture .net et ASP.net
Approfondissement du langage
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
C.
Programmer en JAVA par Tama
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
Chapitre III Héritage (début)
Principes de programmation (suite)
Mitsuru FURUTA Relations techniques développeurs Microsoft France
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
POO-L3 H. Fauconnier1 Chapitre IV 1. classe Object, clonage 2. interfaces 3. classes internes et imbriquées.
Exposé de 3ème année Refactoring. 28 novembre 2013 Merci de votre venue Champs Sur Marne, France Présentateur: M. Damien Trouillet Apprenti.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Types de données abstrait et mécanismes d'encapsulation
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
NET LINQ, ADO Vnext, Orcas,… Pierre COUZY Stéphane GOUDEAU Architecte en Système d’information Division Plateformes et Ecosystème Microsoft France.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
Entity Framework 4 Mitsuru FURUTA Relations techniques développeurs
DataBinding avancé Mitsuru FURUTA, relations techniques développeurs –
Les assertions en Java.
2.1 - Historique Chapitre 2 : Introduction au langage C++
JavaScript Nécessaire Web.
Linq & les expressions lambda. L Language In Integrated Q Query.
Copyright © SUPINFO. All rights reserved La Programmation Orientée Objet en C# 2.0.
La notion de type revisitée en POO
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
Créer des packages.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Chapitre 7 Calcul littéral.
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
12/04/ Les exceptions Cours 11 Cours 11.
Programmation Système et Réseau
Introduction au langage C Fonctions et Procédures
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Code Contracts Gilles TOURREAU - MVP C# Architecte .NET / Formateur
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
6ième Classe (Mercredi, 17 novembre) CSI2572
Chapitre VII Techniques plus avancées à travers le concept de classe.
Développement d’application Nomade (iOS & Xamarin)
1 Complément JAVA les assertions. 2 lan Tests et erreurs Assertions en Java Utilisation Bonne pratique des assertions.
Généricité.
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
PRÉSENTATION AGL LES TESTS LOGICIELS LES TEST LOGICIELS 1 Mickael BETTINELLI Brandon OZIOL Gaétan PHILIPPE Simon LUAIRE.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Transcription de la présentation:

C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.com – http://blogs.microsoft.fr/mitsufu

Agenda Introduction Generics Nullables -- Pause -- Méthodes anonymes Itérations …C# 3.0

Introduction Pourquoi une telle présentation ? Au delà de la compréhension technique, un nouveau langage demande également à être assimilé et intégré dans nos habitudes de développement. C# 2.0 apporte plusieurs nouvelles extensions importantes permettant d’exploiter toujours au mieux les nouveautés de la plate-forme .Net 2.0. Avant d’adopter ces nouveautés, il est nécessaire d’en comprendre à la fois les intérêts et les contraintes.

Les generics Les generics permettent aux classes, structures, interfaces, délégués et méthodes d’être paramètrés par les types de données qu’ils stockent et qu’ils manipulent. Les types ainsi définis apportent: la robustesse d’un typage fort la clarté du code (plus de casts) la performance en supprimant les boxing/unboxing la sécurité d’une vérification accrue à la compilation Bien que ressemblant fortement aux templates du C++, la syntaxe de C# 2.0 offre une approche plus simple et plus sécurisée. (limitations, contraintes)

Les generics: syntaxe class MyClass<T> {} struct MyStruct<T> {} delegate R MyDelegate<P, R>(P param); interface IMyInterface<T> { T GetData(); } void MyMethod<T>(List<T> param) {}; Contraintes: where, new(), struct Le mot clé “default” Attention aux overloads Ne pas casser la programmation objet !

Generics: syntaxe et introduction + Reflector Demo Generics: syntaxe et introduction + Reflector

Les generics: inférence de type Possibilité d’omettre un paramètre de type lorsque le compilateur peut le déduire de manière certaine Cette fonctionnalité est primordiale pour la simplicité d’écriture des séquences Linq q.Select<string>().ToList<string>().First<string>(); q.Select().ToList().First();

Generics: l’inférence de type Demo Generics: l’inférence de type

Les generics: compilation et reflection Nature de la compilation Les generics ne sont pas des templates ! Les vérifications de types ont bien lieu à la compilation comme avec un pré-processeur de templates Mais les classes typées ne sont pas compilées en IL (!= java) Les generics sont identifiés dans les assembly .Net Les classes (ou méthodes) fortement typées sont compilées nativement au moment de la première utilisation de chacune La reflection de la CLR 2.0 a été étendue pour récupérer ces informations de type Tests: t.IsGenericType, t.IsGenericTypeDefinition Création: Type.MakeGenericType()

Generics: la reflection Demo Generics: la reflection

Les generics: compilation et reflection Quelques dangers: Membres statiques Classes imbriquées

Les generics: cas d’utilisation FileLineReader Gestion d’un cache d’objects

Generics: cas d’utilisation FileLineReader Gestion d’un cache d’objets Demo Generics: cas d’utilisation FileLineReader Gestion d’un cache d’objets

Les nullables Syntaxe et définition: Le cas de DBNull.Value Les nullables sont des structures génériques qui permettent de remplacer les types « valeurs » en leur apportant la possibilité d’être null. Nullable<Int> i; i = 123; int j = (int) i; int j = i.Value; if (i.HasValue) Le cas de DBNull.Value

Nullables: définition + Reflector Demo Nullables: définition + Reflector

Pause

Les méthodes anonymes Syntaxe et définition Les méthodes anonymes permettent de fournir à un délégué des instructions directement « inlinées » à l’endroit où le délégué est affecté. Tous les évènements et callbacks du framework .Net étant basés sur des délégués, les méthodes anonymes simplifient grandement leur usage. Outre une simplification d’écriture, les méthodes anonymes permettent d’avoir un accès partagé avec la portée locale. L’exécution réelle du délégué pouvant être asynchrone, une structure complexe permet la « survie » des données partagées au-delà de la méthode « hôte ».

Demo Les méthodes anonymes: Introduction + Reflector Méthodes de List<>

Les méthodes anonymes: Exécution différée et exécution parallèle Demo Les méthodes anonymes: Exécution différée et exécution parallèle

Les méthodes anonymes Comportement avec les instructions de bloc Attention à la lisibilité ! Le cas du try…catch Profiter de l’exécution différée Factoriser les instructions de bloc !

Les méthodes anonymes: Les instructions de bloc Demo Les méthodes anonymes: Les instructions de bloc

Itérations Rappel sur IEnumerator Reset/Current/MoveNext IEnumerable ou comment combler l’absence de délégation d’implémentation d’interface Les mots clés: yield return / yield break

Demo Les itérations: FileLineReader, suite et fin Les classes Enum revisitées

…C# 3.0 Les expressions lambda Les requêtes Linq Offrir une écriture simplifiée des méthodes anonymes button1.Click += (o, args) => MessageBox.Show(o); Les requêtes Linq

C# 3.0 ToDictionnary() Recherche d’attributs Demo C# 3.0 ToDictionnary() Recherche d’attributs