Logo: Marc Harnist

Index des pages de la catégorie "Java"

Stream
Le 14/05/2019
Auteur: Marc L. Harnist

Extrait:

 
  • Un stream ne stocke aucune donnée, il se contente de les transférer vers une suite instruction a " (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

    Texte entier

     
    • Un stream ne stocke aucune donnée, il se contente de les transférer vers une suite instruction a opérer ;

    • Un stream ne modifie pas les données qu'il reçoit de sa source (flux, collection, tableau, …). S'il doit modifier des données, il doit au construire un nouveau stream.

    • Un stream est a usage unique : une fois utilisé complètement, impossible de l'utiliser une seconde fois. Si nous devons réutiliser les données d'une source une seconde fois, nous devrons recréer un second stream.

    • Un stream peut être infini si on ne clos pas le traitement dessus.

    • Les traitements fait sur un stream peuvent être de deux natures :

      • Intermédiaire : ce genre d'opération conserve le stream ouvert ce qui permet d'effectuer d'autre opérations dessus. Nous pourrons voir ceci lors de l'utilisation des méthodes  map()  ou  filter()  .

      • Terminale : c'est l'opération finale du stream, c'est ce qui lance la « consommation » du stream. La méthode reduce() en est un exemple

    * Les streams permettent de faire des opérations sur des flux de données, un peu comme une requête SQL.
     * Vous pouvez afficher, trier, filtrer, calculer, ... Avec très peu de code.
     * Il existe des opération intermédiaires et des opérations terminales sur les streams.
     * Un stream ne modifie pas la données d'origine.
     * un stream peut être infini.
     
    Voir le projet "Stream" dans le "Eclipse-workspace"
     

La reflexivité
Le 13/05/2019
Auteur: Marc L. Harnist

La reflexivité est un moyen de tout connaître d'une classe dans un objet.

 

 

" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Classes anonymes
Le 13/05/2019
Auteur: Marc L. Harnist

Extrait:

Les classes anonymes permettent de faire exactement la même chose que ce que nous avons fait précédemment avec toute nos interfaces et classes abstraites mais sans avoir a cr&eac" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Les classes anonymes permettent de faire exactement la même chose que ce que nous avons fait précédemment avec toute nos interfaces et classes abstraites mais sans avoir a créer de façon explicite une classe. Leur action est limitée à un seul objet.

 

Source https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-en-java/5012411-creez-des-classes-anonymes-des-interfaces-fonctionnelles-des-lambdas-et-des-references-de-methode

Lambdas en Java : une fausse bonne idée?
Le 13/05/2019
Auteur: Marc L. Harnist

Extrait:

