Quelques pistes avant de commencer
Nos amis pour cette session
- La MSDN sur C# : https://msdn.microsoft.com/en-us/library/67ef8sbd.aspx
- Mais aussi votre moteur de recherche préféré
- Object Browser dans Visual Studio
Quelques contraintes pour s'initier au TDD/TDL et au Pair Programming
- Pair Programming : les 2 personnes sont actives, le clavier DOIT être échangé
- Quand on n'a pas le clavier, il faut guider l'autre, discuter...pas attendre qu'il ait fini
- TDD/TDL : cycle red->green->refactor
- On utilise tous la même norme de code (via StyleCop + R# ?)
En pratique pour ce premier TD
- Repository GitHub : git clone https://github.com/devcrafting/Distributed.NETTraining.git (ou fork + clone)
- Un tag par étape, le tag de l'étape en cours sera affiché dans ce support
- Pour chaque tag, de nouvelles classes et de nouveaux tests à décommenter au fur et à mesure
- 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
- Typage fort et statique
- Conversion de type : cast, Parse, TryParse, ToString...
- Utilisation de var
- Nullable : int?, float?...
Les tableaux -> tag TD1.1.2
- Tableau 1 dimension : int[]
- Tableau N dimension : int[][]
- Initialisation et taille
Les structures de contrôle -> tag TD1.1.3
- for/foreach
- while/do while
- if/else/else if
- switch/case
Classes -> tag TD1.1.4
- Constructeurs et instanciation
- Méthodes : déclaration et surcharge
- Properties : get/set /!\ ne pas en mettre partout
- Visibilité : public, internal, protected, private, protected internal, readonly
- Object initializer
- Constantes : const
- Static : classes & membres
- Cycle de vie : garbage collector /!\
ValueType : Enum et Struct -> tag TD1.1.5
- Pas d'héritage, passage par valeurs VS par référence
- Enum : Parse, TryParse, ToString, type sous-jacent
- Mots clés ref
Retrospective
- Qu'est-ce qui c'est bien passé ?
- Quels ont été les points difficiles ?
- Qu'est-ce que vous avez appris ?
- 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
- Héritage entre classes
- Classes sealed
- Virtual, override, new
- Classes abstraites : abstract
- Interfaces
- Composition & polymorphisme
Génériques -> tag TD1.2.2
- Utiliser les génériques : List<T>, IEnumerable<T>
- Définir une classe générique
- Définir une interface générique et implémentation non générique
- Définir une méthode générique (tag TD1.2.2_help si dernier test trop compliqué)
- Contrainte de type
Exceptions -> tag TD1.2.3
- Try/catch
- Finally
- Throw
Retrospective
- Qu'est-ce qui c'est bien passé ?
- Quels ont été les points difficiles ?
- Qu'est-ce que vous avez appris ?
- Quels sont les points qui vous perturbent encore ?
Itération 3 : sujets "avancés"
Delegate et Event -> TD1.3.1
- Définition et assignation d'un delegate (pointeur de fonction)
- Expressions Lambda
- Passage en paramètre
- Func et Action
- Event
LINQ et expressions Lambda -> TD1.3.2
- LINQ : from in/where/select équivalent à une boucle foreach
- Conversion de l'exemple précédent avec Where(...).Select(...) (=méthodes d'extension)
- Exploration d'autres méthodes d'extension LINQ
Retrospective
- Qu'est-ce qui c'est bien passé ?
- Quels ont été les points difficiles ?
- Qu'est-ce que vous avez appris ?
- Quels sont les points qui vous perturbent encore ?