SlideShare une entreprise Scribd logo
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
Examen Java Avancé - Correction
Support de cours et notes manuscrites sur papier blanc autorisés.
I - Les réseaux téléphoniques (1 point)
Question 1) Quels sont les deux technologies qui sont en concurrence pour la 4G ? Citez
au moins une caractéristique principale de la technologie 4G.
Réponse :
Les deux technologies en concurrence pour la 4G sont le Long Term Evolution Advanced
(LTE-A) et le WiMax.
En caractéristiques, nous acceptions :
● Tout IP ;
● Moins coûteux (que l’UTMS) ;
● Rapidité.
II - Les design patterns (4.5 points)
Question 2) Expliquez, de façon précise, l’intérêt et les enjeux du modèle MVC.
Évidemment, il ne s’agit pas de recopier les diapositives du cours. (1 point)
Réponse :
Nous vous demandions de mettre en avant les trois composants du patron de conception,
en expliquant ce que chacun des composants réalise comme tâche. Ce patron de
conception est très utilisé dans la réalisation d’interfaces homme-machine.
D’autre part, nous souhaitions que vous parliez de l’indépendance de la vue par rapport
au modèle : ainsi, il est aisé de changer la vue sans toucher aux couches plus basses du
modèle.
Question 3) Que se passe-t-il si une tâche longue est directement exécutée dans le thread
de l’interface utilisateur ? (1 point)
Réponse :
Si une tâche longue est directement exécutée dans le thread de l’interface, l’affichage va se
bloquer le temps de la tâche.
Question 4) Comment y remédier ? (1 point)
Réponse :
Il faut faire exécuter la tâche longue dans un thread dédié.
Attention à bien utiliser les threads dédiés aux IHMs, comme SwingWorker dans Swing.
Question 5) Comment adapteriez-vous le design pattern Factory afin de ne fournir qu’une
seule instance d’un objet lorsqu’il est demandé, au lieu d’en fournir une nouvelle à chaque
fois ? Illustrez votre réponse à l'aide d'un exemple en Java. (1.5 point)
Réponse :
1/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
Nous acceptions toute implémentation et idée basée sur la description de la question :
● utiliser une variable dans la Factory qui stockerait les instances ;
● utiliser le patron de conception Singleton pour les instances fournies par la Factory.
● Exemple 1 : Utiliser une variable pour stocker les instances
public class MyAnimalFactory {
public static Map<String, Animal> instances = new HashMap<String, Animal>();
public MyAnimalFactory() {
}
public Animal instantitateAnimal(String breed) throws IllegalArgumentException {
if (instances.containsKey(breed)) {
return (Animal) instances.get(breed);
} else if (breed.equals(“cat”)) {
return new Cat();
} else if (breed.equals(“dog”)) {
return new Dog();
} else {
throw new IllegalArgumentException(
breed + “ breed not implemented”);
}
}
}
public interface Animal {
// Methods
}
public class Cat implements Animal {
// Methods
}
public class Dog implements Animal {
// Methods
}
● Exemple 2 : Les objets manipulés par la Factory sont des Singletons
Cette solution est moins élégante, mais acceptée.
public class MyAnimalFactory {
public MyAnimalFactory() {
}
public Animal instantitateAnimal(String breed) throws IllegalArgumentException {
2/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
if (breed.equals(“cat”)) {
return Cat.getInstance();
} else if (breed.equals(“dog”)) {
return Dog.getInstance();
} else {
throw new IllegalArgumentException(
breed + “ breed not implemented”);
}
}
}
public interface Animal {
// Methods
}
public class Cat implements Animal {
private static Cat instance;
private Cat() {
}
private static Cat getInstance() {
if (instance == null) {
instance = new Cat();
}
return instance;
}
// Methods
}
public class Dog implements Animal {
private static Dog instance;
private Dog() {
}
private static Dog getInstance() {
if (instance == null) {
instance = new Dog();
}
return instance;
}
// Methods
}
III - J2ME (2.5 points)
Question 6) Dans MIDP, quel est l’intérêt d’utiliser l’API de haut niveau (Screen), plutôt
que l’API de bas niveau (Canvas) ? Soyez précis dans votre réponse et ne recopiez pas
simplement vos diapositives. (1.5 point)
Réponse :
3/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
Nous attendions de vous que vous expliquiez le principe de ces deux APIs :
● l’API Screen permettant de créer des formulaires et interface basiques rapidement ;
● l’API Canvas permettant de créer des interfaces plus complexes, mais avec un code
plus conséquent.
Nous souhaitions que vous nous disiez, avec vos mots, ce que vous avez compris de ces
APIs.
Question 7) Quels sont les quatre domaines de sécurité vus dans le cours J2ME, et quelles
sont leurs caractéristiques ? (1 point)
Réponse :
Les domaines de sécurité sont appliqués à une MIDlet. Chaque domaine bénéficie d’un
ensemble de permissions sur l’API :
● Les Manufacturer et Operator domains possèdent toutes les permissions ;
● Le Third-Party domain où les permissions vont être demandées à l’utilisateur ;
● Les MIDlets de Untrusted domain ne vont pouvoir effectuer que les opérations ne
nécessitant pas de permissions particulières.
IV - Android (12 points)
A - Fonctionnement général
Question 8) Expliquez comment se passent les phases de compilation, de conversion et de
packaging d'une application Android, et le lien entre les différents étapes. (1 point)
Réponse :
Nous vous demandions le cycle de vie de votre application pendant le processus de
développement. C’est à dire à minima :
* développement de l’application avec du code source Java utilisant l’API Android ;
* compilation de l’application avec le compilateur java ;
* conversion de chaque fichier “class” au format “dex” adapté à la machine virtuelle Android ;
* packaging des fichiers “dex” dans un Android PacKage (APK) ;
* éventuellement la signature pour la mise en production.
En résumé :
java -> class -> dex -> apk (-> apk signé)
Question 9) Expliquez, au niveau système, comment est gérée une application Android vis-
à-vis du système Dalvik et de l’environnement Linux. (1 point)
Réponse :
Ici, il était essentiellement nécessaire de dire que chaque application Android se retrouve
isolée des autres.
Chaque instance d’application s’exécute dans un processus avec sa propre instance
de machine virtuelle de Dalvik. Bref un processus et une machine virtuelle Dalvik par
application.
Question 10) Comment sont gérées les activités lorsqu'on utilise
Context.startActivity() et le bouton retour ? (1 point)
Réponse :
4/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
Cette question vous demandait d’expliciter la slide 28 du cours sur Android.
Le fait de lancer une nouvelle activité avec Context.startActivity() va la mettre dans la stack
des activités Android ; le fait d’appuyer sur le bouton retour va détruire l’activité la plus
récente de la stack des activités et repasser à l’activité précédente.
B - IHM
Question 11) À partir de l’image suivante, écrire le fichier “layout.xml” correspondant (et
bien évidemment tous les autres fichiers dont vous aurez besoin en précisant leurs chemins
d'accès). Écrivez également l’activité permettant d’utiliser et d’afficher ce layout. (5 points)
Veillez également à respecter les consignes.
Réponse :
Le contenu du fichier layout.xml est donné à la fin de ce document.
L’activité permettant d’utiliser ce layout peut tout simplement être :
public class MarouActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.oncreate(savedInstanceState);
setContentView(R.layout.main);
}
}
5/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
Consignes :
● L’affichage peut être plus grand que la taille de l’écran. À vous de trouver une
solution afin de permettre à l’utilisateur de voir tout le contenu ;
● Utilisez le système d’internationalisation d’Android pour stocker les chaînes de
caractères (nous ne vous demandons pas de gérer le français) ;
● Images :
○ la première image a pour chemin d’accès : res/drawable/chatmignon.jpg
○ la seconde image : res/drawable/homeworkcat.jpg
● Le cadre à côté de la première image est en rouge, vous pouvez utiliser le code
hexadécimal #aa0000 ;
● Dans le fichier res/values/strings.xml, vous avez accès à cette définition :
6/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
<? xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Java Avance Examen</string>
<string name="lorem">Accedebant enim eius asperitati, ubi inminuta vel laesa amplitudo imperii
dicebatur, et iracundae suspicionum quantitati proximorum cruentae blanditiae exaggerantium
incidentia et dolere inpendio simulantium, si principis periclitetur vita, a cuius salute velut filo
pendere statum orbis terrarum fictis vocibus exclamabant.</string>
</resources>
res/values/strings.xml
C - Android pratique
Question 12) Le programme Android suivant comporte 6 erreurs (bien qu'il compile),
corrigez les. (4 points)
Réponses :
1-2 Il manque l’appel à super.onCreate(savedInstanceState) dans les deux activités (deux
erreurs) ;
3 Il manque l’appel à setContentView(R.layout.main) dans la première activité afin de définir
l’interface ;
4 Il manque l’appel à setContentView(R.layout.kitteh) dans la seconde activité afin de définir
l’interface ;
5 Il manque l’accès aux permissions réseau dans le fichier AndroidManifest.xml :
<uses-permission android:name=”android.permission.INTERNET”/>
6 La déclaration de l’activité KittehActivity dans le fichier AndroidManifest.xml.
package fr.unilim.hellocat;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class HellocatActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
final Button button = (Button) findViewById(R.id.seeKitteh);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(v.getContext(), KittehActivity.class));
}
});
}
}
HellocatActivity.java
7/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
package fr.unilim.hellocat;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class KittehActivity extends Activity {
WebView wv;
@Override
public void onCreate(Bundle savedInstanceState) {
wv = (WebView) findViewById(R.id.kittehWebView);
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl("http://bit.ly/oKwSY5");
}
}
KittehActivity.java
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/kittehWebView"></WebView>
</LinearLayout>
kitteh.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:layout_height="wrap_content"
android:id="@+id/seeKitteh"
android:layout_width="wrap_content"
android:text="Button"></Button>
</LinearLayout>
main.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.unilim.hellocat"
8/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HellocatActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
AndroidManifest.xml
Annexe
Attributs XML relatifs au
RelativeLayout
Attribute Name Related
Method
Description
android:layout_above Positions the bottom edge of this view above
the given anchor view ID.
android:layout_alignBaseline Positions the baseline of this view on the
baseline of the given anchor view ID.
android:layout_alignBottom Makes the bottom edge of this view match the
bottom edge of the given anchor view ID.
android:layout_alignLeft Makes the left edge of this view match the left
edge of the given anchor view ID.
android:layout_alignParentBottom If true, makes the bottom edge of this view
match the bottom edge of the parent.
android:layout_alignParentLeft If true, makes the left edge of this view match
the left edge of the parent.
android:layout_alignParentRight If true, makes the right edge of this view match
the right edge of the parent.
android:layout_alignParentTop If true, makes the top edge of this view match
the top edge of the parent.
android:layout_alignRight Makes the right edge of this view match the
right edge of the given anchor view ID.
android:layout_alignTop Makes the top edge of this view match the top
edge of the given anchor view ID.
9/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
android:layout_below Positions the top edge of this view below the
given anchor view ID.
android:layout_centerHorizontal If true, centers this child horizontally within its
parent.
android:layout_centerInParent If true, centers this child horizontally and
vertically within its parent.
android:layout_centerVertical If true, centers this child vertically within its
parent.
android:layout_toLeftOf Positions the right edge of this view to the left
of the given anchor view ID.
android:layout_toRightOf Positions the left edge of this view to the right
of the given anchor view ID.
V - Question bonus (0 point) COBAGBTDBCOIAGT !
Question 11 : layout.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
10/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/formlabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Authentication form" />
<TextView
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/password"
android:layout_below="@+id/formlabel"
android:text="Login:"
android:textSize="25px" />
<EditText
android:id="@+id/loginentry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/login"
android:layout_alignTop="@+id/login"
android:layout_toRightOf="@+id/login"
android:paddingBottom="0px"
android:paddingTop="0px"
android:text="Type your login here" />
<TextView
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/login"
android:text="Password:"
android:textSize="25px" />
<EditText
android:id="@+id/passwordentry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/password"
11/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
android:layout_alignLeft="@+id/loginentry"
android:layout_alignTop="@+id/password"
android:inputType="textPassword"
android:paddingBottom="0px"
android:paddingTop="0px"
android:text="Type your password here" >
</EditText>
<Button
android:id="@+id/okbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/passwordentry"
android:layout_marginLeft="10px"
android:text="OK" />
<Button
android:id="@+id/cancelbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/okbutton"
android:layout_marginLeft="10px"
android:layout_toLeftOf="@+id/okbutton"
android:text="Cancel" />
<Button
android:id="@+id/helpbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/cancelbutton"
android:layout_marginLeft="10px"
android:layout_toLeftOf="@+id/cancelbutton"
android:text="Help" />
</RelativeLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/chatmignon" />
12/13
Université de Limoges
Faculté des Sciences et Techniques
Master 1 Informatique
Semestre 7 – première session
2011
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#aa0000"
android:gravity="center_horizontal"
android:text="Please... Give me your password..." />
</LinearLayout>
<ImageView
android:layout_width="fill_parent"
android:layout_height="360px"
android:scaleType="fitStart"
android:src="@drawable/homeworkcat" />
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/lorem"/>"
</LinearLayout>
</ScrollView>
13/13

