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.

#126 Le 09/11/2007, à 17:34

aganim07

Re : Questions sur la P.O.O. (C++ et JAVA)

verbose a écrit :

Depuis la version 1.5, il existe une solution plus simple qui repose sur la classe java.util.Scanner.

Scanner scan = new Scanner(System.in);
String cmd = scan.nextLine()
scan.close();

Trois lignes pour scanner une valeur ??? yikes:o:o:o:o:o:o:o

Hors ligne

#127 Le 09/11/2007, à 17:53

$Gaël$

Re : Questions sur la P.O.O. (C++ et JAVA)

De ma faible expérience en Java (je préfère C++ big_smile) je peux te donner ces conseils :
- La documentation Java, javadoc te sera très utile, elle est accessible sur le site de sun ou avec un moteur de recherche intégré
- Pour le clavier je ne me rappelle plus comment je faisais mais peut-être peux-tu regarder du côté de java.io.InputStream
- Ensuite, j'imagine que tu utilises Eclipse, il possède quelques raccourcis claviers intéressants comme :

syso [alt][espace] pour System.out.println

En général l'autocompletion est assez intéressante... mais peut-être es-tu déjà au courant...


Ubuntu is an ancient african word meaning : "I can't configure Debian".

Hors ligne

#128 Le 09/11/2007, à 17:57

aganim07

Re : Questions sur la P.O.O. (C++ et JAVA)

Ouaip j'utilise Eclipse ! C'est quoi syso ??

Hors ligne

#129 Le 09/11/2007, à 18:07

$Gaël$

Re : Questions sur la P.O.O. (C++ et JAVA)

aganim07 a écrit :

Ouaip j'utilise Eclipse ! C'est quoi syso ??

