C# - marc. ?· C# .NET Marc Chevaldonné marc.chevaldonne@u-clermont1.fr Année scolaire 2011 - 2012…

  • View
    213

  • Download
    0

Embed Size (px)

Transcript

  • C# .NET

    Marc Chevaldonnmarc.chevaldonne@u-clermont1.frhttp://marc.chevaldonne.free.fr

    Anne scolaire 2011 - 2012

    1

    dimanche 18 septembre 2011

    mailto:marc.chevaldonne@u-clermont1.fr?subject=mailto:marc.chevaldonne@u-clermont1.fr?subject=http://marc.chevaldonne.free.frhttp://marc.chevaldonne.free.fr

  • cration de types en C#Hritage : syntaxe, overload

    Hritage (proche C++) syntaxe (cf. exemple 15)

    accesseur protected constructeur : appel du ctor de la classe mre avec base sealed : accesseur pour empcher lhritage ou loverload

    de mthodes method or field overload : (cf. exemple 16)

    conseill dutiliser new pour montrer que cest intentionnel... ... mais plutt dconseill de surcharger les mthodes dans

    les classes filles dans une API

    2

    dimanche 18 septembre 2011

  • cration de types en C#Hritage : initialiseurs et constructeurs

    Hritage (proche C++) initialiseurs et constructeurs (cf. exemple 17) :

    initializers statiques de la classe fille constructeur statique de la classe fille initializers (instance) de la classe fille initializers statiques de la classe mre constructeur statique de la classe mre initializers (instance) de la classe mre constructeur (instance) de la classe mre constructeur (instance) de la classe fille

    3

    dimanche 18 septembre 2011

  • cration de types en C#Hritage : casting

    Hritage (proche C++) Casting (cf. exemple 18)

    Upcasting : implicite Downcasting

    operator is operator as

    plus sr que le cast aveugle (C-like) + exception plus rapide en excution => prfrer

    4

    dimanche 18 septembre 2011

  • cration de types en C#Hritage/Polymorphisme

    Hritage et Polymorphisme (proche C++) virtual (cf. exemple 19) new vs virtual vs override (cf. exemples 16 et 19)

    Classes abstraites (cf. exemple 20)

    5

    dimanche 18 septembre 2011

  • cration de types en C#Immutabilit et structures

    Immutabilit diffrentes immutabilits

    la vraie : constante, la valeur ne change jamais write-once immutability : la valeur est initialise une seule fois, puis ne

    change jamais shallow vs deep immutability : shallow immutability veut dire que la

    valeur est non mutable mais quelle contient des membres de type rfrence mutables (e.g. un tableau)

    immutable faades : semblent immutables de lextrieur (ne peuvent pas tre modifies de lextrieur) mais changent de lintrieur

    avantages : plus sr (ncessite moins de vrifications) thread safe : accessible en lecture par plusieurs threads simultans utilisables dans les tables de hchage ...

    conseil : crivez vos structures write-once immutable

    6

    dimanche 18 septembre 2011

  • cration de types en C#Interfaces

    Interfaces (cf. exemple 23) diffrences avec les classes (abstraites)

    prfrez une classe et des sous-classes lorsquelles doivent partager une mme implmentation => dfinition de types

    prfrez une interface et des implmentations lorsque ces dernires sont indpendantes => dfinition de fonctionnalits

    amliorent lencapsulation

    interfaces classes

    une classe peut implmenter plusieurs interfaces une classe ne peut driver que dune seule classe

    tous les membres dune interface sont abstraits une classe abstraite peut avoir des membres abstraits et des membres concrets

    les structures peuvent implmenter des interfaces une structure ne peut pas hriter dune classe

    7

    dimanche 18 septembre 2011

  • cration de types en C#Boxing Unboxing

    boxing unboxing boxing : cast dun type valeur vers un type rfrence

    int x = 3;object obj = x;

    unboxing : cast dun type rfrence vers un type valeurint y = (int) obj;

    lent => viter interfaces et boxing

    interface I { void Method(); }struct S : I { public void Method() {} }

    si on cast linterface en struct => pas de boxingS s = new S(); /*pas de boxing*/ s.Method();

    si on cast une structure en une interface => boxingI i = s; /* boxing*/ i.Method();

    8

    dimanche 18 septembre 2011

  • C# avancNullable Types

    Nullable types (cf. exemple 25) permettent de reprsenter des valeurs null pour des types

    valeur Nullable : structure lgre et non mutable

    Value et HasValue conversion de T vers T? implicite conversion de T? vers T explicite

    9

    dimanche 18 septembre 2011

  • Fondamentaux de la plateforme .NETstring et StringBuilder

    string (cf. exemple 26) squence non mutable de caractres construction string vide ou null chercher manipuler comparaison de string

    StringBuilder (cf. exemple 27) mutable plus rapide et plus efficace que le string

    10

    dimanche 18 septembre 2011

  • Fondamentaux de la plateforme .NETFormatting and Parsing / la Console

    Formatting and Parsing (cf. exemple 28) Formatting = convertir en string (par dfaut, ToString) Parsing = convertir depuis un string (par dfaut, Parse sur de

    nombreux types) ToString Parse TryParse IFormatProvider

    Standard Numeric Format Strings Custom Numeric Format Strings Enumeration Format Strings

    la Console (cf. exemple 29)

    11

    dimanche 18 septembre 2011

    http://msdn.microsoft.com/en-us/library/dwhawy9k.aspxhttp://msdn.microsoft.com/en-us/library/dwhawy9k.aspxhttp://msdn.microsoft.com/en-us/library/0c899ak8.aspxhttp://msdn.microsoft.com/en-us/library/0c899ak8.aspxhttp://msdn.microsoft.com/en-us/library/c3s1ez6e.aspxhttp://msdn.microsoft.com/en-us/library/c3s1ez6e.aspx

  • Utilisation de Visual Studio 2010

    environnement de travail

    solutions, projets, explorateur de solutions

    explorateur de classes

    compilation et excution

    debuggeur

    12

    dimanche 18 septembre 2011

  • Fondamentaux de la plateforme .NETDate Time Math

    TimeSpan (cf. exemple 30) Standard TimeSpan Format Strings Custom TimeSpan Format Strings

    Date Time (cf. exemple 30) Standard Date and Time Format Strings Custom Date and Time Format Strings

    Math Min Max Abs Cos Exp...

    Random (cf. exemple 31)

    13

    dimanche 18 septembre 2011

    http://msdn.microsoft.com/en-us/library/ee372286.aspxhttp://msdn.microsoft.com/en-us/library/ee372286.aspxhttp://msdn.microsoft.com/en-us/library/ee372287.aspxhttp://msdn.microsoft.com/en-us/library/ee372287.aspxhttp://msdn.microsoft.com/en-us/library/az4se3k1.aspxhttp://msdn.microsoft.com/en-us/library/az4se3k1.aspxhttp://msdn.microsoft.com/en-us/library/8kb3ddd4.aspxhttp://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

  • cration de types en C#Generics

    2 solutions pour crire du code rutilisable travers diffrents types : lhritage et la gnricit hritage : rutilisablit travers un type de base gnricit : rutilisabilit travers un patron

    Gnricit (cf. exemples 32 40) introduction

    dfinition du problme (cf. exemple 32) et pourquoi pas object ? (cf. exemple 33)

    syntaxe (cf. exemple 34) default (cf. exemple 35) contraintes : where -> base-class, interface, class, struct, new()

    (cf. exemple 36 et 37) hritage (cf. exemple 38)

    14

    dimanche 18 septembre 2011

  • cration de types en C#Generics

    Gnricit (cf. exemples 32 40) covariance :

    soit C une classe qui hrite de B un type X est dit covariant si X peut tre converti en

    X

    les classes NE SONT PAS covariantes (cf. exemple 39) les interfaces SONT covariantes (cf. exemple 40) les tableaux SONT covariants les dlgus sont covariants

    contravariance : soit C une classe qui hrite de B un type X est dit contravariant si X peut tre converti en

    X 15dimanche 18 septembre 2011

  • CollectionsIntroduction

    ensemble standard de types pour stocker et grer des collections dobjets

    listes de taille dynamique listes chanes dictionnaires (tris ou non) tableaux ...

    dimanche 18 septembre 2011

  • CollectionsIntroduction

    ensemble standard de types pour stocker et grer des collections dobjets

    listes de taille dynamique listes chanes dictionnaires (tris ou non) tableaux ...

    Quest-ce quon trouve dans les espaces de noms de Collections ? (System.Collections, System.Collections.Generic, System.Collections.Specialized, System.Collections.ObjectModel)

    des interfaces (dfinition de protocoles pour les collections)

    des classes de collections prtes lemploi (lists, dictionaries, arrays ...)

    des classes de base pour crire vos propres collections

    dimanche 18 septembre 2011

  • CollectionsIntroduction

    ensemble standard de types pour stocker et grer des collections dobjets

    listes de taille dynamique listes chanes dictionnaires (tris ou non) tableaux ...

    Quest-ce quon trouve dans les espaces de noms de Collections ? (System.Collections, System.Collections.Generic, System.Collections.Specialized, System.Collections.ObjectModel)

    des interfaces (dfinition de protocoles pour les collections)

    des classes de collections prtes lemploi (lists, dictionaries, arrays ...)

    des classes de base pour crire vos propres collections

    galits, hashcode, etc... => plus tard

    on va en parler un peu

    on va en parler beaucoup

    pas le temps

    dimanche 18 septembre 2011

  • CollectionsUn tout petit peu dhistoire...

    Avant C# 2, les Generics nexistaient pas, les collections ntaient pas gnriques

    Avec C# 2 et larrive de la gnricit, les collections sont devenues gnriques,

    mais les anciennes sont restes, et certains liens subsistent...

    Nous parlerons surtout des collections gnriques

    dimanche 18 septembre 2011

  • CollectionsInterfaces

    IEnumerator IEnumerator

    IEnumerable IEnumerable

    ICollection I