Contenu connexe

Tendances

POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et Polymorphisme
Mouna Torjmen
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
webreaker
 
Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)
ENSET, Université Hassan II Casablanca
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
Houda TOUKABRI
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
Semah Mhamdi
 
Systèmes d'Exploitation - chp6-synchronisation
Systèmes d'Exploitation - chp6-synchronisationSystèmes d'Exploitation - chp6-synchronisation
Systèmes d'Exploitation - chp6-synchronisation
Lilia Sfaxi
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel phpKhadim Mbacké
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
Lilia Sfaxi
 
Correction de td poo n2
Correction de td poo n2Correction de td poo n2
Correction de td poo n2yassine kchiri
 
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Anas Riahi
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
ENSET, Université Hassan II Casablanca
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
Amir Souissi
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
ENSET, Université Hassan II Casablanca
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
Lilia Sfaxi
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Sofien Benrhouma
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Riadh K.
 
Présentation cloud computing
Présentation cloud computingPrésentation cloud computing
Présentation cloud computing
Cynapsys It Hotspot
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
ENSET, Université Hassan II Casablanca
 
Rapport de stage PFE - Mémoire master: Développement d'une application Android
Rapport de stage PFE - Mémoire master: Développement d'une application AndroidRapport de stage PFE - Mémoire master: Développement d'une application Android
Rapport de stage PFE - Mémoire master: Développement d'une application Android
BadrElattaoui
 
