DOTNET6CSHARP
DOTNET6CSHARP
DOT NET
C SHARP
ENVIRONNEMENT .NET
2
Caractéristiques de .NET
Plateforme de développement de Microsoft
Riche fonctionnalité prête à l'emploi.
Le framework .NET fournit un riche ensemble de fonctionnalités
prêtes à l'emploi. Il contient des centaines de classes qui offrent une
variété de fonctionnalités prêtes à l'emploi dans vos applications.
Développement facile d'applications Web
[Link] est la [Link] pour développer des applications Web
dynamiques et axées sur les données. [Link] fournit un modèle de
programmation piloté par les qui simplifie le développement de pages Web
(maintenant appelées formulaires Web) avec une interface utilisateur
complexe. Les contrôles serveur [Link] fournissent des éléments d'interface
utilisateur avancés (comme le calendrier et les grilles) qui économisent
beaucoup de codage du côté du programmeur.
Support du Paradigme OO
Prise en charge de plusieurs langages
Visual [Link], C#, [Link] et C++ (un dialecte de Visual
C++).
Prise en charge de plusieurs appareils
NET fournit une plate-forme pour la programmation mobile: Compact
ENVIRONNEMENT .NET
3
Caractéristiques de .NET
ENVIRONNEMENT .NET
4
Caractéristiques de .NET
Riche fonctionnalité prête à l'emploi.
Gestion automatique de la mémoire
Le ramasse-miettes libère les objets inutilisés à des intervalles
appropriés.
Compatibilité avec COM et COM+
Prise en charge XML
En plus de prendre en charge la manipulation et la transformation de XML, .NET
fournit des services Web XML basés sur des normes HTTP, XML et SOAP.
Facilité de déploiement et de configuration
La configuration se fait via des fichiers XML spéciaux qui de plus peuvent etre
transmis par FTP en ce qui concerne les applications web.
Sécurité
Des fonctionnalités telles que la sécurité de type, la sécurité d'accès au code et
l'authentification basée sur les rôles rendent l'application globale plus robuste
et sécurisée.
ENVIRONNEMENT .NET
5
Application client-serveur
ENVIRONNEMENT .NET
6
Application client-serveur
services de présentation :
Collecte d'informations auprès de l'utilisateur
Envoi des informations de l'utilisateur aux services métier pour traitement
Recevoir les résultats du traitement des services métier
Présentation de ces résultats à l'utilisateur
Services métier
Réception d'entrées du niveau présentation.
Interaction avec les services de données pour effectuer les opérations métier.
Envoi des résultats traités au niveau présentation.
Application client-serveur
Le niveau présentation bénéficiera des nouvelles technologies
d'interface et notamment des formulaires Web pour les
développements Internet. Et des conceptions de niveau
intermédiaire plus riches et plus distribuées seront possibles en
utilisant les services Web.
ENVIRONNEMENT .NET
8
Application client-serveur
C# :
Ce langage est orienté objet,
avec un typage fort.
Il est très proche du langage Java.
Il est précompilé en MSIL (Microsoft Intermediate Language),
puis exécuté sur une machine virtuelle, ou compilé en code
natif à l'exécution. Il dispose d'un ramasse-miettes (garbage
collector). I
l utilise l'API .NET en remplacement des MFC (Microsoft
foundation class).
Le langage C#
14
Caractéristiques partagées
Caractéristiques partagées avec le langage Java
Garbage collector :
les objets qui ne sont plus référencés sont traités par le
ramasse-miettes afin de libérer la mémoire qu'ils occupent ;
Caractéristiques partagées
Caractéristiques partagées avec le langage Java
Documentation automatique :
cette caractéristique commune syntaxe différente
le langage Java utilise les commentaires spéciaux /** */ au
format HTML, avec des tags commençant par le caractère
arobase @ ;
le langage C# utilise les commentaires /// au format XML ;
Méthodes courantes :
une majeure partie des méthodes de l'API de C# ressemblent à
celles de Java, excepté que leur nom commence par une
majuscule : Main, Equals, ToString, Length, IndexOf, ...
Le langage C#
16
Caractéristiques partagées
Caractéristiques partagées avec le langage C++
Caractéristiques propres au C#
Programmation C sharp/Compilation
Programmation C/Compilation
Programmation C# /Compilation
Le langage C#
21
Hello world en C#
using System;
public class HelloWorld
{
public static void Main()
{
[Link]("Hello world !");
[Link]();
}
}
Exécution
Windows : [Link]
Linux (Mono) : mono [Link]
Le langage C#
27
Les commentaires
Un bloc de commentaire est délimité par les signes slash-étoile
/* et étoile-slash */ comme en Java et en C++.
Un commentaire de fin de ligne débute par un double slash //
et se termine au prochain retour à la ligne.
Commentaire de documentation
C’est une forme spéciale des commentaires pour documenter
les classes
commencent par un triple slash /// et se terminent au prochain
retour à la ligne. Alternativement, ils peuvent être encadrés par
/** et */.
Le langage C#
28
Commentaire de documentation
C’est une forme spéciale des commentaires pour documenter
les classes
commencent par un triple slash /// et se terminent au prochain
retour à la ligne. Alternativement, ils peuvent être encadrés par
/** et */.
Le contenu de ces commentaires est au format XML.
/// <summary>
/// Une classe pour démontrer
/// les commentaires de documentation
/// </summary>
public class Exemple
{
...
}
Le langage C#
29
Utilisation :
soit avec le nom absolu: [Link]
Ou using namespace : using MesClasses
Le langage C#
30
Types de base
Le langage C#
35
Types de base
Syntaxe des chaînes de caractères: deux syntaxes
différentes
Syntaxe avec caractères d'échappement : La chaîne est entourée
par les guillemets et l'anti-slash introduit un caractère spécial (\n, \
t ...) ou empêche son interprétation (guillemet \" et anti-slash \\)
Syntaxe verbatim : La chaîne est précédée d'un caractère arobase,
et l'anti-slash n'est pas interprété. Si un guillemet doit faire partie de
la chaîne de caractère, il faut le doubler "".
Exemples:
"un guillemet \", un anti-slash \\, un retour à la ligne\n«
@"C:\program files\monapp\[Link]"
Le langage C#
36
Types de base
Auto-boxing/unboxing
Chaque type de données correspond à une classe de
l'espace de nom System. La conversion entre le type et une
instance de cette classe est implicite et invisible.
string message = [Link](); // méthode définie dans la
classe System.Int32
Types nullable
la possibilité pour les types simples de valoir null. Cette
fonctionnalité permet une meilleure interopérabilité avec les
bases de données qui utilisent ce type de données.
Pour qu'une variable puisse valoir null (nullable), il faut que
le type soit suivi d'un point d'interrogation : int? numero =
null;
Le langage C#
37
Types de base
Valeur par défaut
L'opérateur default retourne la valeur par défaut du type spécifié. Il
s'agit de la valeur quand une variable de ce type n'est pas initialisée
(0 pour les nombres, null pour les types références).
Types de base
Obtenir le type
Types de base
Les tableaux
Déclaration d'un tableau
Les crochets ajoutés à la fin d'un type indique qu'il s'agit
d'un tableau.
Exemple : int[] liste;
le premier élément porte l'index 0.
Les tableaux font partie des types références. Il n'est donc
pas alloué par défaut (référence null). L'allocation se fait en
utilisant le mot clé new :
new type[taille]
Exemple : int[] liste= new int[10];
L'allocation peut se faire après la déclaration
Il est possible de définir directement les valeurs que le
tableau contient.
int[] liste = new int[] { 10,15,20,25,30,35,40,45 };
Le langage C#
40
Types de base
Les tableaux
Taille d'un tableau: L'attribut Length donne la taille du
tableau
for(int i=0 ; i<[Link] ; i++) [Link](" ["+i+"] = " +
liste [i] );
Parcours du tableau avec foreach
foreach(int n in liste) [Link](" " + n );
Tableaux multi-dimensionnels
Un tableau multi-dimensionnel utilise la même syntaxe, en
séparant les indices par une virgule.
int[,] image = new int[ 32, 16 ]; image[1,5] = 0;
Un tableau de tableaux (appelé jagged array ou tableau
déchiqueté) utilise la syntaxe des tableaux uni-dimensionnels en
utilisant un tableau comme type
int[][] ensembles = new int[10][];
ensembles[0] = new int[11]; ensembles[1] = new int[] { 2,
3 };
Le langage C#
41
Types de base
Les Objets
Un objet est un type référence. Il s'agit d'une instance de
classe.
Le type object
La classe [Link] est équivalente au type object. Il s'agit
de la classe de base de toutes les autres classes.
L'auto-boxing/unboxing permet d'utiliser le type object pour
n'importe quel type de valeur :
object obj;
obj = 10; // int -> Int32 -> object
obj = "Une chaîne"; // string -> String -> object
Le langage C#
42
Types de base
Les Objets
Création d’un nouvel objet
L’instanciation d’une classe utilise l'opérateur new :
classe variable=new classe(arguments...);
Le langage C#
43
Types de base
Les Classes
Déclaration d’une nouvelle classe
class nom_de_la_classe
{
}
Membres d'une classe
Les membres d'une classe sont de différents types :
méthodes traitent les données
Les variables, appelées attributs, stockent les données ;
Les propriétés sont des méthodes spéciales utilisées comme des
variables.
Le langage C#
44
Types de base
Les Classes
Membres statiques de classe et membres
d'instance
Un membre statique de classe est un membre déclaré avec le
mot clé static. Il est définit une seule fois en mémoire, et il n'est
pas nécessaire de créer un nouvel objet pour qu'il soit créé et
utilisable.
public class UnExemple
{
int numero; // Défini pour chaque objet
static int numero_suivant; /
}
Le langage C#
45
Les Classes
Classe statique
Une classe statique ne contient que des membres statiques, et ne
peut être instanciée. Le mot clé static précède la déclaration de
cette classe.
public static class UneClasseStatique
{
public static void Afficher(string message)
{
// ...
}
}
Le langage C#
46
Les Classes
Référence null
Toute variable de type objet est une référence initialisée à null par
défaut. Cette référence peut être utilisée quel que soit le type
d'objet.
Il est souvent nécessaire de tester si la référence est nulle avant
d'accéder à un membre de l'objet référencé. Si le test n'est pas fait
et que la référence est nulle, une exception est levée.
Le langage C#
47
Les Classes
Niveaux de protection
Le niveau de protection est spécifié par un mot clé placé
avant la déclaration d'une classe ou d'un membre de classe
(attribut, méthode, propriété, ...) :
public : Accès autorisé à tous ;
private : Accès depuis la classe seulement ;
protected : Accès depuis la classe et ses sous-classes seulement
;
public class
internal Fraction
:Accès depuis l'assembly seulement.
{
private int
numerateur,
denominateur;
public void multiplier(Fraction autre)
{}
}
Le langage C#
48
Les Classes
Niveaux de protection
Constructeur
méthode spéciale portant le nom de la classe, ne retournant aucune
valeur, chargée d'initialiser l'instance.
Les Classes
Niveaux de protection
Constructeur
Constructeur par défaut
Le constructeur par défaut est celui qui n'a aucun
paramètre. Si aucun constructeur n'est déclaré dans une
classe, le compilateur crée un constructeur par défaut qui
ne fait rien, laissant les attributs à leur valeur par défaut
(dépendant du type : 0 pour les numériques, null pour tous
les autres).
Le langage C#
50
Les fonctions
Déclaration d’une méthode
Les fonctions
Passage de paramètres à une méthode
Passage par valeur : aucun mot clé
paramètre out : mot clé out. private void methodeTest(out int
resultat)
Paramètre ref : mot clé ref private
Ce paramètre est précédé du mot-clé ref à la fois lors de sa
déclaration, et lors de l'appel à la méthode.
void methodeTest(ref int resultat)
Surcharge de méthode
Une méthode peut être surchargée (overload en anglais), c'est à dire
qu'il peut exister au sein de la même classe plusieurs méthodes
portant le même nom, à condition qu'elles soient différenciables par
leur signature.
Le langage C#
52
Propriétés
Une propriété est une valeur qui peut être lue ou modifiée,
comme une variable. Ces deux opérations sont en fait réalisées
par les accesseurs get et set. Si l'un de ces deux accesseurs
est manquant, la propriété sera alors soit en lecture seule, soit
en écriture seule.
Syntaxe
Type Nom_de_la_propriété
{
get // propriété lue
{
code retournant une valeur du Type spécifié
}
set // propriété modifiée
{
code utilisant le paramètre prédéfini "value"
}
}
Le langage C#
53
Propriétés et indexeurs
Les propriétés
private string _message;
public string Message
{
get
{
return _message;
}
set
{
_message = value;
}
}
Le langage C#
54
Propriétés
Utilisation :
Les opérateurs
Similaire à Java
Les opérateurs arithmétiques, booléens, de comparaison, de
bits
if (nombre is Entier)
Les opérateurs
L'opérateur as
Contrairement à l'opérateur précédent, l'opérateur as ne
fonctionne que sur les références d'objets.
object o = "Chaîne de caractère dérive de la classe object" as
object;
Le langage C#
57
Exemple
Public static Fraction operator – (Fraction a) => new Fraction(-[Link], [Link]);
Public static Fraction operator – (Fraction a, Faction b) => a+ (-b);
Le langage C#
58
Héritage de classes
La relation d'héritage est définie à la déclaration de la classe
par le symbole deux-points suivi du nom de la super-classe.
public class Automobile : Vehicule {}
Constructeurs
Le constructeur de la sous-classe appelle toujours celui de la classe
de base, implicitement ou explicitement. Si rien n'est spécifié, le
compilateur génère un appel implicite au constructeur de la classe
de base ne comportant aucun paramètre. C'est pourquoi ce
constructeur est nommé « constructeur par défaut ».
Si la classe de base ne possède aucun constructeur par défaut, ou si
un autre serait plus approprié, il est possible de spécifier
explicitement le constructeur à appeler. Le mot-clé base désigne la
classe de base.
Le langage C#
60
Héritage de classes
Héritage de classes
Héritage de classes
Surcharge avec polymorphisme
Le polymorphisme permet d'utiliser le type réel de l'objet référencé
plutôt que le type de la référence pour déterminer la méthode, la
propriété ou l'indexeur à utiliser. Pour cela, il faut utiliser le mot clé
virtual dans la déclaration de la méthode de la classe de base. Et il
faut Vehicule
public class utiliser le mot clé override dans la classe dérivée :
{ public class Automobile : Vehicule
private int poids; {
public Vehicule(int poids) private string couleur;
{ [Link] = poids; } public Automobile(int poids,string couleur)
public virtual string : base(poids)
Description() { [Link] = couleur; }
{ // méthode surchargée
public override string Description() { }
}
Le langage C#
63
Classe abstraite
Syntaxe
Le mot clé abstract doit précéder la classe abstraite et toutes les
méthodes abstraites.
public abstract class Vehicule
{
}
Interface
Sert à définir un contrat (ensemble de fonctions) que la classe
doit fournir. Une interface déclare des méthodes et des
propriétés. C’est la classe qui fournit l'implémentation de ces
méthodes.
public interface I {
public m1(…);
public m(…);
….
}
public class C : I {
public m1(…) {……..}
public m(…) {……….}
….
}
66
Le langage C#
67
Les Collections
Principales collections :
ArrayList;
Stack (Pile , LIFO)
Queue (File, FIFO)
Hashtable
Le langage C#
68
Les Collections
ArrayList
Declaration : ArrayList lst = new ArrayList()
Méthodes :
add : [Link](e) , ajout d’un élement e;
Count : [Link](), retourne le nombre d’éléments
Countains: [Link](e), teste la présence d’un élément
RemoveAt : [Link](index), supprime l’élément à la
position index
Le langage C#
69
Les Collections
Stack
Declaration : Stack pile = new Stack()
Méthodes :
push : pile. push(e) , empiler un élément e;
pop : [Link](), supprime l'élément au sommet; retourne
l’élément;
Count : [Link](), retourne le nombre d’éléments
Countains: [Link](e), teste la présence d’un élément
Les Collections
Queue
Declaration : Queue file = new Queue()
Méthodes :
enqueue : file. enqueue(e) , ajoute un élément e;
pop : [Link](), supprime l'élément le plus ancien; retourne cet
élément;
Count : [Link](), retourne le nombre d’éléments
Countains: [Link](e), teste la présence d’un élément
Le langage C#
71
Les Collections
Hashtable
Contient une liste de paires (clé, valeur)
Déclaration : Hashtable ht = new Hashtable()
Méthodes :
Add : [Link](clé, val) , ajout d’une paire;
CountainsKey : [Link](clé), est-ce que la clé est
présente?
CountainsKey : [Link](val), est-ce que la valeur est
présente?
Commentaires
// sur une ligne
/* sur plusieurs ligne */
BOUCLE
while (c)
Do … while(c);
for ( ex; ex; ex)
Foreach (char let in nom)
74
Commandes DOTNET
dotnet – version
dotnet new console –o FirstAp [-lang VB]
dotnet – build
dotnet – run
dotnet –publish crée code à distribuer
rep publish
75
Commandes AFFICHAGE
using System (espace de nom)
[Link](string)
[Link](string) pas de retour a la ligne
[Link]()
[Link]()