+ All Categories
Home > Documents > Cl´ment POIROT

Cl´ment POIROT

Date post: 12-Jan-2023
Category:
Upload: lachong
View: 0 times
Download: 0 times
Share this document with a friend
13
Cl´ ement POIROT Initiation au C# ´ Ecole Sup´ erieure d’Informatique et Applications de Lorraine 2 i` eme ann´ ee
Transcript

Clement POIROT

Initiation au C#

Ecole Superieure d’Informatique et Applications de Lorraine 2ieme annee

0.1 Quelque principes

Projet : Represente un executable, un manuel ou encore une librairie(DLL). Un projetest fortement dependant de sont contenu. Par exemple, une application qui a pour butde trouver au POKER quels sont les probabilites qu’une figure tombe en fonction descartes dans votre main et sur le tapis. En soi, ont peut creer cette application de pleinde facons differentes mais cela ne donnera pas exactement le meme executable, avec lesmemes caracteristiques.

Solution : Represente une solution informatique a un probleme donne. Une solutionpeut etre constituee d’un ensemble d’applications, de librairies et autres. La seule contraintea donner a une solution est de repondre au probleme.

Assembly : Represente un executable ou une DLL (un fichier compile) fait a partirde la technologie ”.NET”. Les assembly ont pour particularite de ne pas etre ecrits enassembleur mais d’etre ecrits dans un langage pre-compile qui a l’execution est compile surla machine hote puis execute. Le but de cette manipulation est de creer des executablesmulti-architecture et specialises. De fait, un executable ”.NET” sur un PC x64 sera aussirapide qu’un executable compile specialement pour x64, sauf au demarrage, et resteraexecutable sur du x86 ou un processeur 8 bits sur un telephone portable.

Ressources : Ce sont l’ensemble des elements qui ne sont pas du code qui doiventetre integres a votre projet. Par exemple, il est utile d’avoir en ressource l’icone de votreapplication ou encore un long texte plutot que de les inscrire en binaire dans le code C#ou de le laisser a cote de l’application et editable par l’utilisateur.

References : Ce sont l’ensemble des librairies et ressources systeme que vous avez ledroit d’appeler dans votre code. La definition des references permet de definir un cadrede codage. Par exemple : vous voulez creer une application sur telephone portable. Il esthors de question de coder l’application sur le dit telephone et encore moins de deboguerl’application sur telephone. On va donc definir un ensemble de references qui seront ac-cessibles sur la machine de destination et on codera l’application sur ordinateur via unemachine virtuelle. On evite ainsi les fameuses erreurs de ”Library sdl.dll not found”. Al’inverse, c’est la que devront etre specifiees les librairies utilisees.

Formulaire : Un formulaire est une fenetre d’application Windows.

Controle ActiveX : Les Controles ActiveX sont des elements graphiques de formulaire(comme un bouton ou encore une grille Excel) avec un comportement predefini et laplupart du temps personnalisable pour les besoins d’une application.

Namespace : Ce qu’on pourrait appeler nom de package en Java. (Bien que des nuancesexistent)

IntelliSense : Module de Visual .NET donnant a l’utilisateur tout un tas de fonction-nalites pour demultiplier la vitesse de developpement du codeur.

2

Event : Le evenements sont en somme des declencheurs de comportement. Les eventssont des objets qui une fois invoques declenchent tous les comportements qui leur sontlies. Afin de lier un event a un comportement il suffit d’abonner une fonction d’un objeta l’event. Nous verrons la syntaxe plus tard.

0.2 Un nouveau projet

Pour commencer nous allons creer un nouveau projet. Pour cela, demarrez Visual-Studio.NET 2005. Sur la page d’accueil, cliquez sur nouveau projet, puis cliquez dans lafenetre qui vient d’apparaıtre Visual C#. Une liste de types de projet s’offre a vous.

Les differents types de projet :

– Application Windows ( application graphique comme par exemple Paint.exe )

– Bibliotheque de controle Windows ( DLL de controle ActiveX )

– Application Smart Device ( Application installable via serveur web et destinee auWindows embarques )

– Bibliotheque de classes ( librairie DLL pouvant contenir un peut tout )

– Application Console ( application telle que cmd.exe )

3

Nous prendrons le modele ”Application Windows”. Remplissez les champs en bas dela fenetre afin de specifier le nom de votre projet et sa position sur votre disque. Commeaucune solution liee a votre apprentissage du C# n’existe, creez en une nouvelle puisvalidez.

0.3 Un environnement de travail

Vous voila dans votre espace de travail. Nous allons regarder en detail les differentesparties de l’editeur. Voici une petite visite guidee.

4

0.3.1 Fenetre de Design

