Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 05/04/2009, à 14:10

Luc Hermitte

Re : Pascal Objet ou C++ [Résolu]

Mathieu147 a écrit :

Par exemple, en Java quand tu fais

String s1 = "azerty";
String s2 = "azerty";
boolean eq1 = (s1 == s2);
boolean eq2 = (s1.equals(s2));

et bien eq1 sera faux, parce que s1 et s2 sont deux objets différents. Par contre eq2 sera vrai parce que les chaines sont identiques.

Par contre en C++ dans le code équivalent eq1 serait vrai parce que dans la classe string l'opérateur == est surchargé, ce qui n'est pas naturel puisque ça change le comportement par défaut. Enfin, moi je trouve.

Quand on manipule des chaines, on s'intéresse aux valeurs, pas aux entités. Comparer les pointeurs n'a pas le moindre intérêt ici.

Mathieu147 a écrit :
Luc Hermitte a écrit :

Link, tu as oublié qu'il n'y a pas de fonctions libres en Java. Il faut soit rajouter la classe englobante devant, soit mettre un objet devant. Il y a des gens qui aiment...

Par exemple moi. Ça c'est du «vrai» orient-objet. On entend souvent dire que la qualité d'un programme est inversement proportionnelle au nombre de ses variables globales. C'est un peu pareil pour les fonctions, non?

Nope. Non seulement "vrai objet" n'est pas un gage de qualité. D'ailleurs, la tendance est au multi-paradigme aujourd'hui.
Ensuite non, le nombre élevé de fonctions n'est pas un facteur négatif de qualité, en général c'est le contraire. Cf les adages: "une fonction doit faire une chose et le faire bien", "une fonction une responsabilité", et autres limites sur les nombres cyclomatiques.
Bon je sais bien que tu ne voulais pas parler de ça. Et combien même, une fonction qu'elle soit membre ou libre restera toujours une fonction. Reste quelques détails en faveur des libres: on peut toujours rajouter des fonctions libres à une classe, des fonctions membre non. C'est d'ailleurs la tendance en C++ en aujourd'hui : quand il n'y a pas besoin d'un point de variabilité dynamique, ni d'accéder aux détails internes d'un objet, alors on préfère définir des fonctions libres.
A ce sujet dans le document sur la genèse de la STL, A.Stepanov expliquait que quantité de fonctions membre des conteneurs standards auraient dû être libres. Seulement il y avait trop d'illuminées (j'extrapole) OO qui manquaient de recul à l'époque pour pouvoir s'y prendre correctement. Aujourd'hui ils sont partis vers d'autres pâturages, mais le mal est fait -- ça c'est de moi.


Mathieu147 a écrit :
Luc Hermitte a écrit :

Pour l'héritage multiple, les interfaces du Java ne savent pas compenser nativement pour supporter la programmation par contrat.

L'héritage multiple pose plusieurs problèmes, si plusieurs classes mères fournissent fournissent la même méthode, le compilateur quand il compile, il met quoi dans ses vtable? Et on a toujours moyen de s'en sortir autrement, et pas nécessairement avec des gros bidouillages bien sales.

Pas nativement.

struct C1 : noncopyable {
    virtual ~C1() {};
    void f(int i) {
        assert(i <42);
        do_f(i);
    }
private:
    virtual void do_f(int i) = 0;
};

struct C2 : noncopyable {
    virtual ~C2() {};
    void g(int i) {
        assert(i >42);
        do_g(i);
    }
private:
    virtual void do_g(int i) = 0;
};

struct Service : C1, C2
{
private:
    virtual void do_f(int i);
    virtual void do_g(int i);
};

Nativement, Java est incapable de mettre des contrats sur plus d'une interface. Il faut passer par des préprocesseurs externes. Cela ne rentre pas dans la famille des hacks que je qualifie de propre.

Mathieu147 a écrit :

Vous n'arriverez pas à m'enlever de la tête que la surcharge des opérateurs, c'est fait uniquement pour être plus simple mais c'est bien raté, ça complique plus qu'autre chose.