Rapport de projet de fin d"études
Rapport de projet de fin d"étudesRapport de projet de fin d"études
Rapport de projet de fin d"études
Mohamed Boubaya
 

Tendances (20)

POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et Polymorphisme
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Systèmes d'Exploitation - chp6-synchronisation
Systèmes d'Exploitation - chp6-synchronisationSystèmes d'Exploitation - chp6-synchronisation
Systèmes d'Exploitation - chp6-synchronisation
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Correction de td poo n2
Correction de td poo n2Correction de td poo n2
Correction de td poo n2
 
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Présentation cloud computing
Présentation cloud computingPrésentation cloud computing
Présentation cloud computing
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Rapport de stage PFE - Mémoire master: Développement d'une application Android
Rapport de stage PFE - Mémoire master: Développement d'une application AndroidRapport de stage PFE - Mémoire master: Développement d'une application Android
Rapport de stage PFE - Mémoire master: Développement d'une application Android
 
Rapport de projet de fin d"études
Rapport de projet de fin d"étudesRapport de projet de fin d"études
Rapport de projet de fin d"études
 

En vedette

Exercices corrigés
Exercices corrigésExercices corrigés
Exercices corrigéshadhoum
 
Java - JDBC - 3 - meta données
Java - JDBC - 3 - meta donnéesJava - JDBC - 3 - meta données
Java - JDBC - 3 - meta données
Noël
 