Ceci est la fenetre de travail graphique de votre application. C’est normalement lapremiere que vous remarquerez. On peut y modifier l’aspect graphique du formulairecorrespondant.

0.3.2 Boite a outils

C’est ici que vous trouverez l’ensemble des composant graphiques a ajouter a votreapplication. Comme tous les menus, il peut etre tres agreable de le masquer automati-quement avec l’icone punaise.

5

0.3.3 Proprietes

C’est le menu qui resume et permet d’editer rapidement l’ensemble des caracteristiquesde l’element selectionne. Par exemple, definir le texte sur un bouton ou encore definir siun champ est editable ou non.

0.3.4 Explorateur de solution

Ce menu est l’arborescence de votre solution. Techniquement, tout est accessible depuiscet arbre. Je vous conseille de vous balader un peu.

6

0.3.5 Fenetre de Code

Cette fenetre est destinee au codage. Si vous voulez la voir, double-cliquez sur le for-mulaire ou cherchez un fichier de classe dans l’arborescence de votre solution. Dans cettefenetre il est possible de faire appel a l’auto-completion via ”Ctrl-space”.

0.4 Notre Projet

0.4.1 Disposition des elements graphiques

Revenez a la fenetre de Design et disposez dans l’ordre de haut en bas comme surl’image :

1. une pictureBox (emplacement pour inserer une image)

2. une textBox (emplacement d’insertion de texte par l’utilisateur)

7

3. un label (emplacement de texte static)

4. un Button (bouton declencheur)

0.4.2 Personnalisation des elements

Le plus simple est de personnaliser de haut en bas.

Pour l’image, cliquez une premiere fois sur la pictureBox. Un petit carre contenant unfleche apparaıt en haut. En cliquant dessus, apparaıt un menu ou on peut specifier l’imageet le type de redimensionnement. Je vous laisse essayer de reproduire le comportementvisible de la pictureBox dans l’image ci-dessous.

Pour personnaliser le label, nous allons le selectionner. Puis interessez-vous au menuProprietes. Comme l’image ci-dessus, recherchez dans le sous-menu Apparence le champ”text” et changez sa valeur. Amusez-vous avec d’autre champs : cherchez les champs”Name” (nom de l’objet dans le code), ”Modifier” (l’accessibilite public ou prive),”Visible” (la visibilite du controle durant l’execution), ”Location” (la localisation ducomposant).

Pour le bouton, procedez de la meme maniere que pour le label en lui donnant le nomde ”&OK”. Apres validation vous remarquerez que le O est souligne et le & a disparu. Enfait, &A est un raccourci clavier pour Alt-A. Cette methode n’est pas la plus propre maiselle permet de definir de facon rapide des raccourcis clavier dans des petits formulaires.

8

0.4.3 Un premier test

Notre application a une belle tete, nous allons donc l’executer. Pas besoin de la moindreligne de code, Visual Studio a tout fait dans notre dos. C’est sans doute cool mais celapourrait se retourner contre nous dans le futur donc je vous expliquerai en grande partieces magouilles apres. Pour le moment, enjoy. Pour demarrer en mode debogage tapez F5ou allez dans le menu debogage comme plus haut. Apres quelques tests, fermer l’applica-tion via la bonne vieille croix rouge.

9

0.4.4 Creer un comportement

Comme vous l’avez vu, l’application ne fait rien ! Rien de plus normal me direz-vous. Etbien il est temps que cela change ! Double-cliquez sur le bouton OK du formulaire. Vousdevriez etre maintenant dans la page de code du formulaire au niveau d’une fonction dutype :

”private void NomDuBouton Click(object sender, Event e)”

Ecrivez le code comme dans l’image ci-dessus puis deboguez afin de tester le nouveaucomportement. Note : label2 est le nom du label, textBox1 est le nom de la textBox.

Durant l’execution faites attention a la sortie standard dans Visual Studio. Vous re-marquerez comme dans l’image ci-dessous que ”e” est de type MouseEventArgs. Tentezalors de declencher le bouton sans la souris. Le type de ”e” change. Il en va de meme pour”sender”.

10

0.5 Des premieres questions

0.5.1 MouseEventArgs

Le MouseEventArgs est un event provenant d’un clic souris. Il contient les coordonneesdu clic (X et Y), le type de bouton utilise (Button), le nombre de clics (Clicks). Pouren savoir plus, consultez la doc MSDN2 sur le web.

0.5.2 L’heritage

L’heritage en C# se fait via la bonne vieille syntaxe C++. On utilise donc l’operateurd’heritage ” :”. Exemple :

ClassFille : ClassMere

0.5.3 Partial class