Parce que tu n'écris pas de classes numériques...

Lumin0u a écrit :
Luc Hermitte a écrit :

Link, tu as oublié qu'il n'y a pas de fonctions libres en Java. Il faut soit rajouter la classe englobante devant, soit mettre un objet devant. Il y a des gens qui aiment...

Et pour des méthodes private? ou bien il vaut mieux commencer systématiquement par this.?

Ta remarque est HS.
Parce que, avec le contexte (opérateurs mathématiques, matrices en particulier dans l'exemple) tu ne me feras pas croire que tu mélanges service fourni et utilisation du service dans une même classe.

Dernière modification par Luc Hermitte (Le 05/04/2009, à 14:13)

Hors ligne

#27 Le 05/04/2009, à 17:08

Le Farfadet Spatial

Re : Pascal Objet ou C++ [Résolu]

Salut à tous !

   Pour fêter mon retour, je vais participer au troll !

   Plus sérieusement, je me permets d'apporter mon grain de sel.

   Pour répondre directement à Spock, Java est un langage ne supportant qu'un seul paradigme de programmation, à savoir la programmation par objets. C++ est un langage multi-paradigme, il est donc en conséquence plus complexe. Cela dit, les approches mutli-paradigmes sont de plus en plus utilisées et ont d'ors et déjà fait preuve d'une très grande expressivité, d'une très grande souplesse et permettent des performances vraiment excellentes. Par contre, comme l'a signalé Luc HERMITTE, C++ est généralement extrêmement mal enseigné. D'un autre côté, le manque de performances de Java est souvent très surestimé. De toute façon, c'est plus le choix d'un bon algorithme qui améliorera les performances, que le choix du langage.

   Le problème d'Objective Pascal, comme dit précédemment, c'est que son support libre n'est pas très bon. Je crains que ce langage n'ait plus guère d'avenir, même s'il a été un excellent vecteur pour l'apprentissage de la programmation en son temps.

   Donc, que choisir ? Comme d'habitude, cela dépend de ton besoin. De ce que j'ai pu distinguer dans tes interventions, je te conseillerais plutôt Java ou Python, mais ce serait mieux si tu définissais un peu ce que tu comptes faire.

vogia a écrit :

il faut d'abord apprendre les bases du C avant le C++ puisque le C++ est un prolongement du C.

C'est l'exemple typique des fausses idées extrêmement répandues au sujet de l'enseignement du C++. Il est temps de se rendre compte que C++ n'est pas C with classes, que C et C++ sont bien deux langages différents. C'est plutôt un handicape que d'apprendre C avant C++, car cela pousse à coder dans un sabir incompréhensible et peu performant, avec une trop grande utilisation des pointeurs --- en C++, on n'a presque pas besoin des pointeurs, --- les horribles conversion de type C, créer des constantes par macros, méconnaissance de la bibliothèque standard C++ et toutes ces horreurs.

Mathieu147 a écrit :

la surcharge des opérateurs ne sert à rien.

Pour ma part, je fais de l'analyse numérique (http://www.legos.obs-mip.fr/~lebars/). Mon expérience est qu'il est très difficile de maintenir un code numérique sans surcharge des opérateurs. Ce n'est pas pour rien que Fortran s'y est mis dès Fortran 90. Généralement, toute programmation à forte teneur mathématique gagnera énormément avec la surcharge des opérateurs.

   À bientôt.

                                                                                                                                                                    Le Farfadet Spatial

Hors ligne

#28 Le 05/04/2009, à 18:09

philarmonie

Re : Pascal Objet ou C++ [Résolu]

Le Farfadet Spatial a écrit :
Mathieu147 a écrit :

la surcharge des opérateurs ne sert à rien.

Pour ma part, je fais de l'analyse numérique (http://www.legos.obs-mip.fr/~lebars/). Mon expérience est qu'il est très difficile de maintenir un code numérique sans surcharge des opérateurs. Ce n'est pas pour rien que Fortran s'y est mis dès Fortran 90. Généralement, toute programmation à forte teneur mathématique gagnera énormément avec la surcharge des opérateurs.

J'aurai envie d'aller plus loin. Pourquoi limiter l'utilisation de la notation par opérateur au seul programme manipulant des structures algébriques types matrices ou consort?
Je précise que j'exprime la position d'un mathématicien et non d'un informaticien. De ce fait je ne peux m'empêcher de faire l'association opérateur <-> algèbre. Dans ce contexte une chose importante en algèbre pour sa lisibilité c'est justement de faire usage d'une notation par opérateur et non une notation fonctionnelle (d'ailleurs cette pratique n'est pas propre à l'algèbre mais à la Mathématique toute entière). Et comme je l'ai dit dans un message précédent des opérateurs on peut en définir sur tout et n'importe quoi (ce qui est le cas d'une multitude de fonctions dans du code informatique). Alors dans ce cas pourquoi faire un usage prépondérant de la notation fonctionnelle? Je suis bien conscient que les contraintes de l'écriture linéaire du code fait que l'on ne peut faire que des opérateurs unaire ou binaire, mais pourquoi ne pas développer plus en avant ce mode de notation pour ce type d'opérateur?

#29 Le 05/04/2009, à 18:19

Luc Hermitte

Re : Pascal Objet ou C++ [Résolu]

Il y a deux ans je crois, le DoD avait lancé un programme pour le développement d'un langage orienté calculs hautes performances (comme il avait lancé un programme qui nous donna l'Ada il y a quelques temps déjà).