En fait tu tapes syso au clavier puis [alt][espace] (ou ton raccourci d'autocompletion si tu as changé) et par magie Eclipse te le transforme en System.out.println(); ... et a force c'est pratique et ca évite d écrire tout !

--edit : si tu cherches le nom d'un de tes membres ou d'une classe et que tu te rappelles des 1ères lettres [alt][espace] peut-être ton ami ^^

--edit2 : pt'être que ca pourrait t'aider (mais je pense que tu l'as déja vu smile ):

Reader reader = new inptuStreamReader(System.in);
BufferedReader input = new BufferedReader(reader);
System.out.print("Entrer votre prenom : ");
String prenom = input.readLine();

Dernière modification par $Gaël$ (Le 09/11/2007, à 18:17)


Ubuntu is an ancient african word meaning : "I can't configure Debian".

Hors ligne

#130 Le 09/11/2007, à 18:12

$Gaël$

Re : Questions sur la P.O.O. (C++ et JAVA)

Link31 a écrit :
action(S, sigma)

Cette ligne, dans un corps de fonction, appelle Sousjacent::operator()(float, float) qui n'est pas défini. Si tu veux appeler le constructeur de action dans le corps de Future::Future(), il faut utiliser :

action = A(S, sigma);

Mais appeler le constructeur d'un membre dans le corps du constructeur de la classe revient à appeler une deuxième fois ce constructeur, vu que le constructeur par défaut est appelé automatiquement avant l'entrée dans le corps de fonction.
Il faut donc initialiser le membre action dans la liste d'initialisation de Future::Future() (ou le transformer en pointeur et créer une instance où tu le désires avec new).

merci de l'éclaircissement big_smile je me serais fait tuer par mon prof s'il avait vu ca wink


Ubuntu is an ancient african word meaning : "I can't configure Debian".

Hors ligne

#131 Le 09/11/2007, à 18:42

aganim07

Re : Questions sur la P.O.O. (C++ et JAVA)

Et vlan ! Mon programme fonctionne enfin !!! C'est carrément mieux le Java smile:):)

MaClassePrincipale.java

public class MaClassePrincipale
{
	public static void main(String args[])
	{
		Action a;
		a = new Action("Bidule", 3.,5.);
		a.affiche();
		
		Future f;
		f = new Future(10., 6., "10/06/2008", a);
		f.affiche();
		
		Option o;
		o = new Option(10., 6., "10/06/2008", a, "call");
		o.afficheOption();
	}
}

Action.java

public class Action
{
	public Action(String name, double S, double vol)
	{
		this.name = name;
		this.S = S;
		this.vol = vol;
	}

	public void affiche()
	{
		System.out.println("Je suis une Action de nom = " + name);
		System.out.println("de spot = " + S);
		System.out.println("de vol = " + vol);
	}
	
	public String getName()	// Accessor
	{
		return name;
	}
	
	private String name;	// Libellé
	private double S;		// Spot
	private double vol;		// Volatilité implicite
}

Future.java

public class Future
{
	public Future(double P, double K, String maturity, Action underlaying)
	{
		this.P = P;
		this.K = K;
		this.maturity = maturity;
		this.underlaying = underlaying;
	}
	
	public void affiche()
	{
		System.out.println("Je suis un dérivé de price = " + P);
		System.out.println("de strike = " + K);
		System.out.println("de date de maturité = " + maturity);
		System.out.println("de sous-jacent = " + underlaying.getName());
	}
	
	private double P;			// Price
	private double K;			// Strike
	private String maturity;	// Date de maturité
	private Action underlaying;	// Sousjacent
}

Option.java

public class Option extends Future
{
	public Option(double P, double K, String maturity, Action underlaying, String type)
	{
		super(P, K, maturity, underlaying);
		this.type = type;
	}
	
	public void afficheOption()
	{
		affiche();
		System.out.println("de type = " + type);
	}
	
	private String type;	// Call ou Put
}

Hors ligne

#132 Le 09/11/2007, à 22:23

Le Farfadet Spatial

Re : Questions sur la P.O.O. (C++ et JAVA)

Salut à  tous !

aganim07 a écrit :

C'est carrément mieux le Java

Java est pur objet, alors que C++ est orienté objet : tu es obligé de suivre le paradigme objet. à‡a a ses avantages et ses inconvénients. Et Java ne permet pas toutes les choses étranges que permet C++. Encore une fois, ça a ces avantages et ces inconvénients.

   Globalement, Java est un langage plus simple que C++. De plus, il a l'avantage d'avoir une bibliothèque de fonctions extrêmement fournit dès le départ. Par contre, contrairement à  ce que prétend Sun, il n'est pas (pour l'instant) véritablement indépendant de l'architecture : il faut être sous un système pour lequel il existe une JVM digne de ce nom. De toute façon, le seul moyen d'être réellement portable, c'est d'utiliser un langage standardisé, de respecter ce standard et de faire du code libre.

   Java est un très bon langage pour apprendre la programmation orientée objet. C'est aussi un bon choix pour pas mal d'application. Par contre, pour les cas o๠le temps d'exécution est vraiment critique (mais il est vrai qu'il n'y a pas tant de cas de ce genre), il n'est pas trop adapté, ceci même si on a trop souvent exagéré sa lenteur.

   De toute façon, chaque langage a ses forces et ses faiblesses, il importe surtout d'être capable d'utiliser le langage le plus approprié au problème que l'on a à  résoudre... et d'avoir la possibilité d'utiliser ce langage...

   à€ bientà´t.

                                                                                                                                            Le Farfadet Spatial

Hors ligne

#133 Le 11/11/2007, à 03:08

Martopioche

Re : Questions sur la P.O.O. (C++ et JAVA)

'jour

Mes 2 cts

Java est pur objet

Pas tout à  fait... Il existe dans java les primitives (int, long, float...) qui font que Java n'est pas pur objet wink

Java est plus simple dans le sens o๠le compilateur décharge de beaucoup de choses : pointeurs, gestion de la mémoire... Néanmoins, ce n'est pas non plus un langage complètement évident.

Voici ma première question en Java. Apparement, ce langage n'intègre rien par défaut pour lire une donnée entrée par l'utilisateur (comme un scanf ou un std::cin).
...
Mais les développeurs Java en général font vraiment cela ?

Non, et non.

Java est un langage objet, il faut donc lui préciser o๠lire les données (System.in) et quels types de données (un flux). Cela dit, rien n'empêche d'écrire ta bibliothèque de fonctions "simplifiées" que tu utilisera.

Non les dev java font pas ça car ils développent pas de programmes Java qui interagissent avec l'utilisateur via un terminal. Pas qu'ils en soient incapables ou le veulent pas mais professionnellement c'est jamais demandé, et pratiquement ça n'a d'utilité que pour un outil système quasiment jamais écrit en Java...

Sinon en vrac pour Aganim :

Oui ta situation en SSII est normale. Tu est un débutant, donc difficile à  placer car en général, les clients veulent du monde avec expérience. C'est plus facile en SSII qui fait du forfait car une tel entreprise peut former ses presta. Ensuite, ne te leurre pas : il est très rare que des presta aient à  réaliser des modèles, surtout dans le secteur bancaire. Ca, c'est le boulot de la MOA. Toi, à  la rigueur, tu va l'implanter... La seule solution pour en faire : te faire embaucher par la banque.

Enfin, la complexité d'un langage comme Java va beaucoup plus loin que la sémantique. C'est bien de voir ça, c'est sûr. Une fois que tu l'a compris, il te suffit de savoir lire une Javadoc (cf plus haut). Mais faire du Java, c'est savoir penser Objet. Et faire de l'objet ne signifit pas juste déclarer des classes. Déclarer des classes comme tu l'a fait ne sert à  rien, tout ça tient dans le Main. Il faut savoir découper ton programme en fonctionnalités indépendantes. Tu arrivera alors à  tes objets auxquels il faudra donner des comportements (les méthodes) et des états (les attributs). Ensuite, gérer héritage et polymorphisme. A ce moment, il s'agit de dégager les choses communes de certaines classes pour ne pas les dupliquer.

Par exemple, en banque, tu va créer un objet compte.Mais cet objet ne sert à  rien sinon que Compte bancaire et compte épargne en héritent. Créditer et débiter sont implanté au niveau de compte. On peut penser que compte et aussi une classe abstraite car il contient une méthode abstraite : toucherDesInterets. Cette méthode crédite un compte épargne mais provoque une exception dans un compte bancaire... Ah oui, les exceptions, super important, les exceptions. C'est ce qui te permet de gérer la situation quand il se passe n'importe quoi.

Ensuite, toujours dans le chapitre de l'héritage, contrairement au C++, Java ne supporte pas l'héritage multiple. Par contre, il comporte des Interfaces (inexistantes en C++, je me trompe ? ). Les interfaces vont te permettre une abstraction et un découplage de tes classes. Par exemple, tu définit une interface d'accès à  des données (IDao pour DataAccessObject) Celle-ci comporte les méthodes obtenirConnexion, cloreConnexion et chargerCompteBancaire(identifiantClient). Tu crée une implémentation BddDao qui interragit avec une base de données. Dans ton code, tu déclare IDao maDao = new BddDao(); Si demain, on te demande d'utiliser une XmlDao, tu l'implante et modifie juste la déclaration, et tu touche pas au reste du code.

Ensuite, il va falloir que tu t'intéresse aux aspects web (servlets JSPs).

Et enfin, aux Frameworks. Les frameworks, c'est des bibliothèques de fonctionnalités qui construisent l'ossature de ton application. Les plus demandés sont Hibernate (persistance de données), Struts (implantation d'un modèle MVC) et Spring (beaucoup de choses dont l'inversion de contrà´le et l'injection de dépendances).

Ca parrait titanesque comme boulot ? Oui, Java s'apprend pas en 20 jours. Mais ne t'inquiète pas, chaque chose en son temps wink Apprend petit à  petit.

Courage.

Dernière modification par Martopioche (Le 11/11/2007, à 20:13)

Hors ligne

#134 Le 11/11/2007, à 04:10

Le Farfadet Spatial

Re : Questions sur la P.O.O. (C++ et JAVA)

Salut à  tous !

Martopioche a écrit :
Le Farfadet Spatial a écrit :

Java est pur objet

Pas tout à  fait... Il existe dans java les primitives (int, long, float...) qui font que Java n'est pas pur objet wink

Dans la mesure o๠je me permets de toujours chercher la petite bête, je te l'accorde bien volontiers !

   Bon, donc, disons qu'avec Java, tu dois avoir une approche objet. En C++, tu peux avoir une approche objet.

Java est plus simple dans le sens o๠le compilateur décharge de beaucoup de choses : pointeurs, gestion de la mémoire... Néanmoins, ce n'est pas non plus un langage complètement évident.

Bien sûr, il n'y a aucun langage évident. Néanmoins, je classe Java dans la catégorie simple --- ce qui ne veut pas dire simpliste, ni peu puissant. Par exemple, il ne permet pas de faire des choses aussi étrange qu'en C++, donc créer moins de bogues insolubles.

   Cela dit, pour moi, le seul langage véritablement difficile (ce qui ne signifie pas qu'il est plus performant que les autres), c'est C++.

   Sinon, je précise que l'autre morceau de message que tu cites n'est pas de moi. J'assume tout ce que j'ai écrit ici, mais pas ce qu'ont écrit les autres !

Enfin, la complexité d'un langage comme Java va beaucoup plus loin que la sémantique. C'est bien de voir ça, c'est sûr. Une fois que tu l'a compris, il te suffit de savoir lire une Javadoc (cf plus haut). Mais faire du Java, c'est savoir penser Objet. Et faire de l'objet ne signifit pas juste déclarer des classes. Déclarer des classes comme tu l'a fait ne sert à  rien, tout ça tient dans le Main. Il faut savoir découper ton programme en fonctionnalités indépendantes. Tu arrivera alors à  tes objets auxquels il faudra donner des comportements (les méthodes) et des états (les attributs). Ensuite, gérer héritage et polymorphisme. A ce moment, il s'agit de dégager les choses communes de certaines classes pour ne pas les dupliquer.

Je suis entièrement d'accord avec toi !

Ensuite, toujours dans le chapitre de l'héritage, contrairement au C++, Java ne supporte pas l'héritage multiple. Par contre, il comporte des Interfaces (inexistantes en C++, je me trompe ? ). Les interfaces vont te permettre une abstraction et un découplage de tes classes. Par exemple, tu définit une interface d'accès à  des données (IDao pour DataAccessObject) Celle-ci comporte les méthodes obtenirConnexion, cloreConnexion et chargerCompteBancaire(identifiantClient). Tu crée une implémentation BddDao qui interragit avec une base de données. Dans ton code, tu déclare IDao maDao = new BddDao(); Si demain, on te demande d'utiliser une XmlDao, tu l'implante et modifie juste la déclaration, et tu touche pas au reste du code.

Non, tu ne fais pas d'erreur : il n'y a pas d'interface en C++. En fait, Java fait une différence, que ne fait pas C++, entre type et classe. Un type est quelque chose sur lequel on peut faire des opérations, mais peu importe de savoir comment ces opérations sont faites, il faut juste savoir que l'on peut faire. Une classe, c'est l'implémentation de comment sont faites les opérations sur les types (je schématise). Avec cette approche, il est normal de ne pouvoir hériter que d'une classe (il n'existe qu'une seule implémentation), mais que l'on puisse hériter de plusieurs types. L'approche C++ est plus souple --- et plus archaà¯que, il faut le reconnaà®tre, --- mais par contre est source de nombreux bogues délicates, tel que l'héritage en losange.

   L'expérience montre que l'on s'en sort très bien sans héritage multiple, mais avec les interfaces. Avec moins de bogues...

Oui, Java s'apprend pas en 20 jours.

Il n'existe aucun langage qui puisse s'apprendre en vingt jours.

   à€ bientà´t.

                                                                                                                                            Le Farfadet Spatial

Hors ligne

#135 Le 11/11/2007, à 11:34

carella

Re : Questions sur la P.O.O. (C++ et JAVA)

Bonjour à  tous !

Je vais aussi mettre mon grain de sel.
Et pourquoi ne pas commencer l'objet par un langage

simple (il s'apprend en une semaine pour qui connait un peu les concepts objet),
complètemement objet (tous les concepts objet y sont implémentés y compris l'héritage multiple qui n'est compliqué que pour ceux qui écrivent les compilateurs !)
fortement typé (ce qui évite bien des déboires)
limpide de lisibilité (on ne peut pas dire de ce langage ce que l'on dit de C et de tous ses dérivés C++ Java .... à  savoir qu'il est le résultat d'un pari pour faire le langage le plus cryptique possible !)
permettant la conception par contrat (seule avancée conceptuelle notable dans les langages depuis la fin des années 60 qui nous avait apporté la programmation structurée et le concepts objet et qui fait de ce langage à  la fois un langage de programmation  et un langage de conception qui couvre l'ensemble du cycle de vie du logiciel permettant de s'affranchir d'autres outils ultra complexes comme UML par exemple)
disponible sur toutes les plateformes possibles et imaginables
disposant d'un nombre impressionant de bibliothèques
conçu par un français
sous licence GPL

et qui, en plus pour ceux qui souffrent de manque de complexité (!), s'interface avec à  peu près tous les langages (en particulier C et C++)

J'ai nommé ...... Eiffel bien sûr

Après avoir programmé des centaines de milliers de lignes de codes en assembleur, Algol, Pascal, FORTRAN, PL1, CPL1, Basic, Cobol ...... j'ai eu l'immense chance de découvrir l'objet par le meilleur de ses représentants et c'est un vrai bonheur

Hors ligne

#136 Le 11/11/2007, à 20:13

Martopioche

Re : Questions sur la P.O.O. (C++ et JAVA)

Le Farfadet Spatial a écrit :

Sinon, je précise que l'autre morceau de message que tu cites n'est pas de moi. J'assume tout ce que j'ai écrit ici, mais pas ce qu'ont écrit les autres !

Oui oui oui tout à  fait, désolé pour la confusion, j'ai géré moyennement les quotes smile

carella a écrit :

Et pourquoi ne pas commencer l'objet par ... Eiffel

Parceque la question ici n'est pas de savoir par quel langage commencer car il y a une contrainte à  but professionnel derrière. Désolé pour tous ces super langages qui ont plein d'avantages, mais aujourd'hui, l'industrie du service informatique, c'est 90% de Java ou .Net, le reste étant du Php, Cobol ou C/C++.

Hors ligne

#137 Le 11/11/2007, à 20:32

carella

Re : Questions sur la P.O.O. (C++ et JAVA)

Martopioche a écrit :

Parceque la question ici n'est pas de savoir par quel langage commencer car il y a une contrainte à  but professionnel derrière. Désolé pour tous ces super langages qui ont plein d'avantages, mais aujourd'hui, l'industrie du service informatique, c'est 90% de Java ou .Net, le reste étant du Php, Cobol ou C/C++.

Avec des raisonnements comme ça il n'y aurait jamais eu Pascal puisqu'à  l'époque FORTRAN et Cobol se partageaient 99,99 % du marché et donc jamais de C ni les suivants.
Petite précision Eiffel est utilisé dans l'industrie Axa Rosenberg, HP le Department Of Defense américain et j'en passe.

Hors ligne

#138 Le 12/11/2007, à 17:19

Martopioche

Re : Questions sur la P.O.O. (C++ et JAVA)

carella a écrit :
Martopioche a écrit :

Parceque la question ici n'est pas de savoir par quel langage commencer car il y a une contrainte à  but professionnel derrière. Désolé pour tous ces super langages qui ont plein d'avantages, mais aujourd'hui, l'industrie du service informatique, c'est 90% de Java ou .Net, le reste étant du Php, Cobol ou C/C++.

Avec des raisonnements comme ça il n'y aurait jamais eu Pascal puisqu'à  l'époque FORTRAN et Cobol se partageaient 99,99 % du marché et donc jamais de C ni les suivants.
Petite précision Eiffel est utilisé dans l'industrie Axa Rosenberg, HP le Department Of Defense américain et j'en passe.

J'ignore quels sont les raisonnements que tu estime mais pour moi, dans le cas présenté, il est simple : bosser. On lui demande de se mettre à  Java, imagine son responsable revenant 2 jours plus tard estimer les avancées et de se voir répondre "Ben, j'ai étudié Eiffel parcequ'il est plus simple".

Je ne néglige pas que Eiffel ou n'importe quel autre langage soit utilisé quelque part, mais un développeur sans expérience ne se fera jamais embaucher pour mettre en place une techno mineur (je parle de parts de marché) dans un groupe. Un profile Java, .Net, vour C/C++ se vend. Un profile Eiffel, Ada, même Python, beaucoup, beaucoup moins.

De plus il y a une incohérence dans le message initial :

Et pourquoi ne pas commencer l'objet par un langage
simple (il s'apprend en une semaine pour qui connait un peu les concepts objet),

le problème ici encore est qu'il ignore les fondements de l'objet. IL ne s'agit pas d'opérer une reconversion, mais bien de s'armer pour la vie active.

Je le répète : je ne dénigre pas les autres langages, mais le contexte de la discussion n'est pas là .

Hors ligne

#139 Le 12/11/2007, à 17:26

Laurent Marzullo

Re : Questions sur la P.O.O. (C++ et JAVA)

T'a variable Yes_or_no n'est pas initialiser dans ta fonction. donc *yes_or_no est indéfini lors du premier test.

Et d'autres part, il te faudrait tester la longueur des chaà®nes que tu affectes à  email etc pour qu'elles ne dépasse pas les 24 caractères.

Le mieux est de faire un cin.getline

et ensuite de tester la longueur de la chaine que tu as lu.

#140 Le 12/11/2007, à 17:28

Laurent Marzullo

Re : Questions sur la P.O.O. (C++ et JAVA)

voilà  ce qui arrive quand on ne lit que la première page ;-)
a effacer donc.

#141 Le 15/11/2007, à 17:56

aganim07

Re : Questions sur la P.O.O. (C++ et JAVA)

J'ai fait ma première fenêtre !!!!!!!!!!!!!! Youpiiiiiiiiiiiii !!

Mais j'en peux plus de lire ce bouquin sur le Java. Presque deux semaines que je suis en intercontrat et je fais cela tout le temps. Pffffffffffffffff... En plus ça a l'air bien chiant les chapitres qu'il reste à  lire : polymorphisme, templates, héritage, interfaces etc... Hmmmm tout un programme !

Dernière modification par aganim07 (Le 15/11/2007, à 18:02)

Hors ligne

#142 Le 15/11/2007, à 22:10

Martopioche

Re : Questions sur la P.O.O. (C++ et JAVA)

aganim07 a écrit :

En plus ça a l'air bien chiant les chapitres qu'il reste à  lire : polymorphisme, templates, héritage, interfaces etc... Hmmmm tout un programme !

Heu... oui enfin, d'un autre coté, c'est les plus importants pour faire de programmation objet...

Hors ligne

#143 Le 15/11/2007, à 22:25

aganim07

Re : Questions sur la P.O.O. (C++ et JAVA)

Martopioche a écrit :
aganim07 a écrit :

En plus ça a l'air bien chiant les chapitres qu'il reste à lire : polymorphisme, templates, héritage, interfaces etc... Hmmmm tout un programme !

Heu... oui enfin, d'un autre coté, c'est les plus importants pour faire de programmation objet...

Oui je sais bien... Mais comme j'ai du apprendre une tonne de compétences en POO récemment là je sature et je n'en vois plus le bout. C'est pour cela que je râle ! Mais tu sais je fais tout ça de ma propre initiative alors si je le fais c'est que j'en ai envie. Seulement en ce moment je sature vraiment.

Hors ligne

#144 Le 16/11/2007, à 02:26

Martopioche

Re : Questions sur la P.O.O. (C++ et JAVA)

aganim07 a écrit :

Mais comme j'ai du apprendre une tonne de compétences en POO récemment

Alors sans vouloir te démoraliser, si tu n'a pas abordé ces concepts, tu n'a encore rien fait en objet. Tu t'est mis au Java, tu a appris une sémantique. Ok. Tu a écrit un petit programme qui tient dans une classe main. Ok, tu n'a rien fait qui ne soit pas faisable en procédural. Tu a écrit un programme qui appelle une classe pour faire une fonction. Bien, tu n'a rien fait qui ne soit pas faisable en procédural o๠tu appelle une bibliothèque externe. Faire de l'objet, ce n'est pas juste écrire "Class" au début de ton code.

Et pourtant... Si tu a fait une IHM, tu a déjà  utilisé ces notions. "Class maFrame extends JFrame"... Mais c'est de l'héritage... attends... "implements ActionListener"... Mais tu utilise une interface... Sauf qu'à  prioris tu ne le sait pas encore wink

Allez pour te faire saliver un exemple de ce que permet l'objet en pseudocode :

IConnexion conn // une interface de connexion
conn = DataBaseCon.getConnexion // l'implémentation qui implémente l'interface IConnexion
// -A- (voir après)
conn.getInformation(parametre)
TraiterInformetion
conn.saveInformation

T'est tout content, tu a produit ça. Sauf que ton patron te dit qu'en fait, il arrive que la BD soit en rade. Il faut alors utiliser une source de données en XML qui est là  en secours (tu t'occupe pas de la synchro BD-XML). Ce serait bien de modifier le code pour prendre ça en compte...

Super facile : tu crée et implémente une nouvelle classe XmlConn qui implémente l'interface IConnexion. Puis tu rajoute à  la place de // -A- :

if (conn == null) // La connexion a échouée
    conn = XmlConn.getConnexion // On ouvre les documents XML

Et c'est tout !

Ah non, attends. Ton patron a acheté une classe SecuredDataBaseConnexion qui assure une connexion plus fiable à  la BD et te dit que ce serait bien de l'utiliser. Ce serait bien que tu reste ce soir au lieu d'aller à  ton rendez vous d'anniversaire de première rencontre avec ta dulcinée parcequ'il y a présentation au client demain. Tiens il te laisse les clefs en te précisant que la classe implémente IConnexion. Il parrait que ça peut t'aider...

Ah, bah alors au travail. Commence par remplacer :

conn = DataBaseCon.getConnexion

par

conn = SecuredDataBaseCon.getConnexion

Ensuite...

Ferme la porte et fonce acheter des fleurs, t'a fini.

Exemples super basico idylique qui illustre ce que t'apportent ces notions qui te restent à  découvrir et qui font toute la puissance de l'objet.

Hors ligne

#145 Le 16/11/2007, à 02:51

aganim07

Re : Questions sur la P.O.O. (C++ et JAVA)

? yikes Oh laaaaa c'est incompréhensible pour moi...

Hors ligne

#146 Le 16/11/2007, à 09:56

carella

Re : Questions sur la P.O.O. (C++ et JAVA)

Voilà  pourquoi je disais de commencer l'apprentissage de l'objet par Eiffel.
Je n'avais pas pour but d'alimenter l'éternelle gue-guerre sur les langages mais simplement de dire que pour approcher l'objet il vaut mieux commencer par l'apprendre avec un langage qui "colle" aux concepts Objet et n'implémente rien que les concepts objets.

Dans la phrase : polymorphisme, templates, héritage, interfaces seuls l'héritage et le polymorphisme sont de réels concepts. Le reste n'existe que pour pallier les insuffisances conceptuelles de java : pas de classe purement conceptuelles (non implémentable) et pas d'héritage multiple.

Et là  bien sur celui qui apprend "sature" !

Hors ligne

#147 Le 16/11/2007, à 10:24

Martopioche

Re : Questions sur la P.O.O. (C++ et JAVA)

carella a écrit :

Dans la phrase : polymorphisme, templates, héritage, interfaces seuls l'héritage et le polymorphisme sont de réels concepts. Le reste n'existe que pour pallier les insuffisances conceptuelles de java : pas de classe purement conceptuelles (non implémentable) et pas d'héritage multiple.

Heu... attends 2 secondes...

polymorphisme et héritage sont les 2 concepts purement objet ? ok. Java et Eiffel, mais aussi Smalltalk, C++, Python te permettent de te limiter à ça.

Là dessus tu t'embarque sur 2 autre conceptes :
- Classes non implémentables ? En Java on appelle ça des classes abstraites
- Héritage multiple : ce concept a autant d'avantages que d'inconvénients. Beaucoup d'inconvénients. Compenser par un mécanisme de fusion/renomage des entités répétées est un choix d'Eiffel. L'impossibilité compensée par les interfaces est celui de Java.

Dans tous les cas, ces concepts sont difficiles, et que ce soit Eiffel, java, Python, Samlltalk ou C++, la difficulté est identique.

Hors ligne

#148 Le 16/11/2007, à 10:42

carella

Re : Questions sur la P.O.O. (C++ et JAVA)

Que l'héritage multiple ait des conséquences et que le compilateur prévienne qu'il y a conflit de nommage de caractéristiques de classe parcequ'il ne peut décider tout seul c'est un fait mais même s'il oblige le développeur à  rendre sa décision explicite cela n'a rien de conceptuellement complexe. Je trouve quand même que le renommage n'est pas un concept alors que les interfaces sont présentées comme tel en java et de mon point de vue ça complique l'approche objet.

Dire que l'héritage et l'héritage multiple sont des concepts difficiles me parait quand même un peu raccourci.
L'héritage est un mécanisme de classification qui existe dans de nombreuses sciences : botanique, règne animal ....... depuis le 18è siècle. Rien de difficile à  faire comprendre ce concept.
Exemple : un carré est un rectangle qui est un polygone qui est une figure fermée qui est une figure. Donc le carré hérite (= a toutes les propriétés) du rectangle qui hérite du polygone ........
Peu de gens ne comprenne pas ça

L'héritage multiple ? Quel classe d'objet hérite des classes calculatrice, agenda, réveil, lecteur MP3, appareil photo, caméra vidéo,........... le téléphone portable bien sur. C'est ça un concept difficile ?

Maintenant que ce soit pas simple de concevoir du logiciel de cette façon ça c'est autre chose.

Hors ligne

#149 Le 16/11/2007, à 12:14

aganim07

Re : Questions sur la P.O.O. (C++ et JAVA)

Ohhhh on se calme svp. Je n'ai jamais dit que je ne comprenais rien à  l'héritage. Je suis pas couillon merci. J'ai très bien compris le principe en soi. Ce que je ne connais pas c'est l'expérience de ce à  quoi ça sert au quotidien, les différentes applications, comment ça impacte les autres outils du Java, la manière de développer, de dresser le CDCF de la classe etc...

Après n'importe quel noeud-noeud peut comprendre qu'un carré hérite des propriétés du rectangle et ainsi de suite. C'est le jeu des poupées russes. Mais ça c'est bien mignon mais ça n'apprend absolument pas à  coder en Java.

Dernière modification par aganim07 (Le 16/11/2007, à 12:18)

Hors ligne

#150 Le 16/11/2007, à 12:43

Gojita

Re : Questions sur la P.O.O. (C++ et JAVA)

Bein pour faire simple .. commence par apprendre

1) L'encapsulation
     Manière d'intégré les données des méthodes sur ces même donnée seulement
    au sein de la classe

2) L' héritage
     Héritage des propriétées de(s) classe(s) de base. Si t'as bien assimilé l'encapsulation tu pouras alors comprendre les manière d'hérité (private, public, protected)

3) Le polymorphisme.
     Une fois que tu auras compris l'héritage ... on attaque le polymorphisme.
     C'est à  dire les méthodes 'virtual'.

L'héritage sert donc principalement à  classer tes objets de sorte que lorsque tu agis sur un objet, peut-importe son type, grace au polymorphisme, la bonne méthode de la classe est appelé.

Par exemple:

// C++
class Figure
{
    public:
        virtual double aire( void ) = 0;
};

class Carre : public Figure
{
    public:
        virtual double aire( void ) { return cote * cote; }
};


class Cercle : public Figure
{
    public:
        virtual double aire( void ) { return 2*PI*rayon; }
};


Maintenant, lorsque tu as une methode (fonction) qui prend en paramètre
une référence (pointer) sur figure:

void mafunction( Figure const& mafigure )
{
    mafigure.aire();
    // En fonction que le paramètre est un cercle ou un carré la bonne méthode
    // sera appelé
}

Tu peux aussi bien passé en parametre une référence sur un cercle ou un carré.
Voilà  à  quoi ca sert au quotidient


Il y a 10 sortes de personnes
Celles qui savent compter en binaires et les autres.

Hors ligne