Correction de td poo n3
Correction de td poo n3Correction de td poo n3
Correction de td poo n3yassine kchiri
 
In01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMIIn01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMI
Yann Caron
 
Play for a Living - Sneak Preview
Play for a Living - Sneak PreviewPlay for a Living - Sneak Preview
Play for a Living - Sneak Preview
Charlie Hoehn
 
Développement Android
Développement AndroidDéveloppement Android
Développement Android
Franck SIMON
 
Les espardenyes
Les espardenyesLes espardenyes
Les espardenyes2011Edu
 
Bases y Formulario abril-mayo
Bases y Formulario  abril-mayoBases y Formulario  abril-mayo
Bases y Formulario abril-mayo
ElevaGlobal
 
"Ciudadanía y ONG" Resultados de las encuestas abril 2012
"Ciudadanía y ONG" Resultados de las encuestas abril 2012"Ciudadanía y ONG" Resultados de las encuestas abril 2012
"Ciudadanía y ONG" Resultados de las encuestas abril 2012
e-Inclusión Fundación Esplai
 
Mathieu Kassovitz: Métisse
Mathieu Kassovitz: MétisseMathieu Kassovitz: Métisse
Mathieu Kassovitz: Métisse
MissAmoros
 
02 el regreso de tarzan burroughs
02 el regreso de tarzan burroughs02 el regreso de tarzan burroughs
02 el regreso de tarzan burroughs
Jose Torrico
 
Estructura Prod. Pyme 2011
Estructura Prod. Pyme 2011Estructura Prod. Pyme 2011
Estructura Prod. Pyme 2011
Daniel Moreno
 
George Gray Molina
George Gray MolinaGeorge Gray Molina
George Gray Molina
Gobernabilidad
 
Psicología el lado oscuro presentacion
Psicología  el lado oscuro presentacionPsicología  el lado oscuro presentacion
Psicología el lado oscuro presentacion
Lola Fernández
 
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Emilie Robert
 
Producción de soluciones de software
Producción de soluciones de softwareProducción de soluciones de software
Producción de soluciones de software
Embajada de EE.UU. en el Perú
 
Rendre votre entreprise visible sur facebook
Rendre votre entreprise visible sur facebookRendre votre entreprise visible sur facebook
Rendre votre entreprise visible sur facebook
Valérie Demont (-Steck)
 
Cuando las marcas pueden educar - Presentación de Jorge Segado
Cuando las marcas pueden educar - Presentación de Jorge SegadoCuando las marcas pueden educar - Presentación de Jorge Segado
Cuando las marcas pueden educar - Presentación de Jorge Segado
Jorge Segado
 

En vedette (20)

Exercices corrigés
Exercices corrigésExercices corrigés
Exercices corrigés
 
Java - JDBC - 3 - meta données
Java - JDBC - 3 - meta donnéesJava - JDBC - 3 - meta données
Java - JDBC - 3 - meta données
 
Correction de td poo n3
Correction de td poo n3Correction de td poo n3
Correction de td poo n3
 
In01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMIIn01 - Programmation Android - 03 - HMI
In01 - Programmation Android - 03 - HMI
 
TD Java POO
TD Java POO TD Java POO
TD Java POO
 
Play for a Living - Sneak Preview
Play for a Living - Sneak PreviewPlay for a Living - Sneak Preview
Play for a Living - Sneak Preview
 
Développement Android
Développement AndroidDéveloppement Android
Développement Android
 
L’olympique lyonnais
L’olympique lyonnaisL’olympique lyonnais
L’olympique lyonnais
 
Les espardenyes
Les espardenyesLes espardenyes
Les espardenyes
 
Bases y Formulario abril-mayo
Bases y Formulario  abril-mayoBases y Formulario  abril-mayo
Bases y Formulario abril-mayo
 
"Ciudadanía y ONG" Resultados de las encuestas abril 2012
"Ciudadanía y ONG" Resultados de las encuestas abril 2012"Ciudadanía y ONG" Resultados de las encuestas abril 2012
"Ciudadanía y ONG" Resultados de las encuestas abril 2012
 
Mathieu Kassovitz: Métisse
Mathieu Kassovitz: MétisseMathieu Kassovitz: Métisse
Mathieu Kassovitz: Métisse
 
02 el regreso de tarzan burroughs
02 el regreso de tarzan burroughs02 el regreso de tarzan burroughs
02 el regreso de tarzan burroughs
 
Estructura Prod. Pyme 2011
Estructura Prod. Pyme 2011Estructura Prod. Pyme 2011
Estructura Prod. Pyme 2011
 
George Gray Molina
George Gray MolinaGeorge Gray Molina
George Gray Molina
 
Psicología el lado oscuro presentacion
Psicología  el lado oscuro presentacionPsicología  el lado oscuro presentacion
Psicología el lado oscuro presentacion
 
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
 