Chez Sun (vous savez, ceux qui ont sorti Java), ils avaient travaillé sur un langage (ne pas me demander le nom, je l'ai oublié) où l'on pouvait définir autant d'opérateurs qu'on le voulait. Les opérateurs étant n'importe symbole UTF-8 ou leur équivalent en simili-TeX. On passait alors outre la limitation du C++ où seuls certains symboles prédéfinis pouvaient être employés pour définir des opérateurs.
Certes il y a des problèmes avec le C++ à cause de ce jeu prédéfini, ou de la dualité entité<->valeur complètement incomprise par la majorité, mais leur intérêt est bien réel.

Hors ligne

#30 Le 05/04/2009, à 22:14

spock

Re : Pascal Objet ou C++ [Résolu]

Le Farfadet Spatial a écrit :

De ce que j'ai pu distinguer dans tes interventions, je te conseillerais plutôt Java ou Python, mais ce serait mieux si tu définissais un peu ce que tu comptes faire.

C'est un peu ce que je pense le Farfadet. Parce que le C++ risque de faire fumer mes petites neurones...:lol:

Je pense qu'il y a plus de ressources en francais concernant le Java, non ?

Hors ligne

#31 Le 05/04/2009, à 22:40

romario

Re : Pascal Objet ou C++ [Résolu]

spock a écrit :
Le Farfadet Spatial a écrit :

De ce que j'ai pu distinguer dans tes interventions, je te conseillerais plutôt Java ou Python, mais ce serait mieux si tu définissais un peu ce que tu comptes faire.

C'est un peu ce que je pense le Farfadet. Parce que le C++ risque de faire fumer mes petites neurones...:lol:

Je pense qu'il y a plus de ressources en francais concernant le Java, non ?

Tu trouveras tout ce que tu veux comme documentation (en français) sur le Python, ne t'inquiête pas !!
J'ai oublié de dire qu'il était multiplateforme aussi wink

Hors ligne

#32 Le 05/04/2009, à 22:47

Luc Hermitte

Re : Pascal Objet ou C++ [Résolu]

Oui, comme tous les langages interprétés (pratiquement?)

Hors ligne

#33 Le 06/04/2009, à 08:48

Le Farfadet Spatial

Re : Pascal Objet ou C++ [Résolu]

Salut à tous !

spock a écrit :

Je pense qu'il y a plus de ressources en francais concernant le Java, non ?

Tu trouveras de la documentation de qualité et en français tant pour Java que pour Python. Java est plus utilisé que Python, mais Python supporte plus de paradigmes que Java. Les deux sont multi-plateformes.

   Pour apprendre à programmer en Java :

      Programmer en Java
      Claude DELANOY
      Eyrolles

   Pour apprendre à programmer en Python :

      Apprendre à programmer avec Python
      Gérard SWINNEN
      O'Reilly

   De plus, pour celui qui apprend à programmer et quel que soit le langage, je conseille le livre suivant :

      Introduction à l'Algorithmique, Cours et exercices
      Thomas H. CORMEN, Charles E. LEISERSON, Ronald L. RIVEST et Clifford STEIN
      Dunod

   Le livre est énorme, mais tu ne le liras pas d'un coup et il te suivra dans toute ta vie de programmeur. Comme tu t'orientes vers des langages à objets, je te conseille également le livre suivant :

      UML 2 par la pratique, Études de cas et exercices corrigés
      Pascal ROQUES
      Eyrolles

   Cela dit, une fois encore, pour que nous t'aidions dans le choix d'un langage, il serait préférable que tu définisse ce que tu veux faire.

   À bientôt.

                                                                                                                                                                    Le Farfadet Spatial

Hors ligne

#34 Le 06/04/2009, à 11:02

Mathieu147

Re : Pascal Objet ou C++ [Résolu]

Je crois que ça sert à rien de continuer à nourrir le troll sur la surcharge des opérateurs et l'héritage multiple (de toutes façons j'ai raison big_smile hihihi) mais je voulais préciser que le livre de Gérard Swinnen est disponible en PDF gratuitement sur internet. Je ne l'ai pas lu en entier (même si je l'ai imprimé), mais à mon souvenir, il est bien expliqué. Ce sont juste des bases mais si tu veux apprendre c'est chouette.


