SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
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

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.
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correctionInes Ouaz
 
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
 
Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Ayoub Mkharbach
 
rapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFErapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFEDonia Hammami
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebHarrathi Mohamed
 
Rapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learningRapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learningRouâa Ben Hammouda
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
Conception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerceConception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerceAHMEDBELGHITH4
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfacesAmir Souissi
 
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...Symphorien Niyonzima
 
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux fehmi arbi
 
Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...Addi Ait-Mlouk
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
Conception et réalisation d'une plateforme social learning
Conception et réalisation d'une plateforme social learningConception et réalisation d'une plateforme social learning
Conception et réalisation d'une plateforme social learningRouâa Ben Hammouda
 
Projet de fin étude ( LFIG : Conception et Développement d'une application W...
Projet de fin étude  ( LFIG : Conception et Développement d'une application W...Projet de fin étude  ( LFIG : Conception et Développement d'une application W...
Projet de fin étude ( LFIG : Conception et Développement d'une application W...Ramzi Noumairi
 
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
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
 

Tendances (20)

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...
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
 
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
 
Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...
 
rapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFErapport de projet de fin d'étude_PFE
rapport de projet de fin d'étude_PFE
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site Web
 
Rapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learningRapport- Conception et réalisation d'une plateforme social learning
Rapport- Conception et réalisation d'une plateforme social learning
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Conception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerceConception et réalisation d'une application web et mobile de e-commerce
Conception et réalisation d'une application web et mobile de e-commerce
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
 
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
 
Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Conception et réalisation d'une plateforme social learning
Conception et réalisation d'une plateforme social learningConception et réalisation d'une plateforme social learning
Conception et réalisation d'une plateforme social learning
 
Projet de fin étude ( LFIG : Conception et Développement d'une application W...
Projet de fin étude  ( LFIG : Conception et Développement d'une application W...Projet de fin étude  ( LFIG : Conception et Développement d'une application W...
Projet de fin étude ( LFIG : Conception et Développement d'une application W...
 
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...
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 

En vedette

Correction de td poo n2
Correction de td poo n2Correction de td poo n2
Correction de td poo n2yassine kchiri
 
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éesNoë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 - HMIYann Caron
 
Play for a Living - Sneak Preview
Play for a Living - Sneak PreviewPlay for a Living - Sneak Preview
Play for a Living - Sneak PreviewCharlie Hoehn
 
Développement Android
Développement AndroidDéveloppement Android
Développement AndroidFranck 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-mayoElevaGlobal
 
"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 2012e-Inclusión Fundación Esplai
 
Mathieu Kassovitz: Métisse
Mathieu Kassovitz: MétisseMathieu Kassovitz: Métisse
Mathieu Kassovitz: MétisseMissAmoros
 
02 el regreso de tarzan burroughs
02 el regreso de tarzan burroughs02 el regreso de tarzan burroughs
02 el regreso de tarzan burroughsJose Torrico
 
Estructura Prod. Pyme 2011
Estructura Prod. Pyme 2011Estructura Prod. Pyme 2011
Estructura Prod. Pyme 2011Daniel Moreno
 
Psicología el lado oscuro presentacion
Psicología  el lado oscuro presentacionPsicología  el lado oscuro presentacion
Psicología el lado oscuro presentacionLola 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
 
Rendre votre entreprise visible sur facebook
Rendre votre entreprise visible sur facebookRendre votre entreprise visible sur facebook
Rendre votre entreprise visible sur facebookValérie Demont (-Steck)
 

En vedette (20)

Correction de td poo n2
Correction de td poo n2Correction de td poo n2
Correction de td poo n2
 
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
 

Similaire à Correction examen-java-avancé-1

Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns JavaVINOT Bernard
 
Chap1_PresentationJava.pdf
Chap1_PresentationJava.pdfChap1_PresentationJava.pdf
Chap1_PresentationJava.pdfsayf7
 
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 JavaRached 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
 
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 SI3Anne-Marie Pinna-Dery
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db firstZineb 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/29Elapse Technologies
 
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 2008Nadir Haouari
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application javaAntoine 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 lignevangogue
 
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-previewvangogue
 
Owasp top-10-2013-french
Owasp top-10-2013-frenchOwasp top-10-2013-french
Owasp top-10-2013-frenchvangogue
 
Rattrapage uml
Rattrapage umlRattrapage uml
Rattrapage umlvangogue
 
Scbd cg conception
Scbd cg conceptionScbd cg conception
Scbd cg conceptionvangogue
 
B4 tab calc excel
B4 tab calc excelB4 tab calc excel
B4 tab calc excelvangogue
 
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-directeurvangogue
 
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
 

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