Producción de soluciones de software
Producción de soluciones de softwareProducción de soluciones de software
Producción de soluciones de software
 
Rendre votre entreprise visible sur facebook
Rendre votre entreprise visible sur facebookRendre votre entreprise visible sur facebook
Rendre votre entreprise visible sur facebook
 
Cuando las marcas pueden educar - Presentación de Jorge Segado
Cuando las marcas pueden educar - Presentación de Jorge SegadoCuando las marcas pueden educar - Presentación de Jorge Segado
Cuando las marcas pueden educar - Presentación de Jorge Segado
 

Similaire à Correction examen-java-avancé-1

Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns Java
VINOT Bernard
 
JavaRMI.pdf
JavaRMI.pdfJavaRMI.pdf
JavaRMI.pdf
ngombeemmanuel
 
React xp
React xpReact xp
Javavs net
Javavs netJavavs net
Javavs net
Nicolas De Loof
 
Chap1_PresentationJava.pdf
Chap1_PresentationJava.pdfChap1_PresentationJava.pdf
Chap1_PresentationJava.pdf
sayf7
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En Java
Rached Krim
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)
Jérôme Tamborini
 
Architecture .net
Architecture  .netArchitecture  .net
Chap 02 poo en java
Chap 02 poo en javaChap 02 poo en java
Chap 02 poo en java
Yassine Badri
 
Mysql
MysqlMysql
Mysql
ismail1989
 
Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3
Anne-Marie Pinna-Dery
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
Zineb ELGARRAI
 
Introduction à NetLogo
Introduction à NetLogoIntroduction à NetLogo
Introduction à NetLogoAlvaro Gil
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
Elapse Technologies
 
Programmation Java
Programmation JavaProgrammation Java
Programmation Java
Mohamed Lahby
 
Tutoriel java
Tutoriel javaTutoriel java
Tutoriel java
Kalilou DIABY
 
Self-programming Software
Self-programming SoftwareSelf-programming Software
Self-programming Software
Adelphe Patrick Mveng
 
Concours Marocain de l\’Open Source CMOS édition 2008
Concours Marocain de l\’Open Source CMOS édition 2008Concours Marocain de l\’Open Source CMOS édition 2008
Concours Marocain de l\’Open Source CMOS édition 2008
Nadir Haouari
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
Antoine Rey
 

Similaire à Correction examen-java-avancé-1 (20)

Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns Java
 
JavaRMI.pdf
JavaRMI.pdfJavaRMI.pdf
JavaRMI.pdf
 
React xp
React xpReact xp
React xp
 
Javavs net
Javavs netJavavs net
Javavs net
 
Chap1_PresentationJava.pdf
Chap1_PresentationJava.pdfChap1_PresentationJava.pdf
Chap1_PresentationJava.pdf
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En Java
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)
 
Architecture .net
Architecture  .netArchitecture  .net
Architecture .net
 
Chap 02 poo en java
Chap 02 poo en javaChap 02 poo en java
Chap 02 poo en java
 
Mysql
MysqlMysql
Mysql
 
Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
Introduction à NetLogo
Introduction à NetLogoIntroduction à NetLogo
Introduction à NetLogo
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
Programmation Java
Programmation JavaProgrammation Java
Programmation Java
 
Tutoriel java
Tutoriel javaTutoriel java
Tutoriel java
 
Self-programming Software
Self-programming SoftwareSelf-programming Software
Self-programming Software
 
Concours Marocain de l\’Open Source CMOS édition 2008
Concours Marocain de l\’Open Source CMOS édition 2008Concours Marocain de l\’Open Source CMOS édition 2008
Concours Marocain de l\’Open Source CMOS édition 2008
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
 

Plus de vangogue

Boutique en ligne
Boutique en ligneBoutique en ligne
Boutique en ligne
vangogue
 
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
vangogue
 
Edilivre les-fleurs-grises-de-midi-dieudonne-francois-ndje-man-preview
Edilivre les-fleurs-grises-de-midi-dieudonne-francois-ndje-man-previewEdilivre les-fleurs-grises-de-midi-dieudonne-francois-ndje-man-preview
Edilivre les-fleurs-grises-de-midi-dieudonne-francois-ndje-man-preview
vangogue
 
Owasp top-10-2013-french
Owasp top-10-2013-frenchOwasp top-10-2013-french
Owasp top-10-2013-french
vangogue
 
Rattrapage uml
Rattrapage umlRattrapage uml
Rattrapage umlvangogue
 
Scbd cg conception
Scbd cg conceptionScbd cg conception
Scbd cg conception
vangogue
 
B4 tab calc excel
B4 tab calc excelB4 tab calc excel
B4 tab calc excel
vangogue
 
java BDD jdbc
java BDD jdbcjava BDD jdbc
java BDD jdbcvangogue
 
1 la-demarche-merise-le-schema-directeur
1 la-demarche-merise-le-schema-directeur1 la-demarche-merise-le-schema-directeur
1 la-demarche-merise-le-schema-directeur
vangogue
 
Chap7 developpement modele statique
Chap7 developpement modele statiqueChap7 developpement modele statique
Chap7 developpement modele statiquevangogue
 
