"Les cours de neeko.fr"

Retour en haut

Java / Android : Correction Examen blanc

Java / Android : Correction de l'Examen blanc

Condition de l'examen blanc : 2h30, sur papier. Pas de documents ni d'accès à un ordinateur.

Sur 20 points.

Tous les exercices sont indépendants, sauf précision contraire.

Java

Valide / pas valide (2 points)

Pour chaque ligne ci dessous, dites si elle est valide ou non. Si elle n'est pas valide dites pourquoi, et si elle est valide, préciser les conditions de cette validité, si besoin.

Chaque ligne est indépendante.

Exemple : int a = b; est valide, à condition que "b" soit aussi de type "int".

Appels de méthodes 1 (1 point)

Soit une classe "Personnage" avec une propriété publique de type "int" nommée "life", et une classe "Jeu" déclarée ainsi :

class Jeu { public void attaque1(Personnage p) { Personnage perso = new Personnage(); perso.life = perso.life - 10; } public void attaque2(Personnage perso) { perso.life = perso.life - 10; } public void attaque3(Personnage p) { p.life = p.life - 10; } }

Quel sera le résultat de l'execution de ce code ?

Personnage perso = new Personnage(); perso.life = 100; Jeu jeu = new Jeu(); jeu.attaque1(perso); jeu.attaque2(perso); jeu.attaque3(perso); System.out.println("Il reste : " + perso.life + " points");

Il reste 80 points

Appels de méthodes 2 (1 point)

Soit les méthodes :

public int attaque(int valeur){ return valeur - 10; } public int soin(int valeur){ return valeur + 5; }

Quel sera le résultat de l'execution de ce code ?

int res = soin( attaque( soin( attaque( attaque(100) ) ) ) ); System.out.println("Il reste : " + res + " points");

Il reste 80 points

Héritage (2 points)

Représentez les affirmations suivante avec des déclarations de classes Java valides (sans aucune propriétés ni méthodes).

class Mammifere {} class Primate extends Mammifere {} class Humain extends Primate {} class OranOutang extends Primate {} class Felin extends Mammifere {} class Chat extends Felin {}

Android

Hello World ! (1,5 point)

Pour un simple projet Android qui va afficher le message "Hello World", quels sont les 3 composants essentiels de cette application, et quel est leur rôle ?

Strings (1,5 point)

Complétez les phrases suivantes :

Le fichier Strings.xml se trouve dans le dossier  /values/ et sert à   les chaines de caractères, essentiellement pour simplifier la   de l'application.

Grace à son  , on peut faire référence à une chaine de caractère avec   depuis une activity Java, ou avec @  depuis un layout XML.

Le fichier Strings.xml se trouve dans le dossier res/values/ et sert à centraliser les chaines de caractères, essentiellement pour simplifier la traduction de l'application.

Grace à son identifiant, on peut faire référence à une chaine de caractère avec R.string depuis une activity Java, ou avec @string depuis un layout XML.

Utilisation du framework (3 points)

Soit ce layout pour mon activity :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>

Quelles sont les étapes importantes à développer pour que mon Activity puisse être notifiée de la pression de ce bouton ?

Projet

Poker version light : la bataille (8 points)

Le projet consiste à simuler un jeu de carte très simple : le jeu la de bataille.

Le déroulement d'une partie (passionnante) :

A partir du déroulement ci dessus et du code existant, complétez le projet en ajoutant les classes et les méthodes manquantes, en respectant le code existant.

Quelques conseils / questions à se poser :

package fr.cnam.bataille; public class HomeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); EnsembleDeCarte pioche = new EnsembleDeCarte(); this.remplirPioche(pioche, 1, 10, "pique"); this.remplirPioche(pioche, 1, 10, "coeur"); this.remplirPioche(pioche, 1, 10, "carreau"); this.remplirPioche(pioche, 1, 10, "trefle"); EnsembleDeCarte main1 = pioche.tire(5); EnsembleDeCarte main2 = pioche.tire(5); Carte bestMain1 = main1.meilleureCarte(); Carte bestMain2 = main2.meilleureCarte(); if (bestMain1.valeur > bestMain2.valeur) { System.out.println("Gagnant joueur 1 avec : "); System.out.println(bestMain1.valeur + " de " + bestMain1.enseigne); } else if (bestMain1.valeur < bestMain2.valeur) { System.out.println("Gagnant joueur 2 avec : "); System.out.println(bestMain2.valeur + " de " + bestMain2.enseigne); } else { System.out.println("Ex-aequo !"); } } }

Exemple de sortie :

Gagnant joueur 2 avec : 10 de trefle

class Carte { public int valeur; public String enseigne; }

public class HomeActivity extends Activity { ... public void remplirPioche(EnsembleDeCarte pioche, int valeurMini, int valeurMaxi, String enseigne){ for(int i = valeurMini; i <= valeurMaxi, i++ ){ Carte carte = new Carte(); carte.valeur = i; carte.enseigne = enseigne; pioche.ajoute(carte); } } }

class EnsembleDeCarte { List cartes; public EnsembleDeCarte(){ this.cartes = new ArrayList(); } public void ajoute(Carte carte){ this.cartes.add(carte); } public EnsembleDeCarte tire(int nombre){ //prepare un nouvel ensemble pour ce tirage EnsembleDeCarte tirage = new EnsembleDeCarte(); //pour le nombre de cartes demandé for(int i=0; i < nombre;i++ ){ //nombre total de cartes dans la liste int totalCartes = this.cartes.size(); //une position entre 0 et le nombre total de cartes int hasard = (int) (Math.round(Math.random() * totalCartes)); //recupere l instance de Carte correpondante Carte tirage = this.cartes.get(hasard); //supprime cette carte de la liste, pour eviter de la retirer plus tard this.cartes.remove(hasard); //ajoute la carte au tirage tirage.ajoute(tirage); } return tirage; } public Carte meilleureCarte(){ //commence par choisir la premiere carte Carte meilleurCarte = this.cartes.get(0); //parcours toutes les cartes... for (int i=0; i < this.cartes.size(); i++) { //..remplace la meilleure carte si la valeur est plus elevee if (this.cartes.get(i).valeur > meilleurCarte.valeur) { meilleurCarte = this.cartes.get(i); } } return meilleurCarte; } }