TP1

NFP 121 - TP1

L'environnement de programmation BlueJ

 

 

Tp1Enoncé

 

Question 1 :

Après avoir pris contact avec Bluej, j'ai créée plusieurs instances : Un carré, un triangle, un cercle; et changé leurs propriétés.

On obtient :

Question1 instance

Question 2 :

- Pour obtenir le soleil bleu, il suffit de modifier la méthode draw(): sun.changeColor("yellow") par "blue".
- On crée un soleil jaune en ajoutant la donnée : private Circle sunJ.
On reprends la méthode draw() en y ajoutant :

 

public void draw() {
        wall = new Square();
        wall.moveVertical(80);
        wall.changeSize(100);
        wall.makeVisible();

        window = new Square();
        window.changeColor("black");
        window.moveHorizontal(20);
        window.moveVertical(100);
        window.makeVisible();

        roof = new Triangle();
        roof.changeSize(50, 140);
        roof.moveHorizontal(60);
        roof.moveVertical(70);
        roof.makeVisible();

        sun = new Circle();
        sun.changeColor("blue");
        sun.moveHorizontal(180);
        sun.moveVertical(-10);
        sun.changeSize(60);
        sun.makeVisible();
        
        sunJ = new Circle();
        sunJ.changeColor("yellow");
        sunJ.moveHorizontal(170);
        sunJ.moveVertical(-15);
        sunJ.changeSize(60);
        sunJ.makeVisible();
                   
        
    }

Voici le résultat :

Question1 2 picturebj

 

Ajoutons la méthode sunset() pour voir le soleil bleu se coucher :

/**
     * Animates the blue sun and makes it sunset 
     */
    public void sunset(){
         if (sun != null) {// only if it's painted already...
            sun.slowMoveVertical(500);
        } 
    }

 

 

Question 3 :

Cette question m'a demandé pas mal de compréhension. Notamment l'utilisation des méthodes Math.min() ou replaceAll()
Pour compléter les méthodes nom(), prenom() , matricule(); aucune difficulté, il suffit de retourner la donnée correspondante:
ex : return this.nom;
J'ai ajouté un constructeur par défaut car je n'arrivais pas à faire fonctionner AuditeurCNAM, je ne mettais pas les ""... La méthode login() m'a donné quelques difficultés notamment le fait d'enlever les accents. En grenouillant le plus simple était de créer une méthode supplémentaire enlevant les accents d'un String passer en paramètre.

La méthode pasAccents() :

 

/**
     * Méthode pour enlever les accents
     * Soumettre un String avec accents
     * @return String sans accents
     */
    public String pasAccents(String x){
        //Manque surement des accents
        String accents = "àâäãéèêëîïìöôòõüûùÀÂÄÃÉÈÊËÎÏÌÖÔÒÕÜÛÙ";
			//tableau regroupant les accents
        String paccents = "aaaaeeeeiiioooouuuaaaaeeeeiiioooouuu";//tableau ayant les mêmes lettres 
			mais sans accents
        int l = accents.length();//longueur du tableau
        for(int i = 0; i<l ; i++){
            x = x.replace(accents.charAt(i), paccents.charAt(i));
        }
        return x;
    }

 

La méthode login() :

 

 public String login(){
        String n;
        String p;
        //6 premieres lettres du nom
        //utilisation de Math.min pour eviter StringIndexOutOfBoundsException
        n = this.nom.substring(0,Math.min(this.nom.length(),6));
        //premiere lettre du prénom        
        p = this.prenom.substring(0,1);
        //minuscule
        n = n.toLowerCase();
        p = p.toLowerCase();
        //faire une méthode pour les accents
        n = pasAccents(n);
        p = pasAccents(p);
        // aidez par 
		http://stackoverflow.com/questions/21489853/regex-to-replace-all-leading-characters-not-a-z
        n = n.replaceAll("[^a-z]","_");
        p = p.replaceAll("[^a-z]","_");
        return n+"_"+p;
    }

 

 

 

Conclusion, bibliographie et remarques :

stackoverflow
Ce site m'a permis de montrer un exemple d'utilisation de la méthode replaceAll().

Commentaires

Ajouter un commentaire

 
×