Merci beaucoup pour ces vidéos, j'ai pu visionner presque toute les précédentes (dans l'ordre des cours de ton site) et j'espère pouvoir visionner le reste. Ton cours est très très explicite, pour quelqu'un qui n'est pas un grand initié dans la programmation, cela permet d'acquérir des fondations très importante, ce qui est mon cas, je t'en remercie
bjr je tiens à vous remercier pour tous vos super tuto, en plus gratuit si tous les élèves avaient des gens comme vous le taux d'échec serait presque de 0 :)
Un grand merci Dominique, ce sujet me semblait impossible à maîtriser mais en apprenant avec vous, j'ai tout compris, vos tutos sont très clairs, encore merci monsieur !
Bonjour Dominique, Super tuto, je me suis fait toutes la serie android, la java, et je pense faire aussi les autres. Tu explique bien et clairement, dommage que tu ne soit plus connu, car la qualité du cours est excellent. Bonne continuation et merci a toi.
Bonjour. Grand merci pour ces tuto interessant. svp je trouve pas cette version d android studio j ai installé la derniere version mais elle sont pas identiques. Pouvez vous m informer comment avoir cette version 2.1.2 ou comment revenir avec la miene vers celle ci car j aime vos tuto et j aimerai apprendre d elle. merci tjrs
Bonjour. Merci pour ton retour. Pour ce qui est de la version d'Android Studio, c'est embêtant : le studio ne cesse d'évoluer (à une fréquence soutenue) et ses développeurs n’arrête pas de changer l'interface graphique (les menus changent de noms, de place, ...). Il faudrait presque refaire toutes les vidéos à chaque nouvelle version (j’exagère un peu, mais pas tant que çà) : et çà, ce n'est pas possible pour moi. Pour ce qui est de la version 2.1.2, je ne pense plus qu'on puisse la retrouver, d'autant qu'Android Studio se met à jour quasiment de manière automatique. Conclusion, il faut prendre son mal en patience et chercher le nouvel emplacement de chaque fonctionnalité. Je sais, ce n'est pas top. Peut être que prochainement je referais cette vidéo. Bon courage
@@DominiqueLiard06 Merci pour votre réponse. J'essaierai de localiser ces fameux changements j'ai pas le choix, et sachez qu'on attendera toujours vos tutos vous etes un bon teacher, courage et bonne chance
Petite erreur de mathématique je pense, à la minute 55:46 Vous mettez : a/b + c/d == (ad+bc)/ad Or je pense que les deux dernières lettres doivent être plutôt bd et non ad! et donc donner ceci. a/b + c/d == (ad+bc)/bd Dans le codage après, c'est bon, mais votre explcation est erronée. Merci cependant pour ce que vous faites.
Salut, super série de tutoriels, tu m'aides énormément, merci à toi! J'ai deux petites questions, la première: - Est-ce que tu continueras la série de tuto Java en abordant les bases de données, les fenêtres etc ... ? Et la seconde: - Est-ce que tu maîtrises également le langage C ? Et que penses-tu du fait de maîtriser plusieurs langages de programmation ? Merci à toi !
Bonjour. Merci pout ton retour encourageant. Oui j'ai l'intention de continuer ces tutos. Pour ce qui est de la base de données, c'est déjà fait sur cette playlist : ruclips.net/video/yS-hF0irE84/видео.html Plus généralement, tu trouveras toutes les playlists sur cette page : ruclips.net/channel/UCl8T9GRhma8C2PaRfGIjOtAplaylists Enfin, oui je connais un peu C. Tu trouveras quelques infos sur ce langage à partir de cette page : koor.fr/C/Index.wp Je pense que maîtriser plusieurs langages te permettra de répondre à un maximum de besoins : C permet de traiter des sujets que Java ne couvre pas. Je t'encourage donc à continuer. Bon courage
Comparaison : comparer a/b et c/d, revient à comparer ad/bd et bc/bd, donc à comparer ad et bc, de sorte que si : 1° ad-bc = 0 alors ad = bc et donc a/b = c/d 2° ad-bc < 0 alors ad < bc et donc a/b < c/d 3° ad-bc > 0 alors ad > bc et donc a/b > c/d 2 implémentations possibles : 1re ---- avec une méthode statique public static void compare (Rational r1, Rational r2) { int result = r1.numerator * r2.denominator - r1.denominator * r2.numerator ; if (result == 0) { System.out.println( r1 + " == " + r2); } else if (result < 0) { System.out.println( r1 + " < " + r2); } else { System.out.println( r1 + ">" + r2); } } 2e ---- avec une méthode d'instance public void compare2 (Rational r3) { int result = this.numerator * r3.denominator - this.denominator * r3.numerator ; if (result == 0) { System.out.println( this + " == " + r3); } else if (result < 0) { System.out.println( this + " < " + r3); } else { System.out.println( this + ">" + r3); } } ---------- Application dans le main : Rational r6 = new Rational (2,3); et ainsi j'ai créé r7 = [4/6] r8 = [3/5] r9 = [7/4] r10 = [9/5] et r11 = [2/7] 1re solution --- d'où Appel dans le main à méthode statique Mathematiques.compare(r6,r7); Mathematiques.compare(r8,r9); Mathematiques.compare(r10,r11); ---> output dans l'atelier éclipse : [2/3] == [4/6] [3/5] < [7/4] [9/5] > [2/7] 2e solution --- ou Appel dans le main à méthode d'instance r6.compare2(r7); r8.compare2(r9); r10.compare2(r11); --> output dans l'atelier éclipse équivalent au précédent Merci, grâce à vous !
aurais peut-être dû tenter un switch pour éviter tous ces if de même j'aurais peut-être dû entrer mes rationnels dans un array pour éviter toutes ces répétitions à la déclaration / initialisation de mes objets d'instance (rationnels)
cette tentative de créer systématiquement une méthode statique et une méthode d'instance commence à me faire comprendre les différences entre elles. Du coup pourquoi choisir telle méthode à telle autre ? En effet, elles se dupliquent, sont redondantes. Et où les classe-t-on ? La méthode d'instance, pas d'alternative. Mais en ce qui concerne la méthode statique ? Dans une classe Mathematiques ou dans une autre ? Elles se recoupent... Cela dépendra, j'imagine, du projet en construction. Car ces méthodes devraient en fait hériter aussi bien des règles mathématiques que celles des rationnels ceci étant dit la seconde est partie de la première...
Du coup, pour la simplification j'ai fait autrement : 2 implémentations possibles 1re ----- méthode statique dans classe Mathematiques public static void simplify (Rational r) { int a = getNumerator(); int b = getDenominator(); int divisor = Mathematiques.pgcd (a/b); if (divisor != 0) { r.setNumerator( a /= divisor ); r.setDenominator ( b /= divisor); } } 2e ----- méthode d'instance dans classe Rational - impossible de faire autrement là public void simplify(){ int pgcd = Mathematiques.pgcd ( this.getNumerator(), this.getDenominator() ) ; if ( pgcd != 0) { this.setNumerator ( this.numerator /= pgcd ); this.setDenominator ( this.denominator /= pgcd ); } } ---------- Application dans le main int result = 3 * 17; // pour m'assurer un pgcd de 17 - donc result == 51 int result1 = 7 * 17; // pour m'assurer un pgcd de 17 - donc result1 == 119 Rational r5 = new Rational ( result, result1 ); 1° ----> méthode statique : Mathematiques.simplify(r5); System.out.println( r5 ); output : [3/7] 2° ----> méthode d'instance : r5.simplify(); System.out.println ( r5 ); output : [3/7] --------- avantages et inconvénients ? Je n'ai pas le recul pour le savoir.
// soustraction a/b - c/d = (ad-cb) / bd avec a = this.numerator avec b = this.denominator avec c = r2.numerator et avec d = r2.denominator on a, public Rational sub(Rational r2){ return new Rational( this.numerator*r2.denominator - r2.numerator*this.denominator, this.denominator*r2.denominator ) ; } // multiplication (a/b) * (c/d) = ac / bd avec les mêmes conversions ci-dessus public Rational mult(Rational r2){ return new Rational( this.numerator*r2.numerator, this.denominator*r2.denominator ) ; } // division (a/b)/(c/d) = ad / bc d'où, public Rational div(Rational r2){ return new Rational( this.numerator*r2.denominator, this.denominator*r2.numerator ) ; } --- // Application et utilisation de ces méthodes dans le main : avec r1 un objet de classe Rational faisant référence à un objet contenant la valeur [3/5] - selon le format donné par le toString et r2 pointant la valeur [3/1] au moins addition System.out.println(r1.add(r2)); L'output sur la console (atelier éclipse) : [18/5]. Je me suis posé la question : r1, r2, r3 sont des noms de variables / objets, variables de type évolué (référence) Ils comportent donc en mémoire une adresse vers une autre place allouée en mémoire pour stocker les objets (qui portent en leur sein des attributs, des propriétés et des méthodes). Donc r1 = fr.koor.poo@a11b779c - par exemple r2 = fr.koor.poo@a11b779d - par exemple r3 = fr.koor.poo@a11b77a0 - par exemple et à cette adresse pointée par r1 on a r1.numerator = 3 et r1.denominator = 5 et à celle pointée par r2 on a r2.numerator = 3 et r1.denominator = 1 et le return r3 variable temporaire on a r3.numerator = 18 et r3.denominator = 5 Et pourtant la méthode println affiche non pas les adresses mais des valeurs sous le format décidé dans le toString() qu'on a employée sans qu'on ne l'invoque ce qui contredit le type de données dit de référence (data de type évolué par opposition au data de type primitif). Il fallait que j'aille dans la séquence suivante abordant la question de l'héritage, à la fin, pour avoir la réponse. Très clair ! Merci pour votre apport, un des meilleurs tutoriels (si ce n'est pas le meilleur en français existant) sur le langage java que vous m'avez fait apprécier. Un très grand merci !!! Un autre aspect un peu difficile est le pourquoi on utilisait des méthodes statiques dans le tutoriel dédié et ici on n'utilise plus des statiques. La seule chose que j'ai retenue (et j'ai peut-être tort) c'est qu'une méthode statique ne s'appelle pas à partir d'un objet. J'ai encore du mal à l'énoncer clairement...
Comme toujours dans tous ceux que j'ai déjà vu sur Koor le tuto est EXCELLENT !! Quelle maîtrise !!
Merci Dominique pour la qualité du contenu de votre cours
Merci beaucoup pour ces vidéos, j'ai pu visionner presque toute les précédentes (dans l'ordre des cours de ton site) et j'espère pouvoir visionner le reste. Ton cours est très très explicite, pour quelqu'un qui n'est pas un grand initié dans la programmation, cela permet d'acquérir des fondations très importante, ce qui est mon cas, je t'en remercie
bjr je tiens à vous remercier pour tous vos super tuto, en plus gratuit si tous les élèves avaient des gens comme vous le taux d'échec serait presque de 0 :)
Un grand merci Dominique, ce sujet me semblait impossible à maîtriser mais en apprenant avec vous, j'ai tout compris, vos tutos sont très clairs, encore merci monsieur !
c'était géniale j'ai adoré merci à vous pour ce cours plus que quali 😋
Un cours vraiment complet, les exemples sont claire et rien n'est oublier.
Merci
Merci de ton soutient. Et note que la playlist est loin d'être terminée : de nouveaux tutos devraient arriver bientôt.
J'attend avec impatience tes cours sur les exceptions, entrée sortie ... Des notions vu en cours mais que je ne maîtrise pas bien
Bonjour Dominique,
Super tuto, je me suis fait toutes la serie android, la java, et je pense faire aussi les autres. Tu explique bien et clairement, dommage que tu ne soit plus connu, car la qualité du cours est excellent. Bonne continuation et merci a toi.
merci beauoup. Tout est clair. De plus c est agréable à suivre ! bravo...
Bravo Dominique pour tes cours ! On comprend absolument tout. Continues comme ça !
Merci
On apprend facilement avec toi. Merci beaucoup !
Bravo !
Tes cours sont très bien expliqué
Merci !!!
Bravo, un cours bien expliqué. Merci a vous
Il y'a une faute mathématique à la minute [ 55:19 ] comme quoi :
a/b + c/d serait égale à (a*d + b*c)/ad .
Plûtot : (a*d + b*c)/bd .
Bonjour. Grand merci pour ces tuto interessant. svp je trouve pas cette version d android studio j ai installé la derniere version mais elle sont pas identiques. Pouvez vous m informer comment avoir cette version 2.1.2 ou comment revenir avec la miene vers celle ci car j aime vos tuto et j aimerai apprendre d elle. merci tjrs
Bonjour. Merci pour ton retour.
Pour ce qui est de la version d'Android Studio, c'est embêtant : le studio ne cesse d'évoluer (à une fréquence soutenue) et ses développeurs n’arrête pas de changer l'interface graphique (les menus changent de noms, de place, ...).
Il faudrait presque refaire toutes les vidéos à chaque nouvelle version (j’exagère un peu, mais pas tant que çà) : et çà, ce n'est pas possible pour moi.
Pour ce qui est de la version 2.1.2, je ne pense plus qu'on puisse la retrouver, d'autant qu'Android Studio se met à jour quasiment de manière automatique.
Conclusion, il faut prendre son mal en patience et chercher le nouvel emplacement de chaque fonctionnalité. Je sais, ce n'est pas top. Peut être que prochainement je referais cette vidéo.
Bon courage
@@DominiqueLiard06 Merci pour votre réponse.
J'essaierai de localiser ces fameux changements j'ai pas le choix, et sachez qu'on attendera toujours vos tutos vous etes un bon teacher, courage et bonne chance
Merci. ça m'aide vraiment beaucoup.
Merci pour le cours !
De rien
Petite erreur de mathématique je pense, à la minute 55:46
Vous mettez :
a/b + c/d == (ad+bc)/ad
Or je pense que les deux dernières lettres doivent être plutôt bd et non ad! et donc donner ceci.
a/b + c/d == (ad+bc)/bd
Dans le codage après, c'est bon, mais votre explcation est erronée.
Merci cependant pour ce que vous faites.
Merci pour ce cours exceptionnel, peux-tu me dire si tu en as fait d'autres? Un grand merci
Merci. Et oui, j'ai plusieurs autres tutos. Tu les trouveras sur ce lien : ruclips.net/channel/UCl8T9GRhma8C2PaRfGIjOtAplaylists
Merci pour ces cours! Sensas!
Salut, super série de tutoriels, tu m'aides énormément, merci à toi! J'ai deux petites questions, la première:
- Est-ce que tu continueras la série de tuto Java en abordant les bases de données, les fenêtres etc ... ?
Et la seconde:
- Est-ce que tu maîtrises également le langage C ? Et que penses-tu du fait de maîtriser plusieurs langages de programmation ?
Merci à toi !
Bonjour. Merci pout ton retour encourageant. Oui j'ai l'intention de continuer ces tutos. Pour ce qui est de la base de données, c'est déjà fait sur cette playlist : ruclips.net/video/yS-hF0irE84/видео.html
Plus généralement, tu trouveras toutes les playlists sur cette page : ruclips.net/channel/UCl8T9GRhma8C2PaRfGIjOtAplaylists
Enfin, oui je connais un peu C. Tu trouveras quelques infos sur ce langage à partir de cette page : koor.fr/C/Index.wp
Je pense que maîtriser plusieurs langages te permettra de répondre à un maximum de besoins : C permet de traiter des sujets que Java ne couvre pas. Je t'encourage donc à continuer.
Bon courage
D'accord, merci de votre réponse.
Excellent tuto, merci!
Cours très efficace
POO bien expliquée
wahoo exellent comme cours
Comparaison :
comparer a/b et c/d, revient à comparer ad/bd et bc/bd, donc à comparer ad et bc, de sorte que si :
1° ad-bc = 0 alors ad = bc et donc a/b = c/d
2° ad-bc < 0 alors ad < bc et donc a/b < c/d
3° ad-bc > 0 alors ad > bc et donc a/b > c/d
2 implémentations possibles :
1re ---- avec une méthode statique
public static void compare (Rational r1, Rational r2) {
int result = r1.numerator * r2.denominator - r1.denominator * r2.numerator ;
if (result == 0) {
System.out.println( r1 + " == " + r2);
} else if (result < 0) {
System.out.println( r1 + " < " + r2);
} else {
System.out.println( r1 + ">" + r2);
}
}
2e ---- avec une méthode d'instance
public void compare2 (Rational r3) {
int result = this.numerator * r3.denominator - this.denominator * r3.numerator ;
if (result == 0) {
System.out.println( this + " == " + r3);
} else if (result < 0) {
System.out.println( this + " < " + r3);
} else {
System.out.println( this + ">" + r3);
}
}
----------
Application dans le main :
Rational r6 = new Rational (2,3);
et ainsi j'ai créé
r7 = [4/6]
r8 = [3/5]
r9 = [7/4]
r10 = [9/5]
et r11 = [2/7]
1re solution --- d'où
Appel dans le main à méthode statique
Mathematiques.compare(r6,r7);
Mathematiques.compare(r8,r9);
Mathematiques.compare(r10,r11);
---> output dans l'atelier éclipse :
[2/3] == [4/6]
[3/5] < [7/4]
[9/5] > [2/7]
2e solution --- ou
Appel dans le main à méthode d'instance
r6.compare2(r7);
r8.compare2(r9);
r10.compare2(r11);
--> output dans l'atelier éclipse équivalent au précédent
Merci, grâce à vous !
aurais peut-être dû tenter un switch pour éviter tous ces if
de même j'aurais peut-être dû entrer mes rationnels dans un array pour éviter toutes ces répétitions à la déclaration / initialisation de mes objets d'instance (rationnels)
cette tentative de créer systématiquement une méthode statique et une méthode d'instance commence à me faire comprendre les différences entre elles. Du coup pourquoi choisir telle méthode à telle autre ? En effet, elles se dupliquent, sont redondantes. Et où les classe-t-on ? La méthode d'instance, pas d'alternative. Mais en ce qui concerne la méthode statique ? Dans une classe Mathematiques ou dans une autre ? Elles se recoupent... Cela dépendra, j'imagine, du projet en construction. Car ces méthodes devraient en fait hériter aussi bien des règles mathématiques que celles des rationnels ceci étant dit la seconde est partie de la première...
Du coup, pour la simplification j'ai fait autrement :
2 implémentations possibles
1re ----- méthode statique dans classe Mathematiques
public static void simplify (Rational r) {
int a = getNumerator();
int b = getDenominator();
int divisor = Mathematiques.pgcd (a/b);
if (divisor != 0) {
r.setNumerator( a /= divisor );
r.setDenominator ( b /= divisor);
}
}
2e ----- méthode d'instance dans classe Rational - impossible de faire autrement là
public void simplify(){
int pgcd = Mathematiques.pgcd ( this.getNumerator(), this.getDenominator() ) ;
if ( pgcd != 0) {
this.setNumerator ( this.numerator /= pgcd );
this.setDenominator ( this.denominator /= pgcd );
}
}
---------- Application dans le main
int result = 3 * 17; // pour m'assurer un pgcd de 17 - donc result == 51
int result1 = 7 * 17; // pour m'assurer un pgcd de 17 - donc result1 == 119
Rational r5 = new Rational ( result, result1 );
1° ----> méthode statique :
Mathematiques.simplify(r5);
System.out.println( r5 );
output : [3/7]
2° ----> méthode d'instance :
r5.simplify();
System.out.println ( r5 );
output : [3/7]
--------- avantages et inconvénients ? Je n'ai pas le recul pour le savoir.
Tes vidéos sont sympas, mais je trouve qu'il y a trop de math. J'en fais une overdose!
L'informatique, c'est des maths.
// soustraction
a/b - c/d = (ad-cb) / bd
avec a = this.numerator
avec b = this.denominator
avec c = r2.numerator
et avec d = r2.denominator
on a,
public Rational sub(Rational r2){
return new Rational(
this.numerator*r2.denominator - r2.numerator*this.denominator,
this.denominator*r2.denominator
) ;
}
// multiplication
(a/b) * (c/d) = ac / bd
avec les mêmes conversions ci-dessus
public Rational mult(Rational r2){
return new Rational(
this.numerator*r2.numerator,
this.denominator*r2.denominator
) ;
}
// division
(a/b)/(c/d) = ad / bc
d'où,
public Rational div(Rational r2){
return new Rational(
this.numerator*r2.denominator,
this.denominator*r2.numerator
) ;
}
---
// Application et utilisation de ces méthodes dans le main :
avec r1 un objet de classe Rational faisant référence à un objet contenant la valeur [3/5] - selon le format donné par le toString
et r2 pointant la valeur [3/1]
au moins addition
System.out.println(r1.add(r2));
L'output sur la console (atelier éclipse) : [18/5].
Je me suis posé la question :
r1, r2, r3 sont des noms de variables / objets, variables de type évolué (référence)
Ils comportent donc en mémoire une adresse vers une autre place allouée en mémoire pour stocker les objets (qui portent en leur sein des attributs, des propriétés et des méthodes).
Donc r1 = fr.koor.poo@a11b779c - par exemple
r2 = fr.koor.poo@a11b779d - par exemple
r3 = fr.koor.poo@a11b77a0 - par exemple
et à cette adresse pointée par r1 on a r1.numerator = 3 et r1.denominator = 5
et à celle pointée par r2 on a r2.numerator = 3 et r1.denominator = 1
et le return r3 variable temporaire on a r3.numerator = 18 et r3.denominator = 5
Et pourtant la méthode println affiche non pas les adresses mais des valeurs sous le format décidé dans le toString() qu'on a employée sans qu'on ne l'invoque ce qui contredit le type de données dit de référence (data de type évolué par opposition au data de type primitif).
Il fallait que j'aille dans la séquence suivante abordant la question de l'héritage, à la fin, pour avoir la réponse.
Très clair ! Merci pour votre apport, un des meilleurs tutoriels (si ce n'est pas le meilleur en français existant) sur le langage java que vous m'avez fait apprécier. Un très grand merci !!!
Un autre aspect un peu difficile est le pourquoi on utilisait des méthodes statiques dans le tutoriel dédié et ici on n'utilise plus des statiques. La seule chose que j'ai retenue (et j'ai peut-être tort) c'est qu'une méthode statique ne s'appelle pas à partir d'un objet. J'ai encore du mal à l'énoncer clairement...
Bonjour merci :-)
Merci.
merci
Merci
merci