IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Passage de Java à C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut Passage de Java à C#
    Bonjour à tous,
    Je suis développeur Java, mais la boite dans laquelle je viens d'être embauché souhaite que je développe en C#. Je souhaitais donc savoir s'il existait sur ce forum un topic résumant les principales différences entre ces deux langages à la fois très proche syntaxiquement et qui pourtant amène des différences lors du développement. Si ce n'est pas le cas, est ce que quelqu'un connaissant un minimum C# pourrait me dire quelques mots sur les subtilités qu'il apporte par rapport à Java ? Les trucs en plus, les principales différences, les pièges dans lesquels on tombe au début... ? Je demande ça car si quelqu'un prend une demi heure pour m'expliquer ça, ça peut me faire économiser de nombreuses heures à chercher sur le web.
    Pour commencer, existe-t-il l'équivalent en C# de notre serializable ?

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut,

    Avant de commencer à faire un comparaison longue, il faudrait nous indiquer quelle version du framework tu va utiliser, car entre 1.1, 2, 3, 3.5 et 4 il y a eut de nombreux changements (un peu comme si tu comparais java 1.4 à java 6).

  3. #3
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    La 4 n'est pas encore déployée de ce que j'ai compris, on est encore à la 3.5.
    Sinon, je vais être amené à utiliser WPF, et j'ai trouvé notamment une "nouveauté", WPF Ribbon qui permet d'inclure facilement le bandeau des "nouvelles" suites microsoft dans l'interface graphique. Je dois aussi parser du XML, et j'ai cru comprendre que LinQ pourrait m'aider, même si je ne sais pas encore ce que c'est...

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Donc c'est la 3.5

    bon, sur les opérations 'simples' (if, switch, affectation), tout ce qui marche en java marche en .net, ou presque (pour moi il manque juste le throw de signature de méthode qui manque). A part ça je pense que tu trouveras toujours une soution 'propre' de faire l'équivalent en .net

    Pour la partie ihm, tu as du microsoft donc c'est pour faire tu microsoft. Wpf se présentes sous la forme d'un fichier xaml de présentation et d'un fichier cs de code, (l'equivalent java serai le fichier jsp et sa servlet). Je ne peux pas t'en dire plus car je ne fait que du web.


    Enfin pour Link, je ne crois qu'il existe pour l'instant d'équivalent en java, cela te permet en gros d'effectuer des filtres, des jointures, des aggrégations sur listes d'objets (donc en gros toutes les opérations simples de base de données) directment sur des objets, fichiers xml, bases de données, dans ton cas cela te permettrai de faire tes filtres sur tes fichiers xml.

    Pour ton serializable, je ne sais plus ce que cela fait en java, en .net il y a l'interface iserializable qui te permet de serializer/deserialiser une classe:
    http://tlevesque.developpez.com/dotn...serialization/

    Voila, faire une comparaison exhaustive risquerai d'ètre tres long, je te suggères donc de poser directment les questions sur ton besoin.

    Bonne chance.

  5. #5
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    D'accord, merci pour ton point de vue

    Pour le serialize, je m'en servais particulièrement pour enregistrer directement les objets dans des fichiers, pour faire une sauvegarde des données tout simplement. Cela permet, si tu as créé un objet voiture, de pouvoir enregistrer et donc récupérer directement ton objet voiture lorsque tu vas relancer l'application, sans enregistrer toutes les valeurs des attributs séparément.

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Bienvenue dans le monde merveilleux de DotNet

    Je pense que la meilleure manière d'appréhender ton passage sur dotnet est de commencer par des tutos de ce type, ainsi tu passeras en revue les features de base de c#.

  7. #7
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    Et y a-t-il un équivalent à la javadoc ? Des commentaires pour une documentation qui doivent suivre un coding style ? Doxygen peut être ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par défaut
    Bonjour

    Tu peux mettre en commande de compilation une demande de commentaire obligatoire pour chaque fonction et variable public.

    pour mettre le commentaire avant la definition de la function ou variable tu ajout e /// et le prototype de commentaire xml apparait

    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /// <summary>
            /// Method to control switch board through RS485
            /// </summary>
            /// <param name="bSet">Set or clear relay</param>
            /// <param name="RelaisNumber">relais number to control (1 to 8) ; 9 for all</param>
            /// <param name="ResetAllBeforSet">if true clear all Relay befor set one.</param>
            public void SendSwitchCommand(bool bSet, byte RelaisNumber, bool ResetAllBeforSet)
    il ne te reste plus qu'a entrer tes infos perso.
    Ces infos seront dans l'EDI visual studio avec l'intellisence quand tu appel la fonction par contre il n y a pas de génération de fichier doc directement.
    Des outils existent mais je n'ai pas trouvé de chose complètement automatique.

    Codialement

  9. #9
    Modérateur
    Avatar de Flaburgan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 229
    Par défaut
    Merci bien! Et puisqu'on en parle c'quoi ce IntelliSense ? Il me semblait que c'était simplement l'auto-complétion, mais ça a l'air d'englober plus de trucs que ça ?

    (ya tant de choses à apprendre, je sautille de partout :p)

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Flaburgan Voir le message
    Merci bien! Et puisqu'on en parle c'quoi ce IntelliSense ? Il me semblait que c'était simplement l'auto-complétion, mais ça a l'air d'englober plus de trucs que ça ?

    (ya tant de choses à apprendre, je sautille de partout :p)
    Le mieux plutôt qu'une longue description est d'aller à la source :

    http://msdn.microsoft.com/en-us/libr...v=VS.100).aspx

    Et y'a même une (petite) page wiki sur le sujet :

    http://en.wikipedia.org/wiki/IntelliSense

  11. #11
    Membre éclairé
    Avatar de Sieldev
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 259
    Par défaut
    Salut et bienvenu dans le monde .NET

    Pas mal de choses ont été dites dans le topic, je vais en reprendre quelques unes et t'en donner un échantillon.

    Pour ce qui est des accesseurs et des mutateurs, en Java par convention on préfixe une méthode par Get ou Set:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Accesseurs et mutateurs
    public int GetIdClient() {
        return this.idClient;
    }
     
    public void SetIdClient(int id){
        this.idClient = id;
    }
    En C# tu peux faire la même chose ou définir des propriétés. En fait les getter et setter ont été standardisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Accesseurs et mutateurs
    public string IdClient
    {
        get { return this.idClient; }
        set { this.IdClient = value; }
    }
     
    // En utilisation ça donne:
    Client unClient = new Client();
     
    int id = unClient.IdClient; // Appel la propriété get
    unClient.IdClient = 5; // Appel la propriété set
    Tu retrouveras également des indexeurs, ils te permettront de parcourir un attribut de ta classe de type Collection ou Tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    // On suppose qu'il existe un attribut lesCommandes dans la classe Client
     
    // Indexeur par l'index
    public Commande this[int poste]
    {
        get
        {
            Commande commandeCourante = this.lesCommandes[poste] as Commande;
            return commandeCourante;
        } 
     
    // Indexeur par le nom
    public Commande this[string nom]
    {
        get
        {
            int valRetour = -1;
            Commande commandeCourante = null;
     
            for (int i = 0; i < Colonnes.Count; i++)
            {
                commandeCourante = this.lesCommandes[i] as Commande;
     
                if (commandeCourante.Nom == Nom)
                {
                    valRetour = i;
                }
            }
     
            return valRetour;
        }
    }
     
    // Utilisation
     public SqlDbType RecupererTypeSql(string nom)
    {
        int i = 0;
        SqlDbType leType = SqlDbType.Int;
     
        for (i = 0; i < this.lesCommandes.Count; i++)
        {
            if (this[i].Nom == nom)
            {
                leType = this[i].TypeSQL;
            }
        }
     
        return leType;
    } 
    }
    Pour ce qui est de LINQ, comme il a été mentionné plus haut, c'est un langage qui permet de requêter un grand nombre de source de données.
    Il existe: LINQ To SQL, LINQ To Objects, LINQ To XML, LINQ To Entity, LINQ To Sharepoint

    Je trouve LINQ très puissant, en effet avec LINQ To Objects on peut interroger tous les types d'objets implémentant IEnumerable. De plus la syntaxe est inspirée de SQL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     var query = from Commande cmd in lesCommandes
                            where cmd.Total > 5000
                            order by cmd.Nom
                            select cmd;
    Par itération cela aurait pris beaucoup plus de lignes de code.
    Je te conseille de faire des recherches sur le mot clé "var", il est très intéressant .

    Je t'ai décrit une partie très infime de ce que peut offrir le C#, il te reste encore énormément de choses à découvrir, et c'est encore le cas pour moi aussi

    Pour ce qui est de la documentation, la MSDN est la référence.
    Tu y trouveras la description d'absolument tout le Framework .NET dans toutes ses versions, avec des exemples de code dans differents langages .NET, des articles, des livres blanc etc... le tout traduit en plusieurs dizaines de langues.
    Par contre la fonction recherche de la MSDN n'est pas terrible. Ce que je te conseille c'est de taper sur Google "msdn" suivie de ce que tu recherches.

    Enfin, apprend à utiliser Visual Studio, pour moi il est l'un des IDE les plus puissant. Son mode débuggage est une pure merveille.
    J'ai eu l'occasion de tester Code::Blocks, Eclispe et Netbeans (certes pas aussi longtemps que Visual Studio) et je n'ai pas retrouvé les sensations éprouvées sur Visual Studio.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Passage de Java à C# : les Bibliothèques
    Par Chycken dans le forum C#
    Réponses: 9
    Dernier message: 22/10/2011, 18h27
  2. [Apprentissage] Passage de Java à C#
    Par TomZ dans le forum C#
    Réponses: 3
    Dernier message: 15/10/2010, 21h08
  3. Réponses: 14
    Dernier message: 24/08/2010, 01h47
  4. [Débutant] Passage de Java a C++
    Par GyZmoO dans le forum C++
    Réponses: 9
    Dernier message: 10/10/2007, 01h18
  5. [migration] Passage à Java 5
    Par LaJavanaise dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2006, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo