Module 4 - MVC
Module 4 - MVC
Développons notre
application en
utilisant le pattern
MVC.
Layout
horizontale
Layout Verticale
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical">
<RadioGroup
android:id="@+id/grpRadioSexe"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RadioButton
android:id="@+id/rdHomme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Homme" />
<RadioButton
android:id="@+id/rdFemme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Femme" />
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="horizontal">
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Poids" />
<EditText
android:id="@+id/txtPoids"
android:layout_width="0dp"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="horizontal">
<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Taille" />
<EditText
android:id="@+id/txtTaille"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:inputType="number" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="horizontal">
<TextView
android:id="@+id/textView3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Age" />
<EditText
android:id="@+id/txtAge"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:inputType="number" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="398dp"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="horizontal">
<ImageView
android:id="@+id/ImgSmiley"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<TextView
android:id="@+id/lblIMG"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
https://icones8.fr
https://www.flaticon.com/
https://coolors.co/browser/latest/1/
Modèle : contient les données de l'application et la logique métier. Par exemple, les
comptes des utilisateurs, les produits que vous vendez, un ensemble de photos, etc.
La composante modèle n'a aucune connaissance de l'interface graphique.
Vue : contient tout ce qui est visible à l'écran et qui propose une interaction avec
l'utilisateur. Par exemple, les boutons, les images, les zones de saisie, etc.
Mode
Vue
Controller
N’oubliez pas que MainActivity est une classe d’affichage, don ou on va la mettre ?
Rq : ce sont constantes static parce qu il s’agit des attributs de classe et final pour ne pas
pouvoir les modifier
Les tests unitaires permettant de vérifier le bon fonctionnement d'une partie précise d'un
logiciel ou d'une portion d'un programme.
Rq1 :assertsEquals permet de comparer le retour réel avec une valeur qu’ on a initialisé.
Rappelons que le point de départ de notre application est définis dans le manifest par une
activity. Donc on demarre toujours par une activité qui elle va instancier le controleur.
Mais il faut faire attention car le controleur utilisé dans toute l application doit etre unique.
Le singleton est un patron de conception dont l'objet est de restreindre l'instanciation d'une
classe à un seul objet (ou bien à quelques objets seulement). Il est utilisé lorsque l'on a besoin
d'exactement un objet pour coordonner des opérations dans un système.
Commencer par créer la classe Contrôle dans la package Model et cette classe ne doit
s’instancier qu’une seule fois.
Dans cette classe on va créer une méthode qui va recevoir les informations passés à la
vue :
On fait le lien entre ces propriétés et les objets graphiques dans une méthode init()
Qui sera
Donc si je resume, lorsque OnCreate() est appelé on doit recuperer les champs saisies ( cest la
methode init() )et passer a l évenement de click du bouton (cest la methode onClick() )et si les
champs sont saisie, on appelle une autre methode afficheResultat() qui communique avec le