(DERDOURI) DEVOAM 22 23 M209 EFM v2 Eléments de Correction

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 5

Direction Régionale : Marrakech-Safi

Examen de Fin de Module :


M09 - Acquérir les bases de développement Android

Filière : DEVOAM 22/23 Année 2022/2023 Durée : 2 heures

Niveau : TS Barème : /40

Partie théorique (7 pts)


Voir « Cours »

Partie pratique (33 pts)

Exercice 1 (23 pts)

public class Produit {


private int code;
private double prix;

public int getCode() {


return code;
}

public void setCode(int code) {


this.code = code;
}

public double getPrix() {


return prix;
}

public void setPrix(double prix) {


this.prix = prix;
}

public Produit(int code, double prix) {


this.setCode(code);
this.setPrix(prix);
}

@Override
public String toString() {
return String.format("%d;.2f", getCode(), getPrix());
}

@Override
public boolean equals(Object obj) {
if (obj == null)

Variante 2 Page 1 sur 5


DEVOAM 22/23 - EFM - M09-Acquérir les bases de développement Android

return false;

if (!(obj instanceof Produit))


return false;

return getCode() == ((Produit) obj).getCode();


}

public double prixProduit() {


return getPrix();
}
}

public class ProduitEnSolde extends Produit {


private double remise;

public double getRemise() {


return remise;
}

public void setRemise(double remise) throws Exception {


if (remise >= 0 && remise <= 90)
this.remise = remise;
else
throw new Exception("La remise doit être comprise entre 0 et 90 !!!");
}

public ProduitEnSolde(int code, double prix, double remise) throws Exception {


super(code, prix);
this.setRemise(remise);
}

@Override
public double prixProduit() {
return getPrix() * (1 + remise / 100);
}
}

import java.io.*;
import java.util.ArrayList;

public class Boutique {


private ArrayList<Produit> liste;

int indiceDe(int code) {


for (Produit produit : liste) {
if (produit.getCode() == code)
return liste.indexOf(produit);
}

return -1;
}

void ajouter(Produit p) throws Exception {


if (indiceDe(p.getCode()) != -1)
throw new Exception("L'article existe déjà dans le magasin !!!");

liste.add(p);
}

Variante 2 Page 2 sur 5


DEVOAM 22/23 - EFM - M09-Acquérir les bases de développement Android

boolean supprimer(int code) throws Exception {


int indice = indiceDe(code);

if (indice == -1)
return false;

liste.remove(indice);
return true;
}

boolean supprimer(Produit p) throws Exception {


return supprimer(p.getCode());
}

public int nombreProduitsEnSolde() {


int nombre = 0;

for (Produit produit : liste) {


if (produit instanceof ProduitEnSolde)
nombre++;
}

return nombre;
}

public void enregistrer(String chemin) {


if (!liste.isEmpty()) {
try (
ObjectOutputStream objectOutputStream = new
ObjectOutputStream(new FileOutputStream(chemin));
) {
objectOutputStream.writeObject(liste);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

Exercice 2 (10 pts)

<?xml version="1.0" encoding="utf-8"?>


<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<EditText
android:id="@+id/etWeight"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:ems="10"
android:hint="Weight (Pounds)"
android:inputType="textPersonName"

Variante 2 Page 3 sur 5


DEVOAM 22/23 - EFM - M09-Acquérir les bases de développement Android

app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<EditText
android:id="@+id/etHeight"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:ems="10"
android:hint="Height (Inches)"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/etWeight" />

<Button
android:id="@+id/btnOK"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="OK"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/etHeight" />
</androidx.constraintlayout.widget.ConstraintLayout>

public class MainActivity extends AppCompatActivity {


EditText etWeight, etHeight;
Button btnOK;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

etWeight = findViewById(R.id.etWeight);
etHeight = findViewById(R.id.etHeight);
btnOK = findViewById(R.id.btnOK);

btnOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
double weight = Double.parseDouble(etWeight.getText().toString()),
height = Double.parseDouble(etHeight.getText().toString()),
bmi = weight / (703 * Math.pow(height, 2));
String etat;

if (bmi < 18.5)


etat = "Underweight";
else if (bmi >= 18.5 && bmi < 25)
etat = "Normal";
else if (bmi >= 25 && bmi < 40)
etat = "Overweight";
else
etat = "Obese";

Variante 2 Page 4 sur 5


DEVOAM 22/23 - EFM - M09-Acquérir les bases de développement Android

Toast.makeText(MainActivity.this, String.format("BMI = %.2f - Etat


= %s", bmi, etat), Toast.LENGTH_SHORT).show();
}
});
}
}

Variante 2 Page 5 sur 5

Vous aimerez peut-être aussi