Vous êtes sur la page 1sur 3

Exercice : Calcul de l'IMC

1. Modèle (Model) :

a. Créez une classe IMCModel qui contiendra les méthodes nécessaires pour le calcul de l'IMC. b. Ajoutez des
attributs dans la classe pour stocker la masse et la taille.

2. Vue (View) :

a. Concevez une interface utilisateur (XML) avec deux champs de saisie (pour la masse et la taille), un bouton
de calcul et un champ de texte pour afficher le résultat de l'IMC. b. Associez la vue à la classe IMCModel pour
obtenir les données nécessaires pour le calcul.

3. Contrôleur (Controller) :

a. Créez une classe IMCController qui agira en tant que pont entre la vue et le modèle. b. Dans le contrôleur,
attachez la vue et le modèle et gérez les interactions utilisateur. c. Implémentez une fonction pour le bouton
de calcul qui récupère les données de la vue, les envoie au modèle pour le calcul de l'IMC, puis met à jour la
vue avec le résultat.

4. Explications étape par étape :

a. Modèle (Model) : - La classe IMCModel doit avoir des méthodes pour le calcul de l'IMC, par exemple
calculateIMC(masse: Double, taille: Double): Double. - Stockez la masse et la taille comme attributs
privés de la classe.

b. Vue (View) : - L'interface utilisateur doit avoir des champs de saisie pour la masse et la taille, un bouton
pour déclencher le calcul, et un champ de texte pour afficher le résultat. - Utilisez des widgets EditText,
Button, et TextView dans le fichier XML de la vue.

c. Contrôleur (Controller) : - La classe IMCController doit être responsable de la gestion des interactions
utilisateur. - Attachez la vue (IMCView) et le modèle (IMCModel) dans le contrôleur. - Implémentez la logique
pour le bouton de calcul, où les données de la vue sont transmises au modèle, et le résultat est ensuite
affiché dans la vue.

Rôle de chaque composant :


 Modèle (Model) : Gère les données et la logique métier. Dans ce cas, il effectue le calcul de l'IMC.
 Vue (View) : Responsable de l'interface utilisateur et de l'affichage des données. Elle communique avec le
contrôleur pour les actions de l'utilisateur.
 Contrôleur (Controller) : Agit comme un intermédiaire entre le modèle et la vue. Il gère les événements
utilisateur, communique avec le modèle pour obtenir les données nécessaires, puis met à jour la vue en
conséquence.

En suivant ce modèle MVC, votre application sera mieux organisée, facile à maintenir et à comprendre. Les
responsabilités sont clairement définies, favorisant la modularité et la réutilisabilité du code.
IMCModel.kt (Modèle) :

class IMCModel {
private var masse: Double = 0.0
private var taille: Double = 0.0

fun setMasse(masse: Double) {


this.masse = masse
}

fun setTaille(taille: Double) {


this.taille = taille
}

fun calculateIMC(): Double {


// Formule de l'IMC : IMC = masse / (taille * taille)
return if (taille != 0.0) masse / (taille * taille) else 0.0
}
}

activity_main.xml (Vue) :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<EditText
android:id="@+id/editTextMasse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Masse (kg)" />

<EditText
android:id="@+id/editTextTaille"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/editTextMasse"
android:layout_marginTop="16dp"
android:hint="Taille (m)" />

<Button
android:id="@+id/btnCalculer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/editTextTaille"
android:layout_marginTop="16dp"
android:text="Calculer IMC" />

<TextView
android:id="@+id/textViewResultat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/btnCalculer"
android:layout_marginTop="16dp"
android:text="Résultat IMC : " />

</RelativeLayout>
MainActivity.kt (Contrôleur) :
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

private lateinit var editTextMasse: EditText


private lateinit var editTextTaille: EditText
private lateinit var btnCalculer: Button
private lateinit var textViewResultat: TextView

private val imcModel = IMCModel()

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

editTextMasse = findViewById(R.id.editTextMasse)
editTextTaille = findViewById(R.id.editTextTaille)
btnCalculer = findViewById(R.id.btnCalculer)
textViewResultat = findViewById(R.id.textViewResultat)

btnCalculer.setOnClickListener {
calculateIMC()
}
}

private fun calculateIMC() {


val masseStr = editTextMasse.text.toString()
val tailleStr = editTextTaille.text.toString()

if (masseStr.isNotEmpty() && tailleStr.isNotEmpty()) {


val masse = masseStr.toDouble()
val taille = tailleStr.toDouble()

imcModel.setMasse(masse)
imcModel.setTaille(taille)

val resultatIMC = imcModel.calculateIMC()


textViewResultat.text = "Résultat IMC : $resultatIMC"
} else {
textViewResultat.text = "Veuillez saisir la masse et la taille."
}
}
}

Vous aimerez peut-être aussi