Vous avez sans doute remarque en vous interessant a la syntaxe que le mot ”partial”etait present avant le mot clef ”class”. La presence de ce mot autorise le fait qu’une classesoit codee en plusieurs parties dans plusieurs fichiers. C’est la que Visual Studio a faitson petit bazar. En fait, ce que vous avez sous les yeux n’est qu’une infime partie de laclasse. Pour trouver l’autre partie il faut aller chercher dans l’explorateur de solution lefichier ”NomDuFormulaire.Designer.cs”. Vous verrez le reste de la classe NomDuFor-mulaire.

0.5.4 private void InitializeComponent()

Etrange, la fonction InitializeComponent() qui n’etait pas dans le premier fichierde la classe n’apparaıt pas non plus ici. Pourtant elle n’appartient pas a la classe mere.Chercher dans le fichier ”designer.cs” un commentaire en gris 5 ou 6 lignes avant la fin.Ouvrez le code-snippet (le plus dans la marge) et le code auto-genere par Visual Studioapparaıt entoure de ”#region” et ”#endregion”

0.5.5 #region

Encore un truc bizarre. En fait, #region permet de definir des regions dans le code. Parla, on peut faire des sous-sections de code qui parlent de tel ou tel aspect de la classe.

11

En somme : plutot que d’ecrire toutes les fonctions d’une classe dans un meme endroit,on va pouvoir les regrouper par theme.Exemple : une classe implemente 12 interfaces ce qui fait au total 55 methodes a implementer.Afin de ne pas avoir un fichier trop grand, on le decoupe en 3 grace au mot clef partial (parexemple le nombre de codeurs qui travail sur cette classe). Mais cette decoupe ne suffitpas car elle ne permet pas au codeurs de trouver rapidement les fonctions qu’ils desirent.On utilise alors #region pour regrouper les fonctions par interface d’origine. Ainsi, lescodeurs retrouvent vite les methodes qui sont englobees par theme (interface).Cette annotation est obligatoire quand on implemente une interface explicitement maisheureusement, Visual Studio propose de faire le boulot a votre place, il suffit de lui de-mander. De plus, on peut creer des regions personnalisees telles que celle que vous venezde voir.

0.5.6 this.button1.Click +=new System.EventHandler (this.button1 Click ) ;

Afin de mieux comprendre nous allons decouper l’instruction en plusieurs morceaux :– this.button1.Click ( C’est la liste des gestionnaires d’evenements nommee ”Click”

du bouton ”button1” de notre formulaire. Lorsqu’on declenche un evenement onexecute tous les gestionnaires d’evenement a l’interieur de cette listes )

– new System.EventHandler () ( On cree un gestionnaire d’evenements qui, quand ilrecoit un evenement, execute la fonction en argument )

– this.button1 Click ( la fonction a executer si on clique sur le bouton ”button1”)– += ( permet de rajouter a la liste plutot que de remplacer (=) ou de supprimer

l’abonnement de la fonction (-=) )

0.5.7 this.textBox1.TabIndex = 2 ;

Le TabIndex represente l’ordre dans lequel on va passer d’un composant a l’autre viala touche TAB. Ici, si en execution on est sur l’element de TabIndex egal a 1 on passerasur la textBox en faisant une tabulation.

0.5.8 La fonction ”main”

La fonction main se trouve dans le fichier ”Program.cs”. Elle execute dans un threadsepare la fenetre via la fonction ”Application.Run(new Form1()) ;”. Neanmoins, il ne fautpas creer tous les threads de cette facon car cette fonction est trop specialisee pour gererplusieurs threads correctement.

0.6 Multifenetre

0.6.1 Creer une nouvelle fenetre

Dans le menu d’exploration de solution, cliquez-droit sur le projet (le deuxieme elementde la liste). Allez successivement sur ”Ajouter” puis ”Formulaire Windows”. Unefenetre d’ajout general d’objet s’ouvre. Lisez la liste des elements que l’on peut ajouter a

12

un projet, c’est tres instructif. Conservez ”Formulaire Windows”, donnez lui le nom par

defaut (”Form2”) et enfin validez.

0.6.2 Ouvrir la nouvelle fenetre en execution

Le clic du bouton OK va maintenant ouvrir notre nouvelle fenetre. Pour cela il suffitde creer l’instance de la fenetre (”Form f = new From2 ;”), puis de l’afficher (”f.Show() ;”).Remarque : l’application ne s’arrete que si la fenetre ”Form1” est ferme.

0.7 Decouvrir par soi-meme les boucles et differents

types de syntaxe

Nous allons rajouter une boucle for dans notre programme pour illustrer la chose.Faites ”Crtl-K” puis ”X”, la mention ”extrait de code” apparaıt. Chercher dans laliste deroulante (ou en tapant les premieres lettres) ”for” puis validez avec ”Entree” etvoila votre boucle for.

Bilan : 7 touches pour les 22 caracteres minimum de la boucle for

13


Recommended