Pffff…

Hors ligne

#35 Le 06/04/2009, à 15:05

Le Farfadet Spatial

Re : Pascal Objet ou C++ [Résolu]

Salut à tous !

Mathieu147 a écrit :

le livre de Gérard Swinnen est disponible en PDF gratuitement sur internet.

Il est en effet disponible sous licence GNU FDL (Free Documentation Licence) à l'adresse suivante :

      http://www.inforef.be/swi/download/python_notes.pdf

   À bientôt.

                                                                                                                                                                        Le Farfadet Spatial

Hors ligne

#36 Le 06/04/2009, à 15:51

spock

Re : Pascal Objet ou C++ [Résolu]

Le Farfadet Spatial a écrit :

Cela dit, une fois encore, pour que nous t'aidions dans le choix d'un langage, il serait préférable que tu définisse ce que tu veux faire.

C'est surtout le désir d'apprendre la programmation objet qui me motive. Apprendre pour apprendre (pour l'instant).
Les applications fenêtrées m'interesse beaucoup aussi. Par contre, pas du tout la programmation système.

Il y a quelque mois déjà, j'ai créé une petite application de gestion des cotisations des adhérants d'une association (juste le noyau, le programme demande à être amélioré) en Delphi.

En Pascal c'est facile, il y a juste à crée un tableau en 3 dimensions (adhérants, mois, années) et à l'enregistrer dans un fichier. On parcourt le tableau avec trois boucles "for" imbriquées.

Avec Python ou Java vous faites comment ?

Hors ligne

#37 Le 06/04/2009, à 16:17

Karl_le_rouge

Re : Pascal Objet ou C++ [Résolu]

Je déconseille vivement le Swinnen pour apprendre Python sauf si on a jamais programmé ou pour des lycéens.
Il enseigne un très mauvais dialecte, et n'aide pas à acquérir un style Pythonnique. 

Si vous cherchez un bouquin pour apprendre Python:
* "Programmation Python" de Tarek Ziadé. C'est une bonne introduction au langage mais également une référence avec un rappel des bonnes pratiques. T. Ziadé est un bon pédagogue, je recommande également ses autres ouvrages.
Couvre Python 2.4
* "Core Python" de Wesley J. Chun. En 2 volumes, le premier enseigne les bases (OOP, exceptions, modules, IO, etc ...), le second les points avancés (regex, threads, réseau, base de données, etc ...).
C'est un ouvrage assez complet, bien écrit et traduit en Français.
Couvre Python 2.5
* Les ouvrages de Mark Lutz chez O'Reilly, "Learning Python" qui constitue une introduction au langage, "Programming Python" qui traite de sujets plus avancés (avec une brève introduction en rappel). Devrait faire partie de la bibliothèque de tout bon développeur Python.
Couvre Python 2.5

Dernière modification par Karl_le_rouge (Le 06/04/2009, à 16:19)

Hors ligne

#38 Le 06/04/2009, à 16:33

philarmonie

Re : Pascal Objet ou C++ [Résolu]

spock a écrit :

Il y a quelque mois déjà, j'ai créé une petite application de gestion des cotisations des adhérants d'une association (juste le noyau, le programme demande à être amélioré) en Delphi.

En Pascal c'est facile, il y a juste à crée un tableau en 3 dimensions (adhérants, mois, années) et à l'enregistrer dans un fichier. On parcourt le tableau avec trois boucles "for" imbriquées.

Avec Python ou Java vous faites comment ?

En créant une classe adhérent avec ses attributs (nom, mois et années), ses méthodes si nécessaires (vu que c'est pour faire de la gestion à mon avis ce sera nécessaire) et ensuite tu crées une liste d'adhérents et tu fait une boucle dessus.
Tu peux aussi très bien implémenter ta liste comme un classe avec ses attributs (comme la liste des adhérents) et ses méthodes (parcours de la liste...).
Si tu nous en dit un peu plus sur ce que doit réaliser ce logiciel de gestion on pourrai t'en dire un peu plus sur les différentes possibilités d'implémentation. Au dessus j'ai surtout mis en avant le côté POO, vu que c'est ce qui tu sembles vouloir apprendre.

Dernière modification par philarmonie (Le 06/04/2009, à 16:34)

#39 Le 06/04/2009, à 17:15

spock

Re : Pascal Objet ou C++ [Résolu]

Karl_le_rouge a écrit :

Je déconseille vivement le Swinnen pour apprendre Python sauf si on a jamais programmé ou pour des lycéens.
Il enseigne un très mauvais dialecte, et n'aide pas à acquérir un style Pythonnique.

Oui, le Swinnen a l'air destiné aux "très débutants". Je me demande d'ailleurs si le Python est si bien que ca pour apprendre, le typage étant dynamique.

Pour les livres, tu veux dire qu'il n'y a rien de qualité sur le net (en francais bien sur) ?




philarmonie a écrit :

En créant une classe adhérent avec ses attributs (nom, mois et années), ses méthodes si nécessaires (vu que c'est pour faire de la gestion à mon avis ce sera nécessaire) et ensuite tu crées une liste d'adhérents et tu fait une boucle dessus.

une liste d'adhérents, c'est à dire un tableau d'objets adhérants ?

Concernant le logiciel, il faut pourvoir ajouter, supprimer, modifer les adhérants et la cotisation qui a lieu une fois par mois. Le principe s'arrête là.

Voili voilou.:)

Hors ligne

#40 Le 06/04/2009, à 17:32

philarmonie

Re : Pascal Objet ou C++ [Résolu]

spock a écrit :
philarmonie a écrit :

En créant une classe adhérent avec ses attributs (nom, mois et années), ses méthodes si nécessaires (vu que c'est pour faire de la gestion à mon avis ce sera nécessaire) et ensuite tu crées une liste d'adhérents et tu fait une boucle dessus.

une liste d'adhérents, c'est à dire un tableau d'objets adhérants ?

Concernant le logiciel, il faut pourvoir ajouter, supprimer, modifer les adhérants et la cotisation qui a lieu une fois par mois. Le principe s'arrête là.

Voili voilou.:)

Oui une liste c'est comme un tableau, j'emploie le terme liste parce que je code en python et que c'est le nom de ce type dans ce langage. En python on peut faire des listes de n'importe quoi et les types non pas besoin d'être homogènes (tu peux mettre des int et des string dans une même list). D'ailleurs comme tes adhérents ont un nom, il sera peut être plus pratique pour la recherche dans le listing  d'utiliser plutôt un dictionnaire (une élément n'est pas repérer par son index mais par un "mot-clé").

Pour ton logiciel, en python tu peux par exemple:
- créer une classe adhérent avec ses attributs et méthodes (modification des attributs)
- utiliser un dictionnaire pour le listing (ce type a déjà des méthodes d'ajout et suppression)

Dernière modification par philarmonie (Le 06/04/2009, à 17:32)

#41 Le 06/04/2009, à 23:41

Le Farfadet Spatial

Re : Pascal Objet ou C++ [Résolu]

Salut à tous !

spock a écrit :

C'est surtout le désir d'apprendre la programmation objet qui me motive. Apprendre pour apprendre (pour l'instant).
Les applications fenêtrées m'interesse beaucoup aussi. Par contre, pas du tout la programmation système.

Il y a quelque mois déjà, j'ai créé une petite application de gestion des cotisations des adhérants d'une association (juste le noyau, le programme demande à être amélioré) en Delphi.

Pour ces applications, j'aurais plutôt tendance à opter pour Java : la bibliothèque standard offre tout ce qu'il faut pour l'interface graphique, pour la gestion de base de données --- car il s'agit tout de même d'une base de données, avec peut-être un brin de tableur, --- ainsi que la linéarisation (la sauvegarde dans un fichier). Enfin, en vérité OpenOffice.org offre déjà tout ce qu'il faut pour faire ça de manière efficace, mais alors l'apprentissage de la programmation devient moins important.

   En tout cas, si ton objectif est vraiment de travailler la programmation par objets, Java ne supportant que ce paradigme, il te permettra d'explorer entièrement cette approche de la programmation.

   Pour apprendre Python, regarde surtout les références de Karl : je suis surtout un développeur en langage fonctionnel et C++, mais je ne suis pas trop au fait de la littérature Python. Pour le livre sur Java, je suis beaucoup plus sûr de mon coup et absolument certain en ce qui concerne le livre sur l'algorithmique et celui sur UML --- qui propose des exemples en Java, d'ailleurs.

En Pascal c'est facile, il y a juste à crée un tableau en 3 dimensions (adhérants, mois, années) et à l'enregistrer dans un fichier. On parcourt le tableau avec trois boucles "for" imbriquées.

Avec Python ou Java vous faites comment ?

Hum... Un algorithme en O(n³)... Pas terrible. Enfin, moi, je ne ferais pas comme ça (toutefois ce n'est pas le sujet ici). En tout cas, la façon de traiter le problème n'a aucune raison d'être différente en Pascal, Python ou Java.

   À bientôt.

                                                                                                                                                                    Le Farfadet Spatial

Dernière modification par Le Farfadet Spatial (Le 06/04/2009, à 23:43)

Hors ligne

#42 Le 06/04/2009, à 23:48

philarmonie

Re : Pascal Objet ou C++ [Résolu]

Le Farfadet Spatial a écrit :

Hum... Un algorithme en O(n³)... Pas terrible. Enfin, moi, je ne ferais pas comme ça (toutefois ce n'est pas le sujet ici). En tout cas, la façon de traiter le problème n'a aucune raison d'être différente en Pascal, Python ou Java.

Pour ça que tu renvoies toujours à ton livre sur l'apprentissage de l'algorithmique? wink

#43 Le 07/04/2009, à 01:21

Le Farfadet Spatial

Re : Pascal Objet ou C++ [Résolu]

Salut à tous !

philarmonie a écrit :

Pour ça que tu renvoies toujours à ton livre sur l'apprentissage de l'algorithmique?

Hé quoi ? Ce n'est pas comme si je le conseillais en moyenne cinq fois par mois. Tiens : si ! Bon...

   En effet, je renvois encore et toujours à ce livre, car il a l'avantage d'être à la fois très complet et assez accessible, mais surtout parce que l'essentiel de la programmation, c'est l'algorithmique et les structures de données. Juste après viens la modélisation, puis le choix des paradigmes appropriés au problème. Le choix du langage n'arrive qu'ensuite : c'est important, mais ce n'est pas l'essentiel de la programmation.

   Par exemple, c'est l'algorithmique qui permet de dire qu'on peu sans doute faire mieux qu'un algorithme en O(n³).

   À bientôt.

                                                                                                                                                                        Le Farfadet Spatial

Hors ligne

#44 Le 07/04/2009, à 15:42

Mathieu147

Re : Pascal Objet ou C++ [Résolu]

spock a écrit :

Il y a quelque mois déjà, j'ai créé une petite application de gestion des cotisations des adhérants d'une association (juste le noyau, le programme demande à être amélioré) en Delphi.

En Pascal c'est facile, il y a juste à crée un tableau en 3 dimensions (adhérants, mois, années) et à l'enregistrer dans un fichier. On parcourt le tableau avec trois boucles "for" imbriquées.

Avec Python ou Java vous faites comment ?

Comme ça a été dit, tu fais une classe qui représente un adhérent, genre comme ça:

public class Adherent {
  public String name;
  public Date dateInscription;

 /**
  * Constructeur
  * @param name Le nom de l'adhérent
  * @param dateInscription Sa date d'inscription
  */
  public Adherent(String name, Date dateInscription) {
    this.name = name;
    this.dateInscription = dateInscription;
  }

 /**
  * Retourne la durée depuis laquelle d'adhérent est inscrit
  * @return Le nombre de jours depuis lesquels l'adhérent est inscrit
  */
  public int getTimeSinceInscription() {
    Date maintenant = new Date();
    return Integer.valueOf((dateInscription.getTime() - maintenant.getTime()) / (1000 * 3600 * 24));
  }
}

Tu peux rajouter des champs et des méthodes.

Ensuite dans ton code, tu crées un nouvel adhérent comme ça:

Date dateInsc = /*... ici tu initialises la date comme tu veux...*/;
Adherent nouvelAdherent = newAdherent("Albert", dateInsc);

Et puis tu peux le mettre dans un vecteur par exemple:

Vector<Adherent> v = new Vector<Adherent>();
v.add(nouvelAdherent);

Après tu peux parcourir la liste de tous les adhérents et afficher leurs noms dans la console:

Iterator<Adherent> it = v.iterator;
while (it.hasNext) {
  Adherent a = it.next();
  System.out.println(a.name);
}

Dans ton code, à chaque fois que tu dois représenter «quelque chose», tu fais une classe qui le représente. Par exemple, ici tu as une classe qui représente des adhérents. Tu pourrais aussi faire des tableaux comme tu dis, mais c'est pas «orienté-objet». Pour que ce soit orienté objet, tu dois pouvoir créer un objet «adhérent». Si tes adhérents ont un parrain dans ton association par exemple, tu n'as qu'a mettre un champ «private Adherent parrain;» dans ton code, qui aura une référence à un autre adhérent. Avec le système des tableaux, ça aurait été beaucoup plus complexe.

Tu trouveras un cours de programmation orientée-objet avec des exemples en Java ici: http://www.montefiore.ulg.ac.be/~boigelot/cours/oop/slides/cours.pdf

Dernière modification par Mathieu147 (Le 07/04/2009, à 15:47)


Pffff…

Hors ligne

#45 Le 07/04/2009, à 19:31

spock

Re : Pascal Objet ou C++ [Résolu]

Le code Java, tel que tu le présentes, est plus sympa que ce que je pensais. Dommage, cependant, qu'il s'inspire autant du C.

L'intêret du Java, pour moi, c'est qu'apparemment il y a plusieurs IDE. Je ne crois pas que ça soit le cas pour Python.

public Date dateInscription;

Tu peux m'en dire plus sur le type Date ?

Mathieu147 a écrit :

Tu pourrais aussi faire des tableaux comme tu dis, mais c'est pas «orienté-objet».

Oui, j'ai un peu fonctionné sur mes acquis...:D


Merci pour le lien. Tu penses quoi du tuto Java sur le site du zéro ?




PS: pour les interfaces graphiques, le plus facile est le Python ou le Java ?

Hors ligne

#46 Le 07/04/2009, à 19:36

Le Farfadet Spatial

Re : Pascal Objet ou C++ [Résolu]

Salut à tous !

spock a écrit :

PS: pour les interfaces graphiques, le plus facile est le Python ou le Java ?

C'est très semblable.

   À bientôt.

                                                                                                                                                Le Farfadet Spatial

Hors ligne

#47 Le 08/04/2009, à 09:24

Mathieu147

Re : Pascal Objet ou C++ [Résolu]

spock a écrit :

L'intêret du Java, pour moi, c'est qu'apparemment il y a plusieurs IDE. Je ne crois pas que ça soit le cas pour Python.

J'en sais rien, je programme pas en Python, mais en Java j'adore Netbeans (comme je l'ai déjà dit big_smile)

spock a écrit :
public Date dateInscription;

Tu peux m'en dire plus sur le type Date ?

http://java.sun.com/j2se/1.5.0/docs/api/overview-summary.html smile (java.util.Date)

spock a écrit :

Merci pour le lien. Tu penses quoi du tuto Java sur le site du zéro ?

Je ne sais pas, je ne l'ai pas lu hmm

Dernière modification par Mathieu147 (Le 08/04/2009, à 10:34)


Pffff…

Hors ligne

#48 Le 08/04/2009, à 10:24

Karl_le_rouge

Re : Pascal Objet ou C++ [Résolu]

> PS: pour les interfaces graphiques, le plus facile est le Python ou le Java ?
Sans hésitation, Python.
Primo, Python est un langage concis bien adapté au prototypage rapide, secundo, Tkinter/PyGtk sont un poil plus simple à appréhender que Swing [1].
Note qu'une fois bien maitrisé et avec l'aide d'outils tels qu'Eclipse ou Netbeans, Java/Swing peut se révéler extrêmement productif.


>L'intêret du Java, pour moi, c'est qu'apparemment il y a plusieurs IDE. Je ne crois pas que ça soit le cas pour Python.
Netbeans et Eclipse offrent des plugins pour développer en Python. Et les IDE Python sont légions (Pida, spe, drpython, idle en standard, etc ...)
Mais unn éditeur de texte et un interpréteur suffisent largement. yikes)



[1] La réputation de lenteur des applications Java est en partie dû à une mauvaise connaissance du toolkit Swing par les développeurs. Un bon bouquin pour faire des IHM jolies et efficaces en Swing: "Filthy Rich Clients" de Chet Haase et Romain Guy (bien connu des lecteurs de developpez.com et du feu magazine Login).

Hors ligne

#49 Le 12/04/2009, à 18:22

spock

Re : Pascal Objet ou C++ [Résolu]

Bon, j'opte finalement pour le python en utilisant "dive into python" de developpez.com. Je verrais ensuite pour les bouquins.

Hors ligne

#50 Le 12/04/2009, à 23:42

Le Farfadet Spatial

Re : Pascal Objet ou C++ [Résolu]

Salut à tous !

spock a écrit :

Bon, j'opte finalement pour le python en utilisant "dive into python" de developpez.com. Je verrais ensuite pour les bouquins.

Python est un excellent langage, qui permet d'être très productif : tu ne seras pas déçu. Bon courage !

   Par contre, pense à mettre la balise « [Résolu] » dans ton titre.

   À bientôt.

                                                                                                                                                                        Le Farfadet Spatial

Hors ligne