2010.th16419.durand.arnaud
2010.th16419.durand.arnaud2010.th16419.durand.arnaud
2010.th16419.durand.arnaudvangogue
 
Cours2 uml usecase
Cours2 uml usecaseCours2 uml usecase
Cours2 uml usecasevangogue
 

Plus de vangogue (15)

Boutique en ligne
Boutique en ligneBoutique en ligne
Boutique en ligne
 
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
 
Edilivre les-fleurs-grises-de-midi-dieudonne-francois-ndje-man-preview
Edilivre les-fleurs-grises-de-midi-dieudonne-francois-ndje-man-previewEdilivre les-fleurs-grises-de-midi-dieudonne-francois-ndje-man-preview
Edilivre les-fleurs-grises-de-midi-dieudonne-francois-ndje-man-preview
 
Owasp top-10-2013-french
Owasp top-10-2013-frenchOwasp top-10-2013-french
Owasp top-10-2013-french
 
Rattrapage uml
Rattrapage umlRattrapage uml
Rattrapage uml
 
Scbd cg conception
Scbd cg conceptionScbd cg conception
Scbd cg conception
 
B4 tab calc excel
B4 tab calc excelB4 tab calc excel
B4 tab calc excel
 
Vb bdd
Vb bddVb bdd
Vb bdd
 
java BDD jdbc
java BDD jdbcjava BDD jdbc
java BDD jdbc
 
1 la-demarche-merise-le-schema-directeur
1 la-demarche-merise-le-schema-directeur1 la-demarche-merise-le-schema-directeur
1 la-demarche-merise-le-schema-directeur
 
Chap7 developpement modele statique
Chap7 developpement modele statiqueChap7 developpement modele statique
Chap7 developpement modele statique
 
2010.th16419.durand.arnaud
2010.th16419.durand.arnaud2010.th16419.durand.arnaud
2010.th16419.durand.arnaud
 
Chap2
Chap2Chap2
Chap2
 
Chap10
Chap10Chap10
Chap10
 
Cours2 uml usecase
Cours2 uml usecaseCours2 uml usecase
Cours2 uml usecase
 

Dernier

MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
Horgix
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
OCTO Technology
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
AlbertSmithTambwe
 
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU  SOUS WINDOWSCOURS D'ADMINISTRATION RESEAU  SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
AlbertSmithTambwe
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
abderrahimbourimi
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 

Dernier (9)

MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
 
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU  SOUS WINDOWSCOURS D'ADMINISTRATION RESEAU  SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 