Avant Java 8, il n’existait que deux types de références, des valeurs primitives (char, String... et des références vers des objets (String s = new String("Hello"). Dans d'autres langages par contre, il existe des références vers ce" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Avant Java 8, il n’existait que deux types de références, des valeurs primitives (char, String... et des références vers des objets (String s = new String("Hello"). Dans d'autres langages par contre, il existe des références vers ce qu'on appelle des closures : des morceaux de codes anonymes. Jusqu'en Java 7, la seul façon d'avoir ce type de référence revenait a faire une classe anonyme comme vu précédemment. Depuis Java 8, les closures existent et s'appellent les lambdas. Le parallèles avec les classes/méthodes anonymes est volontaire car les deux se conçoivent de la même manière : elles peuvent prendre des arguments et retourne un résultat. Pour simplifier au maximum, une lambda est la redéfinition d'une méthode d'une interface fonctionnelle sans avoir à faire une classe anonyme, donc gain de ligne de code et de visibilité.

Exemple:

Dialoguer d = (s) -> System.out.println("Tu as dis : " + s);

d.parler("Bonjour");

Les lambdas doivent êtres concises, sinon le code ne sera pas plus lisible qu'avec une classe anonyme habituelle

Une fausse bonne idée?

Les lambdas doivent êtres concises, sinon le code ne sera pas plus lisible qu'avec une classe anonyme habituelle
elles doivent être simple à comprendre pour que le débogage reste trivial en cas de problème
Ce sont deux choses à avoir à l'esprit sous peine de complexifier votre travail au lieu de le simplifier.

Bref: c'est pas clair!

Les interfaces fonctionelles
Le 13/05/2019
Auteur: Marc L. Harnist

Extrait:

On a besoin du mot clé @FunctionalInterface

Dans le fichier Soin.java
package fr.marcharnist.comportement;
@FunctionalInterface" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

On a besoin du mot clé @FunctionalInterface

Dans le fichier Soin.java
package fr.marcharnist.comportement;
@FunctionalInterface
public interface Soin {
 
public void soigner();
 
}
 

Une interface fonctionnelle ne possède qu'une méthode et éventuellement une méthode par défaut

Eclipse va vous signaler que votre interface n'est pas fonctionelle si vous ajouter une deuxième méthode.
 
 
package fr.marcharnist.comportement;
@FunctionalInterface
 
/**
 * Soin est une interface fonctionnelle car elle n'a qu'une méthode à définir
 * Elle peut cependant posséder une methode par défaut
 * @author Asus
 *
 */
public interface Soin {
 
public void soigner();
 
public default String toto() {
return "Toot";
}
 
}
 

Arrays.asList(arg0, arg1, arg2) Array simple en Java
Le 10/05/2019
Auteur: Marc L. Harnist

Extrait:

List htmllines = Arrays.asList(
   "",
   "",
   "",
   " ",
&" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

List htmllines = Arrays.asList(
   "",
   "",
   "",
   " ",
   " ",
   "

\n",
   "

 

Bienvenue sur cette vraie page web propulsée par un code Java

\n",
   "

Graven Youtube cours
",
   "Bonjour les gens. C'est Marc
",
   "Comment va?
",
   "Cordialement
",
   "Marc Harnist
",
   "Développeur Java

",
   "",
   "");

 

  //Si le fichier n'existe pas on tente de le créer
  if(!file.exists()) {
   try {
    file.createNewFile();//création
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();//il y une erreur on l'attrape
   }
  }else {
   try {
    FileWriter writer = new FileWriter(file);//Si le fichier existe on l'ouvre
    BufferedWriter bw = new BufferedWriter(writer);//Création d'une mémoire temporaire

    /**
     *
* On parcourt la liste de ligne du contenu créé plus haut
*
*
*
*/
for(String line: htmllines) {
bw.write(line );//on écrit une ligne de la liste dans le fichier
bw.newLine();//A la ligne

Arrays.asList(arg0, arg1, arg2) Array simple en Java
Le 10/05/2019
Auteur: Marc L. Harnist

Extrait:

List htmllines = Arrays.asList(valeur, valeur2, valeur3);

  //Si le fichier n'existe pas on" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

List htmllines = Arrays.asList(valeur, valeur2, valeur3);

  //Si le fichier n'existe pas on tente de le créer
  if(!file.exists()) {
   try {
    file.createNewFile();//création
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();//il y une erreur on l'attrape
   }
  }else {
   try {
    FileWriter writer = new FileWriter(file);//Si le fichier existe on l'ouvre
    BufferedWriter bw = new BufferedWriter(writer);//Création d'une mémoire temporaire

    /**
     *
* On parcourt la liste de ligne du contenu créé plus haut
*
*
*
*/
for(String line: htmllines) {
bw.write(line );//on écrit une ligne de la liste dans le fichier
bw.newLine();//A la ligne

Raccourcis clavier Eclipse
Le 10/05/2019
Auteur: Marc L. Harnist

Extrait:

Notez bien les imports (ex: java.util) pour pouvoir utiliser ces objets. Mais comme vous le savez déjà, vous pouvez taper votre code et faire ensuite CTRL + SHIFT + O pour que les imports soient a" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Notez bien les imports (ex: java.util) pour pouvoir utiliser ces objets. Mais comme vous le savez déjà, vous pouvez taper votre code et faire ensuite CTRL + SHIFT + O pour que les imports soient automatiques.

Java programme lancé par la console system32 cmd.exe
Le 09/05/2019
Auteur: Marc L. Harnist

Extrait:

Il faut ouvrir la console et se placer dans le repertoire "bin" du projet

puis taper projet1.Sdz si la classe Sdz se trouve dans le projet1

 

Ta classe est dans le package projet1. Son nom est donc projet1.Sdz. Les programmes sont dans le dossier" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Il faut ouvrir la console et se placer dans le repertoire "bin" du projet

puis taper projet1.Sdz si la classe Sdz se trouve dans le projet1

 

Ta classe est dans le package projet1. Son nom est donc projet1.Sdz. Les programmes sont dans le dossier bin. Donc à partir du dossier bin (pas bin\projet1), pour exécuter ton programme, Tu fais: java projet1.Sdz

 

 

Au préalable, il faut que windows connaisse le chemin de java.exe: tapez modifier les variables d'environnement et ajouter dans Path le chemin de java.exe depuis root

 

 

 

Default methods in interface: possible since Java 8
Le 09/05/2019
Auteur: Marc L. Harnist

Extrait:

Il est possible d'installer des méthodes par défault dans les interface depuis Java 8.

Source: https://openclassrooms.c" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Il est possible d'installer des méthodes par défault dans les interface depuis Java 8.

Source: https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-en-java/5012356-decouvrez-java-8-et-la-revolution-des-interfaces

 

? en java: wildcard
Le 08/05/2019
Auteur: Marc L. Harnist

Extrait:

  • Permet d'accepter tout type d'objet en généricité
  • Le wildcard (?) permet d'indiquer que n'importe quel type peut être traité et donc accepté !
  • Dès que le wildcard (?) est utilisé, cela" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

    Texte entier

    • Permet d'accepter tout type d'objet en généricité
    • Le wildcard (?) permet d'indiquer que n'importe quel type peut être traité et donc accepté !
    • Dès que le wildcard (?) est utilisé, cela revient à rendre ladite collection en lecture seule !
    • Vous pouvez élargir le champ d'acceptation d'une collection générique grâce au mot-clé extends.
    • L'instruction ? extends MaClasse autorise toutes les collections de classes ayant pour supertype MaClasse.
    • L'instruction ? super MaClasse autorise toutes les collections de classes ayant pour type MaClasse et tous ses supertypes !
    • Pour ce genre de cas, les méthodes génériques sont particulièrement adaptées et permettent d'utiliser le polymorphisme dans toute sa splendeur !

     

    Exemple:

    static void affiche(List<? extends Voiture> list) {
     
    for(Voiture v : list)
    System.out.println(v.toString());
    }
    ici List<? accept tout type d'objet qui hérite de voiture, dont les voitures sans permis par exemple.

Afficher les objets contenus dans un tableau avec "for"
Le 06/05/2019
Auteur: Marc L. Harnist

Extrait:

 
Personnage[] allClass = {new Guerrier(), new Medecin(), new Civil(), new Chirurgien(), new Sniper(), new Etranger() 
};
 
for(Personnage objet : allClass) {
System.out.println("\nInstance de la c" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

 
Personnage[] allClass = {new Guerrier(), new Medecin(), new Civil(), new Chirurgien(), new Sniper(), new Etranger() 
};
 
for(Personnage objet : allClass) {
System.out.println("\nInstance de la classe "+ objet.getClass().getName().replaceAll("fr.marcharnist.jeuDeCombat.", ""));
System.out.println("********************************************");
objet.combattre();
objet.seDeplacer();
objet.soigner();
objet.operer();
 
}
 

Convention de nommage des packages de Java
Le 03/05/2019
Auteur: Marc L. Harnist

Extrait:

Il existe aussi une convention de nommage pour les packages :
  • ceux-ci doivent être écrits entièrement en minuscules ;
  • les caractères autorisés sont alphanumériques (de a à z, de 0 à 9) et peuvent cont" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

    Texte entier

    Il existe aussi une convention de nommage pour les packages :
    • ceux-ci doivent être écrits entièrement en minuscules ;
    • les caractères autorisés sont alphanumériques (de a à z, de 0 à 9) et peuvent contenir des points (.) ;
    • tout package doit commencer par com, edu, gov, mil, net, org ou les deux lettres identifiant un pays (ISO Standard 3166, 1981) ; « fr » correspond à la France, « en » correspond à l'Angleterre (pour England)etc.
    • aucun mot clé Java ne doit être présent dans le nom, sauf si vous le faites suivre d'un underscore (« _ »), comme ceci : com.sdz.package_.
    • Les classes déclarées public sont visibles depuis l'extérieur du package qui les contient.

    • Les classes n'ayant pas été déclarées public ne sont pas visibles depuis l'extérieur du package qui les contient.

    • Si une classe déclarée public dans son package a une variable d'un type ayant une portée default, cette dernière ne pourra pas être modifiée depuis l'extérieur de son package

Raccourcis Java desactiver ctrl + alt + down = rotation de l'écran
Le 03/05/2019
Auteur: Marc L. Harnist

Extrait:

Pour désactiver la rotation de l'écran

  1. " (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

    Texte entier

    Pour désactiver la rotation de l'écran

    1. Clique droit sur le bureau
    2. Propriétés graphiques
    3. Options et assistance
    4. puis là on peut choisir de modifier ou désactiver les raccourcis

Final en Java
Le 02/05/2019
Auteur: Marc L. Harnist

Extrait:

final bloque la modification d'une variable, d'une méthode ou d'une classe: vous ne pouvez pas hériter d'une classe finale.

Exemple
public int hashCode() {
  //On définit un multiplication impair, de préfére" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

final bloque la modification d'une variable, d'une méthode ou d'une classe: vous ne pouvez pas hériter d'une classe finale.

Exemple
public int hashCode() {
  //On définit un multiplication impair, de préférence un nombre premier
  //Ceci afin de garantir l'unicité du résultat final
  final int prime = 31;
//prime ne peut pas être modifié

}

Classe Objects de Java pour comparer les objets entre eux
Le 02/05/2019
Auteur: Marc L. Harnist

Extrait:

" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Depuis Java 7 : la classe Objects

Avec Java 7, il existe une classe qui permet de mieux gérer la redéfinitions de ces méthodes :java.util.Objects. Attention, il ne s'agit pas de la classejava.lang.Objectdont tous les objets héritent ! Ici il s'agit d'Objectsavec un « s » ! Ce nouvel objet ajoute deux fonctionnalités qui permettent de simplifier la redéfinition des méthodes vues précédemment.

Comparer deux objects
Le 02/05/2019
Auteur: Marc L. Harnist

Extrait:

Il y a deux autres méthodes qui sont très souvent redéfinies :
 
  • public boolean equals(Object o), qui permet de vérifier si un objet est égal à un autre 
  • public int hashCode(), qui attribu" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

    Texte entier

    Il y a deux autres méthodes qui sont très souvent redéfinies :
     
    • public boolean equals(Object o), qui permet de vérifier si un objet est égal à un autre 
    • public int hashCode(), qui attribue un code de hashage à un objet. En gros, elle donne un identifiant à un objet. Notez que cet identifiant sert plus à catégoriser votre objet qu'à l'identifier formellement.

Héritages de classe
Le 02/05/2019
Auteur: Marc L. Harnist

Extrait:

  • Une classe hérite d'une autre classe par le biais du mot clé extends.
  • Une classe ne peut hériter que d'une seule classe. Si une classe de peut pas hériter de plusieurs autres classes en même temps en séparant" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

    Texte entier

    • Une classe hérite d'une autre classe par le biais du mot clé extends.
    • Une classe ne peut hériter que d'une seule classe. Si une classe de peut pas hériter de plusieurs autres classes en même temps en séparant leur nom par une virgule dans le prototype, une classe peut implémenter plusieurs interfaces
    • Si aucun constructeur n'est défini dans une classe fille, la JVM en créera un et appellera automatiquement le constructeur de la classe mère.
    • La classe fille hérite de toutes les propriétés et méthodespublicetprotectedde la classe mère.
    • Les méthodes et les propriétésprivated'une classe mère ne sont pas accessibles dans la classe fille.
    • On peut redéfinir une méthode héritée, c'est-à-dire qu'on peut changer tout son code.
    • On peut utiliser le comportement d'une classe mère par le biais du mot clésuper.
    • Grâce à l'héritage et au polymorphisme, nous pouvons utiliser la covariance des variables.
    • Si une méthode d'une classe mère n'est pas redéfinie ou « polymorphée », à l'appel de cette méthode par le biais d'un objet enfant, c'est la méthode de la classe mère qui sera utilisée.
    • Vous ne pouvez pas hériter d'une classe déclaréefinal.
    • Une méthode déclaréefinaln'est pas redéfinissable.

Accéder à la classe parent avec "super()" en java, équivalent de parent() en Php
Le 16/04/2019
Auteur: Marc L. Harnist

La méthode native super() de Java est équivalente à la méthode native parent() de php. Tout simplement.

 

" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Time en Java
Le 20/07/2018
Auteur: Marc L. Harnist

Extrait:

Source: https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-en-java/5013706-la-nouvelle-api-de-gestion-des-dates-de-java-8 La classe java" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Source: https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-en-java/5013706-la-nouvelle-api-de-gestion-des-dates-de-java-8 La classe java.time.Instant représente un point relatif au premier Janvier 1970. Elle dispose de plusieurs énumération comme Instant.EPOCH qui représente le point de départ de ce référentiel de temps, à savoir 1970-01-01T00:00:00Z. Mais aussi des méthodes comme Instant.now() qui nous donne la date exacte et d'autres méthodes comme isAfter() , isBefore, parse() ,etc...

Stream avec Java: manipulation des données
Le 19/07/2018
Auteur: Marc L. Harnist

Extrait:

Depuis Java 8 Dans package java.util.stream; Ressemble aux requêtes sql; Ne peux être utilisé qu'une fois après sa création; Peux rester ouvert indéfiniment; Intermédiaire: opérations supplémentaires simultanées avec map()" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Depuis Java 8 Dans package java.util.stream; Ressemble aux requêtes sql; Ne peux être utilisé qu'une fois après sa création; Peux rester ouvert indéfiniment; Intermédiaire: opérations supplémentaires simultanées avec map() et filter(); Terminale: opération finale. Exemple: méthode reduce(). Exemple de code avec une "collection" que l'on peut parcourir avec "stream": public enum Couleur { MARRON("marron"), BLEU("bleu"), VERT("vert"), VERRON("verron"), INCONNU("non déterminé"), ROUGE("rouge mais j'avais piscine..."); private String name = ""; Couleur(String n){name = n;} public String toString() {return name;} } public class Personne { public Double taille = 0.0d, poids = 0.0d; public String nom = "", prenom = ""; public Couleur yeux = Couleur.INCONNU; public Personne() { } public Personne(double taille, double poids, String nom, String prenom, Couleur yeux) { super(); this.taille = taille; this.poids = poids; this.nom = nom; this.prenom = prenom; this.yeux = yeux; } public String toString() { String s = "Je m'appelle " + nom + " " + prenom; s += ", je pèse " + poids + " Kg"; s += ", et je mesure " + taille + " cm."; return s; } public Double getTaille() {return taille;} public void setTaille(Double taille) {this.taille = taille;} public Double getPoids() {return poids;} public void setPoids(Double poids) {this.poids = poids;} public String getNom() {return nom;} public void setNom(String nom) {this.nom = nom;} public String getPrenom() {return prenom;} public void setPrenom(String prenom) {this.prenom = prenom;} public Couleur getYeux() {return yeux;} public void setYeux(Couleur yeux) {this.yeux = yeux;} } //Et une classe de test : import java.util.Arrays; import java.util.List; public class TestStream { public static void main(String[] args) { List listP = Arrays.asList( new Personne(1.80, 70, "A", "Nicolas", Couleur.BLEU), new Personne(1.56, 50, "B", "Nicole", Couleur.VERRON), new Personne(1.75, 65, "C", "Germain", Couleur.VERT), new Personne(1.68, 50, "D", "Michel", Couleur.ROUGE), new Personne(1.96, 65, "E", "Cyrille", Couleur.BLEU), new Personne(2.10, 120, "F", "Denis", Couleur.ROUGE), new Personne(1.90, 90, "G", "Olivier", Couleur.VERRON) ); } }

Methode Java de modification de la première lettre d'une chaîne de caractères en majuscule (ucfirst en PHP)
Le 16/07/2018
Auteur: Marc L. Harnist

Extrait:

import java.util.Scanner; public class Test { private static Scanner sc; public static void main(String[] args) { String prenom, prenom_majuscule; char reponse = 'O'; sc = new Scanner(System.in); while (reponse == 'O' || reponse == 'o') { System.out.println("\n\tDo" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

import java.util.Scanner; public class Test { private static Scanner sc; public static void main(String[] args) { String prenom, prenom_majuscule; char reponse = 'O'; sc = new Scanner(System.in); while (reponse == 'O' || reponse == 'o') { System.out.println("\n\tDonnez un prénom: "); prenom = sc.nextLine(); prenom_majuscule = ucfirst(prenom); System.out.println("\n\tBonjour " + prenom_majuscule + ", comment vas-tu?"); reponse = ' '; while(reponse != 'O' && reponse != 'o' && reponse != 'N' && reponse != 'n') { System.out.println("\n\tVoulez-vous réessayer ? (O/N)"); reponse = sc.nextLine().charAt(0); } } System.out.println("\n\tAu revoir..."); } private static String ucfirst(String chaine) { // TODO Auto-generated method stub return chaine.substring(0, 1).toUpperCase() + chaine.substring(1); } }

Lire et écriture dans des fichiers
Le 10/07/2018
Auteur: Marc L. Harnist

Extrait:

Avec Java comme avec PHP, on peut lire et écrire dans des fichiers. Comme avec l'ancienne version de PHP, il faut refermer le fichier à la fin du code. On dit qu'on travaille sur des "flux". On utilise beaucoup "try et catch" pour lever les erreurs." (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Avec Java comme avec PHP, on peut lire et écrire dans des fichiers. Comme avec l'ancienne version de PHP, il faut refermer le fichier à la fin du code. On dit qu'on travaille sur des "flux". On utilise beaucoup "try et catch" pour lever les erreurs.

Généricité en Java
Le 09/07/2018
Auteur: Marc L. Harnist

Extrait:

  • La généricité est un concept très utile pour développer des objets travaillant avec plusie" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

    Texte entier

    • La généricité est un concept très utile pour développer des objets travaillant avec plusieurs types de données. Exemple: des booleens avec des strings. Mais aussi des objets d'une classe mère (Voiture) avec les classes filles (VoituresSansPermis) et de les afficher ensemble dans une liste.

    • Vous passerez donc moins de temps à développer des classes traitant de façon identique des données différentes.

    • La généricité permet de réutiliser sans risque le polymorphisme avec les collections.

    • Cela confère plus de robustesse à votre code.

    • Vous pouvez coupler les collections avec la généricité !

    • Le wildcard (?) permet d'indiquer que n'importe quel type peut être traité et donc accepté !

    • Dès que le wildcard (?) est utilisé, cela revient à rendre ladite collection en lecture seule !

    • Vous pouvez élargir le champ d'acceptation d'une collection générique grâce au mot-clé extends.

    • L'instruction ? extends MaClasse autorise toutes les collections de classes ayant pour supertype MaClasse.

    • L'instruction ? super MaClasse autorise toutes les collections de classes ayant pour type MaClasse et tous ses supertypes !

    • Pour ce genre de cas, les méthodes génériques sont particulièrement adaptées et permettent d'utiliser le polymorphisme dans toute sa splendeur !

     

    Permet de définir le type d'un objet: nombre ou chaîne de manière dynamique. On ne voit pas trop l'intérêt. Mais bon, il fallait le savoir. On utilise les caractères: < et > pour le code: ci-dessous:

      System.out.println();
      System.out.println("Liste de chaîne");
      List S = new ArrayList();
      S.add("une chaîne");
      S.add("chaîne 2");
      S.add("chaîne 3");
      S.add("chaîne 4");
      S.add("chaîne 5");

      for(String s: S) {
       System.out.println(s);
      }

      System.out.println();
      System.out.println("Liste de floats");
      List F = new ArrayList<>();
      F.add(12.25f);
      F.add(112.25f);
      F.add(152.25f);
      F.add(125.25f);

      for(Float f: F)
       System.out.println(f);

    On peut utiliser plusieurs types. Ici: T et F

    /* Généricité

     * Explication
     * Au lieu de définier un attribut par String, int, object ou autre,
     * on le définit pas la création d'un mot clef: T, F, ou n'importe
     * quoi d'autre. C'est dans la class main qu'on donnera le type d'object
     * qui sera créé.
     */
    public class Genericite {


         private F f;
      private T t;

      Genericite(){
       this.setF(null);
       this.setT(null);

      }

      Genericite(F f, T t){
       this.setF(f);
       this.setT(t);

      }

Collection en Java
Le 09/07/2018
Auteur: Marc L. Harnist

Extrait:

Java (et donc Eclipse) contient des classes qui permettent de lister et lire des données plus simplement qu'en tableaux (array) Source Une collection permet de stocker un nombre variable d'objets. Il y a principalement trois types de collection : les List, les Set et les Map. Ch" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Java (et donc Eclipse) contient des classes qui permettent de lister et lire des données plus simplement qu'en tableaux (array) Source Une collection permet de stocker un nombre variable d'objets. Il y a principalement trois types de collection : les List, les Set et les Map. Chaque type a ses avantages et ses inconvénients. Les Collection stockent des objets alors que les Map stockent un couple clé - valeur. Pour insérez fréquemment des données en milieu de liste, utilisez une LinkedList. Pour rechercher ou accéder à une valeur via une clé de recherche, optez pour une collection de type Map. Pour une grande quantité de données à traiter, tournez-vous vers une liste de type Set.

Enumérations: utiliser les énumérations en Java
Le 09/07/2018
Auteur: Marc L. Harnist

Enumération est une liste de constantes. Exemple: une liste de marque: Peugeot, Renaud, Citroen

" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Utiliser les classes abstraites et les interfaces en Java
Le 09/07/2018
Auteur: Marc L. Harnist

Extrait:

Une classe abstraite et les interfaces ne sont pas instanciées. Une interface est une classe abstraite qui depuis Java 8 peut contenir des methodes non abstraite

 

public abstract class Animal {

 

}

" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Une classe abstraite et les interfaces ne sont pas instanciées. Une interface est une classe abstraite qui depuis Java 8 peut contenir des methodes non abstraite

 

public abstract class Animal {

 

}

Source: openclassroom

  • Une classe est définie comme abstraite avec le mot cléabstract.

  • Les classes abstraites sont à utiliser lorsqu'une classe mère ne doit pas être instanciée.

  • Une classe abstraite ne peut donc pas être instanciée.

  • Une classe abstraite n'est pas obligée de contenir de méthode abstraite.

  • Si une classe contient une méthode abstraite, cette classe doit alors être déclarée abstraite.

  • Une méthode abstraite n'a pas de corps.

  • Une interface est une classe 100 % abstraite.

  • Aucune méthode d'une interface n'a de corps.

  • Une interface sert à définir un supertype et à utiliser le polymorphisme.

  • Une interface s'implémente dans une classe en utilisant le mot cléimplements.

  • Vous pouvez implémenter autant d'interfaces que vous voulez dans vos classes.

  • Vous devez redéfinir toutes les méthodes de l'interface (ou des interfaces) dans votre classe.

  • Le pattern strategy vous permet de rendre une hiérarchie de classes plus souple.

  • Préférez encapsuler des comportements plutôt que de les mettre d'office dans l'objet concerné.

Les packages sous java
Le 06/07/2018
Auteur: Marc L. Harnist

Extrait:

Un package est un dossier contenant tous les programmes (classes) utiles pour une application. Il correspond à un repertoire qui contient les classes PHP qu'on appelle avec l'uploader de classes. Avec java, on utilise le simple mot: import suivi du nom du package! Exemple: impor" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Un package est un dossier contenant tous les programmes (classes) utiles pour une application. Il correspond à un repertoire qui contient les classes PHP qu'on appelle avec l'uploader de classes. Avec java, on utilise le simple mot: import suivi du nom du package! Exemple: import com.animaux.comportement.*; // l'asterisque: tous les fichiers du package com.animaux.comportement.* sont importés public class Civil extends Personnage{ public Civil() {} public Civil(EspritCombatif esprit, Soin soin, Deplacement dep) { super(esprit, soin, dep); } } Eclipse, logiciel de codage en Java, permet la création de packages: dossiers contenants les classes dont vous aurez besoin plusieurs fois. J'ai donc créé, pour test, un package com.classes.fonctions qui contiendra les classes "outils" ou "tools" comme celle qui pourrait afficher toutes les variables globales d'une page. Convention de nommage: - ils doivent être écrits entièrement en minuscules ;- - les caractères sont alphanumériques (de a à z, de 0 à 9) et peuvent contenir des points (.) ; - doivent commencer par com, edu, gov, mil, net, org ou les deux lettres identifiant un pays (ISO Standard 3166, 1981) ; « fr » correspond à la France, « en » correspond à l'Angleterre (pour England)etc. - aucun mot clé Java dans le nom, sauf avec un underscore (« _ »), comme ceci : com.marc.package_.

Encapsulation sous Java
Le 06/07/2018
Auteur: Marc L. Harnist

Extrait:

En Java, comme dans beaucoup de langages orientés objet, les classes, les attributs et les méthodes bénéficient de niveaux d'accessibilité, qui indiquent dans quelles circonstances on peut accéder à ces éléments. Ces niveaux so" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

En Java, comme dans beaucoup de langages orientés objet, les classes, les attributs et les méthodes bénéficient de niveaux d'accessibilité, qui indiquent dans quelles circonstances on peut accéder à ces éléments. Ces niveaux sont au nombre de 4, correspondant à 3 mots-clés utilisés comme modificateurs : private, protected et public. La quatrième possibilité est de ne pas spécifier de modificateur (comportement par défaut). encapsulation.jpgencapsulation.jpg

Enum mot clef pour énumération en Java
Le 06/07/2018
Auteur: Marc L. Harnist

Extrait:

Source sur Openclassroom

L'énumération est un type de classe qui liste des objets.

* Une énumération est une classe contenant une li" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Source sur Openclassroom

L'énumération est un type de classe qui liste des objets.

* Une énumération est une classe contenant une liste de sous-objets.
* Une énumération se construit grâce au mot clé enum.
* Les enum héritent de la classe java.lang.Enum.
* Chaque élément d'une énumération est un objet à part entière.
* Vous pouvez compléter les comportements des objets d'une énumération en ajoutant des méthodes.

Exemple de classe enum:

package fr.marcharnist.garage;
public enum Langage {
PHP("Langage PHP", "Notepad++"), //That's an object !
C("Langage C", "Code block"), //That's another object
CPlus("Langage C+", "Visual Studio"), //...
Java("Langage Java", "Eclipse");

private String name;//Always private to protect the data
private String editor;
//Constructor (not obligatory: you can create an "enum" file without
//No "déclaration de portée": private is by default in an enum file
Langage(String name, String editor){
this.name = name;
this.setEditor(editor);
}
/*
* Try without this method toString!
*/
public String toString() {
return name;
}
public void getEditor() {
System.out.println("Editeur de " + this.name() + ": " + this.editor);
}
public void setEditor(String editor) {
this.editor = editor;
}
}

La classe Main qui appelle l'enum

package fr.marcharnist.garage;
public class Garage {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(Langage lang : Langage.values()){
if(Langage.Java.equals(lang))
System.out.println("J'aime le : " + lang);
else
System.out.println(lang);
}

System.out.println();
System.out.println(Langage.C.equals(Langage.Java));

System.out.println();
Langage l1 = Langage.Java;
Langage l2 = Langage.C;
l1.getEditor();
l2.getEditor();

}
}

Collections d'objets: plus fort que les arrays
Le 06/07/2018
Auteur: Marc L. Harnist

Extrait:

Java (et donc Eclipse) contient des classes qui permettent de lister et lire des données plus simplement qu'en tableaux (array) Source Une collection permet de stocker " (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Java (et donc Eclipse) contient des classes qui permettent de lister et lire des données plus simplement qu'en tableaux (array) Source Une collection permet de stocker un nombre variable d'objets. Il y a principalement trois types de collection : les List, les Set et les Map. Chaque type a ses avantages et ses inconvénients.

Les Collections  stockent des objets alors que les Map stockent un couple clé - valeur.  

  • LinkedList pour insérez fréquemment des données en milieu de liste.
  • Map  pour rechercher ou accéder à une valeur via une clé de recherche, .
  • Set pour une grande quantité de données à traiter,
  1. Une collection permet de stocker un nombre variable d'objets.
  2. Il y a principalement trois types de collection : les List, les Set et les Map.
  3. Chaque type a ses avantages et ses inconvénients.
  4. Les Collection stockent des objets alors que les Map stockent un couple clé - valeur.
  5. Si vous insérez fréquemment des données en milieu de liste, utilisez une LinkedList.
  6. Si vous voulez rechercher ou accéder à une valeur via une clé de recherche, optez pour une collection de type Map.
 
Si vous avez une grande quantité de données à traiter, tournez-vous vers une liste de type Set.Il existe tout un panel de méthodes fournies avec cet objet : add() permet d'ajouter un élément ; get(int index) retourne l'élément à l'indice demandé ; remove(int index) efface l'entrée à l'indice demandé ; isEmpty() renvoie « vrai » si l'objet est vide ; removeAll() efface tout le contenu de l'objet ; contains(Object element) retourne « vrai » si l'élément passé en paramètre est dans l'ArrayList.

 

Les objets List

Les objets appartenant à la catégorie List sont, pour simplifier, des tableaux extensibles à volonté. 
On y trouve les objets Vector, LinkedList et ArrayList. 
De plus, les List contiennent des objets. 
 

Iterator

Afficher une liste: 

    List l = new LinkedList();
    l.add(1);
    l.add("Hello Marco!");
    l.add(12.5f);

 

   ListIterator li = l.listIterator();

    while(li.hasNext())
    System.out.println(li.next());Exemple

ArrayList

import java.util.ArrayList;
 
public class Test {
 
  public static void main(String[] args) {
         
    ArrayList al = new ArrayList();
    al.add(12);
    al.add("Une chaîne de caractères !");
    al.add(12.20f);
    al.add('d');
                
    for(int i = 0; i < al.size(); i++)
    {
      System.out.println("donnée à l'indice " + i + " = " + al.get(i));
    }               
  }
}
 

Résumé

si vous effectuez beaucoup de lectures sans vous soucier de l'ordre des éléments, optez pour une ArrayList ; en revanche, si vous insérez beaucoup de données au milieu de la liste, optez pour une Linkedlist.

L'objet HashMap

Cet objet ne diffère que très peu de la Hashtable:
 
il accepte la valeur null ;
 
il n'est pas Thread Safe.
 
En fait, les deux objets de type Map sont, à peu de choses près, équivalents.
 

Les objets Set

Un Set est une collection qui n'accepte pas les doublons. Par exemple, elle n'accepte qu'une seule fois null, car deux valeurs null sont considérées comme un doublon. On trouve parmi les Set les objets HashSet, TreeSet, LinkedHashSet… Certains Set sont plus restrictifs que d'autres : il en existe qui n'acceptent pas null, certains types d'objets, etc.

Créer un constructeur par défaut
Le 05/07/2018
Auteur: Marc L. Harnist

Extrait:

Le constructeur par défaut s'écrit simplement du nom de la classe: Exemple: public class Ville{

//Stocke le nom de notre ville String nomVille; //Stocke le nom du pays de notre ville String nomPays; //Stocke le nombre d'ha" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Le constructeur par défaut s'écrit simplement du nom de la classe: Exemple: public class Ville{

//Stocke le nom de notre ville String nomVille; //Stocke le nom du pays de notre ville String nomPays; //Stocke le nombre d'habitants de notre ville int nbreHabitants; //Constructeur par défaut public Ville(){
System.out.println("Création d'une ville !"); nomVille = "Inconnu"; nomPays = "Inconnu"; nbreHabitants = 0;
}

}

Instances de classes, encapsulation...
Le 05/07/2018
Auteur: Marc L. Harnist

Extrait:

Source: OpenClassRoom Les classes permettent de définir des objets qui ont des attributs (variables d'instance) et des méthodes (méthodes d’instance + accesseurs). Les objets permettent d'encapsuler (private) du code et des données. Les constructeurs d" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

Source: OpenClassRoom Les classes permettent de définir des objets qui ont des attributs (variables d'instance) et des méthodes (méthodes d’instance + accesseurs). Les objets permettent d'encapsuler (private) du code et des données. Les constructeurs d'une classe doivent porter le même nom que la classe et n'ont pas de type de retour. L'ordre des paramètres passés dans les constructeurs doivent être respectés. Il est recommandé de déclarer ses variables d'instance en mode privé ("private"), pour les protéger d'une mauvaise utilisation par le programmeur ou plutôt l'utilisateur. On crée des accesseurs et mutateurs (getters et setters, nom de ces deux méthodes en anglais) pour des modifications plus sûres des variables d'instance. On accède aux variables d'un classe depuis l'intérieur grâce au mot clef "this". Une variable de classe doit être déclarée "static". Les méthodes utilisant uniquement des variables de classe doivent elles aussi être déclarées "static". L'instanciation d'un objet se fait grâce au mot clé "new".

Console CMD: comment renseigner le chemin dans les variables d'environnement de Window
Le 27/06/2018
Auteur: Marc L. Harnist

Extrait:

variable-environnement-et-path.jpg Chemin d'accès: Propriétés système (tapez variables d'environnement dans la recherche window)/Variables d'environne" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

Texte entier

variable-environnement-et-path.jpg Chemin d'accès: Propriétés système (tapez variables d'environnement dans la recherche window)/Variables d'environnement/Path (en bas de la fenêtre) Trouver le chemin %SystemRoot%\system32 et ajouter le chemin de C:\Program Files\Java\jre1.8.0_171\bin à la suite, après un point virgule. (Si le chemin de Java\jre\bin est différent, modifier)

Java fonctionne sous Linux, Windows et Mac!
Le 14/06/2018
Auteur: Marc L. Harnist

C'est tout l'avantage de Java: votre code fonctionnera sur beaucoup d'OS et de supports. Source: Openclassroom

" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)

La puissance du logiciel
Le 11/06/2018
Auteur: Marc L. Harnist

Eclipse corrige automatiquement les erreurs. Au minimum, elle propose un choix de corrections. Eclipse propose de créer elle-même les mutateurs (setters en an.) et les accesseurs (getters).

" (Pour ouvrir l'article dans une nouvelle fenêtre, cliquez sur le titre)


Catégories: News : Lexicon : Tools : Pages : Idees : PHP : Js : Versioning : Symfony : Idees-realisees : Java : MySql : Bootstrap : C : Css : Test : Reactjs : Eni