• Aucun résultat trouvé

[PDF] Introduction à .Net et au langage C# | Cours informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Introduction à .Net et au langage C# | Cours informatique"

Copied!
11
0
0

Texte intégral

(1)

Analyse et programmation 2

Introduction à .Net

et au langage C#

Thèmes abordés

• La plateforme .Net

Architect re – Architecture.

– Code MSIL, compilation à la volée. – Multi-langage.

– Gestion de la mémoire. – Performances

• Le langage C#

Similitudes et différences avec C++ – Similitudes et différences avec C++.

(2)

La plateforme .Net

Pour la petite histoire…

• Anders Hejlsberg

Concepte r de T rbo Pascal et de Delphi – Concepteur de Turbo Pascal et de Delphi. – A l’origine des concepts qui ont fait le succès

de ces outils.

– Débauché par Microsoft en 1996. – Concepteur de la plateforme .Net. – On retrouve dans .Net les concepts qui

donnent à Delphi sa puissance expressive,

Analyse et programmation 2 - La plateforme .Net et le langage C# 2 sous une forme encore améliorée.

– Nombreuses similarités entre les concepts .Net et Delphi.

La plateforme .Net.

Architecture – multi langage et multi plateforme

VB.Net

C#.Net

J#.Net

C++.Net

.Net J#.Net

Web Forms

XML Web

Services Win Forms

ASP.Net

.Net Framework Class library Common Language Runtime

(3)

Outils et compilateurs

La plateforme .Net.

Génération de code .Net

Code source

Compilateur du langage

Analyse et programmation 2 - La plateforme .Net et le langage C# 4

Environnement d’exécution CLR (Common Language Runtime)

Code intermédiaire

MSIL Compilateur JIT(Just In Time) Code machine natif

La plateforme .Net.

Avant: génération de code machine

C d C C d D l hi Code

Code C++ Code Delphi Visual BasicCode

Visual C++ Borland C++ Delphi 5 Delphi 6 Visual Basic

Modèle objet différent traduit

directement En code x86

(4)

La plateforme .Net.

Génération de code .Net

C d C C d C# C d D l hi Code Code Code

Code C++ Code Delphi Visual BasicCode

Visual C++ Visual C# Delphi 8 VB.Net J#

Code C# Java likeCode

MSIL (Pseudo code) CTS (Common Type

System) A# Code

Ada

Analyse et programmation 2 - La plateforme .Net et le langage C# 6 System) + Méta données CLR : compilation à la volée

Code x86

La plateforme .Net

Conséquences de cette approche

• Interopérabilité

– Tous les langages génèrent un pseudo code basé sur le même modèle objet. – Des appels entre langages différents sont supportés sans coût.

– Les méta données permettent à tous les compilateurs d’accéder aux éléments contenus dans un assemblage compilé.

• Sécurité

– Le CLR peut interdire le code non sûr s’il provient d’Internet. – Permet de supprimer de nombreux types d’attaques virales.

• Portabilité

– Le code produit n’est pas spécifique à un micro processeur.

– Net allégé pour l’informatique embarquée: Net Compact Framework – .Net allégé pour l informatique embarquée: .Net Compact Framework. – Portage sur Linux partiellement opérationnel (Mono).

• Non déterminisme

(5)

La plateforme .Net

Gestion de la mémoire .Net

• Seuls les objets alloués peuvent être accédés.

Pl s de risq e de corr ption de mémoire difficile à localiser – Plus de risque de corruption de mémoire difficile à localiser. – Empêche un grand nombre d’attaques virales.

• Comptage de référence

– Le nombre de références sur un objet est automatiquement géré par le système.

– Un objet est libéré par le CLR lorsqu’il n’est plus référencé. Pas de risque d’oubli de libération de mémoire.

Analyse et programmation 2 - La plateforme .Net et le langage C# 8 q

• Allocation et libération des blocs de mémoire par le CLR.

– Gestion de la mémoire sous contrôle du CLR. – Aucune attention requise du programmeur. – Ramasse miettes : non déterminisme.

La plateforme .Net

Gestion de la mémoire .Net

• Illustration

int[] tableau;

int[] tableau;

tableau = new int[100]; delete tableau;

• Plus de libération explicite

– L’opérateur delete n’existe pas !

– La mémoire est libérée automatiquement. Le moment de la libération est défini par le CLR – Le moment de la libération est défini par le CLR. – GC: Garbage Collection.

(6)

Le langage C#

Aperçu de la syntaxe

• Principe

S nta e proche d C mais allégée – Syntaxe proche du C++, mais allégée.

– Instructions et types de données similaires au C++.

• Différences essentielles

– Langage orienté objet pur.

• Il n’est pas possible de créer une fonction !

• Toute fonction est nécessairement rattachée à une classe.

• Les fonctions appelables sans créer d’objet doivent être déclarées

Analyse et programmation 2 - La plateforme .Net et le langage C# 10

Les fonctions appelables sans créer d objet doivent être déclarées statiques.

