Applications distribuées en .NET

Découverte de .NET et C#

Clément Bouillier - Devcrafting - @clem_bouillier

Quelques pistes avant de commencer

Nos amis pour cette session

  1. La MSDN sur C# : https://msdn.microsoft.com/en-us/library/67ef8sbd.aspx
  2. Mais aussi votre moteur de recherche préféré
  3. Object Browser dans Visual Studio

Quelques contraintes pour s'initier au TDD/TDL et au Pair Programming

  1. Pair Programming : les 2 personnes sont actives, le clavier DOIT être échangé
  2. Quand on n'a pas le clavier, il faut guider l'autre, discuter...pas attendre qu'il ait fini
  3. TDD/TDL : cycle red->green->refactor
  4. On utilise tous la même norme de code (via StyleCop + R# ?)

En pratique pour ce premier TD

  1. Repository GitHub : git clone https://github.com/devcrafting/Distributed.NETTraining.git (ou fork + clone)
  2. Un tag par étape, le tag de l'étape en cours sera affiché dans ce support
  3. Pour chaque tag, de nouvelles classes et de nouveaux tests à décommenter au fur et à mesure
  4. Pour les tests, on utilise NUnit et NFluent (récupérés via NuGet)

Itération 1 : découverte des types et des structures de contrôle

Types primitifs (built-in) -> tag TD1.1.1

  1. Typage fort et statique
  2. Conversion de type : cast, Parse, TryParse, ToString...
  3. Utilisation de var
  4. Nullable : int?, float?...

Les tableaux -> tag TD1.1.2

  1. Tableau 1 dimension : int[]
  2. Tableau N dimension : int[][]
  3. Initialisation et taille

Les structures de contrôle -> tag TD1.1.3

  1. for/foreach
  2. while/do while
  3. if/else/else if
  4. switch/case

Classes -> tag TD1.1.4

  1. Constructeurs et instanciation
  2. Méthodes : déclaration et surcharge
  3. Properties : get/set /!\ ne pas en mettre partout
  4. Visibilité : public, internal, protected, private, protected internal, readonly
  5. Object initializer
  6. Constantes : const
  7. Static : classes & membres
  8. Cycle de vie : garbage collector /!\

ValueType : Enum et Struct -> tag TD1.1.5

  1. Pas d'héritage, passage par valeurs VS par référence
  2. Enum : Parse, TryParse, ToString, type sous-jacent
  3. Mots clés ref

Retrospective

  1. Qu'est-ce qui c'est bien passé ?
  2. Quels ont été les points difficiles ?
  3. Qu'est-ce que vous avez appris ?
  4. Quels sont les points qui vous perturbent encore ?

Itération 2 : programmation orientée objet en C# et autres sujets "de base"

Héritage & polymorphisme -> tag TD1.2.1

  1. Héritage entre classes
  2. Classes sealed
  3. Virtual, override, new
  4. Classes abstraites : abstract
  5. Interfaces
  6. Composition & polymorphisme

Génériques -> tag TD1.2.2

  1. Utiliser les génériques : List<T>, IEnumerable<T>
  2. Définir une classe générique
  3. Définir une interface générique et implémentation non générique
  4. Définir une méthode générique (tag TD1.2.2_help si dernier test trop compliqué)
  5. Contrainte de type

Exceptions -> tag TD1.2.3

  1. Try/catch
  2. Finally
  3. Throw

Retrospective

  1. Qu'est-ce qui c'est bien passé ?
  2. Quels ont été les points difficiles ?
  3. Qu'est-ce que vous avez appris ?
  4. Quels sont les points qui vous perturbent encore ?

Itération 3 : sujets "avancés"

Delegate et Event -> TD1.3.1

  1. Définition et assignation d'un delegate (pointeur de fonction)
  2. Expressions Lambda
  3. Passage en paramètre
  4. Func et Action
  5. Event

LINQ et expressions Lambda -> TD1.3.2

  1. LINQ : from in/where/select équivalent à une boucle foreach
  2. Conversion de l'exemple précédent avec Where(...).Select(...) (=méthodes d'extension)
  3. Exploration d'autres méthodes d'extension LINQ

Retrospective

  1. Qu'est-ce qui c'est bien passé ?
  2. Quels ont été les points difficiles ?
  3. Qu'est-ce que vous avez appris ?
  4. Quels sont les points qui vous perturbent encore ?