![]() |
![]() |
![]() |
Cours de C# pour l'ESSI - Cours 02 : Initiation |
RACINE | |
Partie 1 : Introduction
Ce premier TP a pour but de familiariser un(e) utilisateur(trice) de Java à la programmation en C#. Ce dernier ne sera pas "difficile" pour quelqu'un habitué à Java. Le but est ici ouvertement de se "faire la main" avec un petit exemple en C#. Si vous recherchez un TP évolué ou traitant d'un sujet précis, je vous suggère de vous référer à l'index des cours/TP.
Ce TP sera peu "encadré" car vraiment peu difficile. Le but est de donner du matériel pour découvrir par vous même ce qu'est le C#. Ainsi, c'est ici votre curiosité et votre esprit d'initiative qui sont sollicité !
Il est plus que conseillé de se référer à la présentation C# vs. Java en cas de difficultés.
Si vous constatez des erreurs, des imprécisions ou que vous avez des problèmes avec ce TP, adressez vous à l'auteur
.
|
Tout le matériel qui est présenté n'est nullement un cours officiel de l'ESSI ou de Microsoft. Il a été produit par l'auteur et en est l'exclusive propriété. Toutes remarques pouvant aider à l'améliorer ou à corriger les diverses erreurs pouvant subsister sont les bienvenues. (email auteur (vizzini@essi.fr) ) |
| Vous faisiez ça en Java ... | ... et c'est comme ça en C# | Pour faire ça ... |
java.util.Vector | System.Collections.ArrayList | Des tables non ordonnées avec accès indexés, à taille variable. |
java.util.TreeSet, java.util.SortedSet | System.Collections.SortedList | Un ensemble ordonné, basé sur des doublets clé-valeur, sans doublons. Accès en log2n. |
implements Serializable (interface) | [Serializable] (attribut de classe) | Permettre aux objets de votre application d'être sérialisés (passés dans un flux après formatage). Le flux pouvant être un fichier, un socket, ... |
SortedSet.isEmpty() | SortedList.Count == 0 | Savoir si un ensemble est vide ou non. En C#, le compte est un "attribut" (en fait, un Get/Set caché !!) |
UneClasse m = (UneClasse)unSortedList.get(uneCle) | UneClasse m = (UneClasse)unSortedList[uneCle] | Récupérer l'élément de clé uneCle dans l'ensemble. |
GregorianCalendar | DateTime, GregorianCalendar | Attention : DateTime est une structure. Section dédiée. |
ObjectOutputStream de Java). Voici un petit exemple :BinaryFormatter ser = new BinaryFormatter(); FileStream fout = new FileStream(nomFichier, FileMode.Create); ser.Serialize(fout, set); fout.Close(); } catch (Exception) { /* gestion d'erreur*/ } |
| csharpindex.com/colorCode |
BinaryFormatter : le filtre binaire. La sérialisation "standard" (par rapport à la sérialisation XML)FileStream : le flux fichier (correspondant au FileOutputStream Java)Serialize qui prend un Objet et le sérialise dans le flux en paramètre. Attention, il faut que tout ce que vous sérialisiez soit Serializable. Cela se fait au moyen de l'attribut de classe [Serializable].
[Serializable]
public class UneClasse { /* --du code-- */ }
Pour en savoir plus sur la sérialisation, allez voir la doc .NET Framework section :
Serializable. Par contre, à la déserialisation on DOIT connaître le type de ce que l'on désérialise si on veut le down-caster ... Normal quoi !UneClasse unObjet; BinaryFormatter ser = new BinaryFormatter(); FileStream fout = new FileStream(nomFichier, FileMode.Open); unObjet = (UneClasse)ser.Deserialize(fout); fout.Close();
GregorianCalendar (présente à la quasi-identique en C#). La structure DateTime suffit TRÈS largement !DateTime ?DateTime d = new DateTime (DateTime.Now); d.AddMinutes (30); //le décalage d'heure, jour, mois, ... est AUTOMATIQUEMENT géré TimeSpan interval = (d - DateTime.Now).Duration(); //on crée un TimeSpan dont la durée représente la différence absolue (à cause du Duration()) entre d et NowLa structure
TimeSpan sert à représenter des intervalles de temps.unDateTime.ToString("f") retourne :tertredi 34 fevrimai 2143 34:62.
this, et notre bouton par this.btnCliquezIci.le-nom-de-la-frame.le-nom-du-contrôle ...par Alain Vizzini (vizzini@essi.fr
)
pour l'ESSI & Microsoft, création 06-03-2002, dernière màj 28-02-2003