Correction examen-java-avancé-1

  • 1. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 Examen Java Avancé - Correction Support de cours et notes manuscrites sur papier blanc autorisés. I - Les réseaux téléphoniques (1 point) Question 1) Quels sont les deux technologies qui sont en concurrence pour la 4G ? Citez au moins une caractéristique principale de la technologie 4G. Réponse : Les deux technologies en concurrence pour la 4G sont le Long Term Evolution Advanced (LTE-A) et le WiMax. En caractéristiques, nous acceptions : ● Tout IP ; ● Moins coûteux (que l’UTMS) ; ● Rapidité. II - Les design patterns (4.5 points) Question 2) Expliquez, de façon précise, l’intérêt et les enjeux du modèle MVC. Évidemment, il ne s’agit pas de recopier les diapositives du cours. (1 point) Réponse : Nous vous demandions de mettre en avant les trois composants du patron de conception, en expliquant ce que chacun des composants réalise comme tâche. Ce patron de conception est très utilisé dans la réalisation d’interfaces homme-machine. D’autre part, nous souhaitions que vous parliez de l’indépendance de la vue par rapport au modèle : ainsi, il est aisé de changer la vue sans toucher aux couches plus basses du modèle. Question 3) Que se passe-t-il si une tâche longue est directement exécutée dans le thread de l’interface utilisateur ? (1 point) Réponse : Si une tâche longue est directement exécutée dans le thread de l’interface, l’affichage va se bloquer le temps de la tâche. Question 4) Comment y remédier ? (1 point) Réponse : Il faut faire exécuter la tâche longue dans un thread dédié. Attention à bien utiliser les threads dédiés aux IHMs, comme SwingWorker dans Swing. Question 5) Comment adapteriez-vous le design pattern Factory afin de ne fournir qu’une seule instance d’un objet lorsqu’il est demandé, au lieu d’en fournir une nouvelle à chaque fois ? Illustrez votre réponse à l'aide d'un exemple en Java. (1.5 point) Réponse : 1/13
  • 2. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 Nous acceptions toute implémentation et idée basée sur la description de la question : ● utiliser une variable dans la Factory qui stockerait les instances ; ● utiliser le patron de conception Singleton pour les instances fournies par la Factory. ● Exemple 1 : Utiliser une variable pour stocker les instances public class MyAnimalFactory { public static Map<String, Animal> instances = new HashMap<String, Animal>(); public MyAnimalFactory() { } public Animal instantitateAnimal(String breed) throws IllegalArgumentException { if (instances.containsKey(breed)) { return (Animal) instances.get(breed); } else if (breed.equals(“cat”)) { return new Cat(); } else if (breed.equals(“dog”)) { return new Dog(); } else { throw new IllegalArgumentException( breed + “ breed not implemented”); } } } public interface Animal { // Methods } public class Cat implements Animal { // Methods } public class Dog implements Animal { // Methods } ● Exemple 2 : Les objets manipulés par la Factory sont des Singletons Cette solution est moins élégante, mais acceptée. public class MyAnimalFactory { public MyAnimalFactory() { } public Animal instantitateAnimal(String breed) throws IllegalArgumentException { 2/13
  • 3. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 if (breed.equals(“cat”)) { return Cat.getInstance(); } else if (breed.equals(“dog”)) { return Dog.getInstance(); } else { throw new IllegalArgumentException( breed + “ breed not implemented”); } } } public interface Animal { // Methods } public class Cat implements Animal { private static Cat instance; private Cat() { } private static Cat getInstance() { if (instance == null) { instance = new Cat(); } return instance; } // Methods } public class Dog implements Animal { private static Dog instance; private Dog() { } private static Dog getInstance() { if (instance == null) { instance = new Dog(); } return instance; } // Methods } III - J2ME (2.5 points) Question 6) Dans MIDP, quel est l’intérêt d’utiliser l’API de haut niveau (Screen), plutôt que l’API de bas niveau (Canvas) ? Soyez précis dans votre réponse et ne recopiez pas simplement vos diapositives. (1.5 point) Réponse : 3/13
  • 4. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 Nous attendions de vous que vous expliquiez le principe de ces deux APIs : ● l’API Screen permettant de créer des formulaires et interface basiques rapidement ; ● l’API Canvas permettant de créer des interfaces plus complexes, mais avec un code plus conséquent. Nous souhaitions que vous nous disiez, avec vos mots, ce que vous avez compris de ces APIs. Question 7) Quels sont les quatre domaines de sécurité vus dans le cours J2ME, et quelles sont leurs caractéristiques ? (1 point) Réponse : Les domaines de sécurité sont appliqués à une MIDlet. Chaque domaine bénéficie d’un ensemble de permissions sur l’API : ● Les Manufacturer et Operator domains possèdent toutes les permissions ; ● Le Third-Party domain où les permissions vont être demandées à l’utilisateur ; ● Les MIDlets de Untrusted domain ne vont pouvoir effectuer que les opérations ne nécessitant pas de permissions particulières. IV - Android (12 points) A - Fonctionnement général Question 8) Expliquez comment se passent les phases de compilation, de conversion et de packaging d'une application Android, et le lien entre les différents étapes. (1 point) Réponse : Nous vous demandions le cycle de vie de votre application pendant le processus de développement. C’est à dire à minima : * développement de l’application avec du code source Java utilisant l’API Android ; * compilation de l’application avec le compilateur java ; * conversion de chaque fichier “class” au format “dex” adapté à la machine virtuelle Android ; * packaging des fichiers “dex” dans un Android PacKage (APK) ; * éventuellement la signature pour la mise en production. En résumé : java -> class -> dex -> apk (-> apk signé) Question 9) Expliquez, au niveau système, comment est gérée une application Android vis- à-vis du système Dalvik et de l’environnement Linux. (1 point) Réponse : Ici, il était essentiellement nécessaire de dire que chaque application Android se retrouve isolée des autres. Chaque instance d’application s’exécute dans un processus avec sa propre instance de machine virtuelle de Dalvik. Bref un processus et une machine virtuelle Dalvik par application. Question 10) Comment sont gérées les activités lorsqu'on utilise Context.startActivity() et le bouton retour ? (1 point) Réponse : 4/13
  • 5. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 Cette question vous demandait d’expliciter la slide 28 du cours sur Android. Le fait de lancer une nouvelle activité avec Context.startActivity() va la mettre dans la stack des activités Android ; le fait d’appuyer sur le bouton retour va détruire l’activité la plus récente de la stack des activités et repasser à l’activité précédente. B - IHM Question 11) À partir de l’image suivante, écrire le fichier “layout.xml” correspondant (et bien évidemment tous les autres fichiers dont vous aurez besoin en précisant leurs chemins d'accès). Écrivez également l’activité permettant d’utiliser et d’afficher ce layout. (5 points) Veillez également à respecter les consignes. Réponse : Le contenu du fichier layout.xml est donné à la fin de ce document. L’activité permettant d’utiliser ce layout peut tout simplement être : public class MarouActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.oncreate(savedInstanceState); setContentView(R.layout.main); } } 5/13
  • 6. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 Consignes : ● L’affichage peut être plus grand que la taille de l’écran. À vous de trouver une solution afin de permettre à l’utilisateur de voir tout le contenu ; ● Utilisez le système d’internationalisation d’Android pour stocker les chaînes de caractères (nous ne vous demandons pas de gérer le français) ; ● Images : ○ la première image a pour chemin d’accès : res/drawable/chatmignon.jpg ○ la seconde image : res/drawable/homeworkcat.jpg ● Le cadre à côté de la première image est en rouge, vous pouvez utiliser le code hexadécimal #aa0000 ; ● Dans le fichier res/values/strings.xml, vous avez accès à cette définition : 6/13
  • 7. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 <? xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Java Avance Examen</string> <string name="lorem">Accedebant enim eius asperitati, ubi inminuta vel laesa amplitudo imperii dicebatur, et iracundae suspicionum quantitati proximorum cruentae blanditiae exaggerantium incidentia et dolere inpendio simulantium, si principis periclitetur vita, a cuius salute velut filo pendere statum orbis terrarum fictis vocibus exclamabant.</string> </resources> res/values/strings.xml C - Android pratique Question 12) Le programme Android suivant comporte 6 erreurs (bien qu'il compile), corrigez les. (4 points) Réponses : 1-2 Il manque l’appel à super.onCreate(savedInstanceState) dans les deux activités (deux erreurs) ; 3 Il manque l’appel à setContentView(R.layout.main) dans la première activité afin de définir l’interface ; 4 Il manque l’appel à setContentView(R.layout.kitteh) dans la seconde activité afin de définir l’interface ; 5 Il manque l’accès aux permissions réseau dans le fichier AndroidManifest.xml : <uses-permission android:name=”android.permission.INTERNET”/> 6 La déclaration de l’activité KittehActivity dans le fichier AndroidManifest.xml. package fr.unilim.hellocat; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class HellocatActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { final Button button = (Button) findViewById(R.id.seeKitteh); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { startActivity(new Intent(v.getContext(), KittehActivity.class)); } }); } } HellocatActivity.java 7/13
  • 8. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 package fr.unilim.hellocat; import android.app.Activity; import android.os.Bundle; import android.webkit.WebView; public class KittehActivity extends Activity { WebView wv; @Override public void onCreate(Bundle savedInstanceState) { wv = (WebView) findViewById(R.id.kittehWebView); wv.getSettings().setJavaScriptEnabled(true); wv.loadUrl("http://bit.ly/oKwSY5"); } } KittehActivity.java <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/kittehWebView"></WebView> </LinearLayout> kitteh.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:layout_height="wrap_content" android:id="@+id/seeKitteh" android:layout_width="wrap_content" android:text="Button"></Button> </LinearLayout> main.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="fr.unilim.hellocat" 8/13
  • 9. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HellocatActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> AndroidManifest.xml Annexe Attributs XML relatifs au RelativeLayout Attribute Name Related Method Description android:layout_above Positions the bottom edge of this view above the given anchor view ID. android:layout_alignBaseline Positions the baseline of this view on the baseline of the given anchor view ID. android:layout_alignBottom Makes the bottom edge of this view match the bottom edge of the given anchor view ID. android:layout_alignLeft Makes the left edge of this view match the left edge of the given anchor view ID. android:layout_alignParentBottom If true, makes the bottom edge of this view match the bottom edge of the parent. android:layout_alignParentLeft If true, makes the left edge of this view match the left edge of the parent. android:layout_alignParentRight If true, makes the right edge of this view match the right edge of the parent. android:layout_alignParentTop If true, makes the top edge of this view match the top edge of the parent. android:layout_alignRight Makes the right edge of this view match the right edge of the given anchor view ID. android:layout_alignTop Makes the top edge of this view match the top edge of the given anchor view ID. 9/13
  • 10. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 android:layout_below Positions the top edge of this view below the given anchor view ID. android:layout_centerHorizontal If true, centers this child horizontally within its parent. android:layout_centerInParent If true, centers this child horizontally and vertically within its parent. android:layout_centerVertical If true, centers this child vertically within its parent. android:layout_toLeftOf Positions the right edge of this view to the left of the given anchor view ID. android:layout_toRightOf Positions the left edge of this view to the right of the given anchor view ID. V - Question bonus (0 point) COBAGBTDBCOIAGT ! Question 11 : layout.xml <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" 10/13
  • 11. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 android:orientation="vertical" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/formlabel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Authentication form" /> <TextView android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/password" android:layout_below="@+id/formlabel" android:text="Login:" android:textSize="25px" /> <EditText android:id="@+id/loginentry" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignBottom="@+id/login" android:layout_alignTop="@+id/login" android:layout_toRightOf="@+id/login" android:paddingBottom="0px" android:paddingTop="0px" android:text="Type your login here" /> <TextView android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/login" android:text="Password:" android:textSize="25px" /> <EditText android:id="@+id/passwordentry" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignBottom="@+id/password" 11/13
  • 12. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 android:layout_alignLeft="@+id/loginentry" android:layout_alignTop="@+id/password" android:inputType="textPassword" android:paddingBottom="0px" android:paddingTop="0px" android:text="Type your password here" > </EditText> <Button android:id="@+id/okbutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@+id/passwordentry" android:layout_marginLeft="10px" android:text="OK" /> <Button android:id="@+id/cancelbutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/okbutton" android:layout_marginLeft="10px" android:layout_toLeftOf="@+id/okbutton" android:text="Cancel" /> <Button android:id="@+id/helpbutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/cancelbutton" android:layout_marginLeft="10px" android:layout_toLeftOf="@+id/cancelbutton" android:text="Help" /> </RelativeLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/chatmignon" /> 12/13
  • 13. Université de Limoges Faculté des Sciences et Techniques Master 1 Informatique Semestre 7 – première session 2011 <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#aa0000" android:gravity="center_horizontal" android:text="Please... Give me your password..." /> </LinearLayout> <ImageView android:layout_width="fill_parent" android:layout_height="360px" android:scaleType="fitStart" android:src="@drawable/homeworkcat" /> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/lorem"/>" </LinearLayout> </ScrollView> 13/13