"Les cours de neeko.fr"

Retour en haut

Java / Android : Examen blanc 2

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

1. Types primitifs (1 point)

Soit le code suivant :

/* Fichier TypesPrimitifs01.java */ public class TypesPrimitifs01 { public static void main(String[] args) { System.out.println(3/2); } }

Que retourne la séquence de commandes suivante ?

javac TypesPrimitifs01.java java TypesPrimitifs01

2. Héritage et Composition (3 points)

D'apres la structure de classe suivante :

abstract class Vehicule { abstract public void avancer(); }

class Voiture extends Vehicule { public void avancer(){ this.rouler(); } public void rouler(){ System.out.println("Je roule"); } }

class Avion extends Vehicule { public void avancer(){ this.voler(); } public void voler(){ System.out.println("Je vole"); } }

class Opel extends Voiture { }

class Porsche extends Voiture { }

class Boeing extends Avion { }

class Airbus extends Avion { }

Pour chaque ligne de code ci-dessous, indiquez son résultat si elle est valide, ou la raison de son invalidité.

Airbus airbusA320 = new Airbus(); airbusA320.voler(); Avion planneur = new Avion(); planneur.voler(); Vehicule boeing747 = new Boeing(); boeing747.voler(); Vehicule concorde = new Airbus(); concorde.avancer(); Voiture opelCorsa = new Opel(); opelCorsa.avancer(); Vehicule velo = new Vehicule(); velo.avancer();

3. Héritage et composition (3 points)

Soit les classes suivantes :

abstract class Arme { public abstract int getDamages(); }

class Epee extends Arme { public int getDamages(){ return 10; } }

class PistoLaser extends Arme { public int getDamages(){ return 50; } }

Epee epee = new Epee(); PistoLaser pisto = new PistoLaser(); Personnage p1 = new Personnage(epee); Personnage p2 = new Personnage(pisto); int d1 = p1.attaque(); int d2 = p2.attaque(); System.out.println("P1 : " + d1); System.out.println("P2 : " + d2);

P1 : 10 P2 : 50

Ecrivez la classe complete Personnage sachant que la méthode "attaque()" utilise l'instance qui est passée au constructeur de la classe Personnage.

Gestion de projet

4. Objectif de la gestion de projet (1 point)

Quel est l'objectif visé par la gestion de projet ? Choissisez la bonne réponse et commentez brièvement les 2 autres.

5. Méthodes agiles (1 point)

Donner deux principes qui caractérisent les méthodes agiles.

Systeme d'exploitation

6. Echanges d'information (1 point)

Sous quel nom regroupe-t-on les mécanismes qui pemettent aux processus d'échanger de l'information entre eux ? Android n'en propose qu'un dans son framework. Quel est sont nom ?

Android

7. Vues (1 point)

Citez 3 élément permettant de composer une interface utilisateur dans le framework Android. De quelle classe héritent-ils tous ?

8. Layouts (3 points)

Dessinez schématiquement le résultat du layouts XML suivant

Exemple de schéma attendu :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" android:layout_alignParentRight="true"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/some_text" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:text="@string/some_text" /> </RelativeLayout>

Projet

Marchand de tapis

Vous réalisez une application de vente de tapis.

Voici la description de toutes les classes et interface qui composent cette application.

Pour les classes "CatalogueTapis" et "AfficheTapis", seules les méthodes publiques sont montrées, on imagine que d'autres méthodes privée permettent à ces classes de fonctionner correctement.

9. Complétez (3 points)

Complétez la méthode onCreate ci-dessous pour que tous les composants nécessaires soit initialisés, puis initiez une recherche "en dur" d'un tapis de 2x2 mètres, de moins de 150 euros. Expliquez brièvement le déroulement de la recherche jusqu'a l'affichage du résultat.

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //completez... }

10. Algo : recherche du meilleur tapis (3 points)

Ecrivez la méthode ayant pour signature private Tapis rechercheTapis(List<Tapis> tousLesTapis, RechercheTapis recherche) contenant un algoritme qui permet de trouver le meilleur tapis parmis la liste de tous les tapis.

Le meilleur tapis doit rassembler toutes ces conditions :

Si aucun tapis n'est trouvé, renvoyer null.