– Classes de visibilité

• La classe de visibilité doit être rappelée à chaque déclaration.

– Fichiers en-tête

• Il n’y a plus lieu de créer un fichier en-tête séparé.

Le langage C#

Aperçu de la syntaxe - exemple public class Complexe

{

private double reel, imaginaire; private double _reel, _imaginaire; public double Reel

{

get { return _reel; } set { _reel = value; } }

public double Imaginaire {

get { return _imaginaire; } set { imaginaire = value; } set { _imaginaire = value; } }

public void Afficher() {

Console.Write("{0} + {1} . i", _reel, _imaginaire); }

(7)

Le langage C#

Aperçu de la syntaxe - exemple

public static Complexe Somme(Complexe a, Complexe b)

{

Comple e res ltat ne Comple e()

Complexe resultat = new Complexe(); resultat._reel = a._reel + b._reel;

resultat._imaginaire = a._imaginaire + b._imaginaire;

return resultat;

}

public static Complexe operator+(Complexe a, Complexe b)

{

Complexe resultat = new Complexe(); resultat. reel = a. reel + b. reel;

Analyse et programmation 2 - La plateforme .Net et le langage C# 12 esu tat._ ee a._ ee b._ ee ;

resultat._imaginaire = a._imaginaire + b._imaginaire;

return resultat;

} }

Le langage C#

Aperçu - création de collections d’objets

• Tableaux

const int NombreMesures 1000;

const int NombreMesures = 1000;

double mesures[] = new double[NombreMesures];

• Liste générique

List<double> liste;

liste = new List<double>(); liste.Add(1.5);

MessageBox Show(liste[0] ToString());

(8)

Le développement visuel WinForms

Aperçu

• Création interactive d’interfaces graphiques.

Dé l

t b é

d bj t

• Développement basé sur des objets

– Composants graphiques

• Code généré automatiquement par l’outil de

développement.

Analyse et programmation 2 - La plateforme .Net et le langage C# 14

Le développement visuel WinForms

Aperçu – le glisser-déposer de composants graphiques Palette de composants Fenêtre en cours de conception Editeur de Choix entre l’affichage des propriétés ou des évènements du composant propriétés pour paramétrer le composant sélectionné

(9)

Le développement visuel WinForms

Aperçu – la cération de gestionnaires d’évènements

Double cliquer sur l’évènement

auquel on veut associer un gestionnaire

Analyse et programmation 2 - La plateforme .Net et le langage C# 16 Ou double-cliquer tout simplement sur

le composant

Le développement visuel WinForms

(10)

Le développement visuel WinForms

Aperçu – le code généré automatiquement pour les composants

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modifyq g pp y /// the contents of this method with the code editor. /// </summary>

private void InitializeComponent() {

// // label1 //

this.label1.AutoSize = true;

this.label1.BackColor = System.Drawing.Color.Lime;

this.label1.Location = new System.Drawing.Point(21, 33);

this.label1.Name = "label1";

this.label1.Size = new System.Drawing.Size(35, 13);

thislabel1 TabIndex = 0;

Analyse et programmation 2 - La plateforme .Net et le langage C# 18

this.label1.TabIndex = 0;

this.label1.Text = "label1";

// // button1 //

this.button1.Location = new System.Drawing.Point(27, 97);

this.button1.Name = "button1";

this.button1.Size = newSystem.Drawing.Size(75, 23);

this.button1.TabIndex = 2;

this.button1.Text = "button1";

this.button1.UseVisualStyleBackColor = true;

Le développement visuel WinForms

Résultat – une application graphique Windows

(11)

Références

Documents relatifs

gram2coalg :: Eq symb ⇒ Gram prod symb → Coalg prod symb gram2coalg gram symb = [p, rhs gram p | p ← prods gram, symb == lhs gram p] La fonction d’expansion que nous cherchons

De plus, la mise en scène de certaines activités de jeu demande que l’enfant prenne la perspective d’un personnage, qu’il puisse conférer des propriétés d'animé à des

Le texte de Roland Marchal dans ce dossier met ainsi l’accent sur cette génération de civils arrivée aux postes de responsabilité depuis la fin des années 1990, et qui

Il est vrai que, pour cela, ils vont devoir, à certaines étapes de leur démarche modélisante, s’appuyer, par exemple, sur le fait que si les prix montent la quantité demandée

Le coût des incendies de résidences lié au tabac est obtenu directement selon les chiffres publiés dans le rapport des coûts de l’abus de substance au Canada (2006) et qui sont

On peut en conclure de ce premier examen que Machiavel n’échappe pas au machiavélisme ; mais alors ce dernier ne peut plus défini comme le déchaînement de la

On peut observer un épisode didactique au moment où ce besoin est ressenti par un élève comme le manque du rapport nouveau que l’institution attend de lui ;

Dans  la  droite  lignée  de  son  œuvre  chorégraphique,  le  cinéma  de  Rainer  cultive  un   refus  du  spectaculaire  et  du  voyeurisme  spectatoriel,