Click here to load reader

Approche MVC Model-View-Controller · PDF fileApproche MVC Model-View-Controller Taha Zerrouki Taha.zerrouki @ gmail.com Université de Bouira Département Informatique– Matser Génie

  • View
    221

  • Download
    0

Embed Size (px)

Text of Approche MVC Model-View-Controller · PDF fileApproche MVC Model-View-Controller Taha Zerrouki...

  • Approche MVCModel-View-Controller

    Taha ZerroukiTaha.zerrouki @ gmail.com

    Universit de Bouira Dpartement InformatiqueMatser Gnie des systmes Informatiques

    Mthodes et Technologies de limplmentation

    Cours disonible sur http://infobouirauniv.wordpress.com

  • 2

    Dfinition

    Larchitecture MVC (modle, vue et contrleur) est un concept trs puissant qui intervient dans la ralisation dune application.

    Son principal intrt est la sparation : des donnes (modle), de laffichage (vue) et des actions (contrleur).

  • 3

    MVC

  • 4

    Exemple

    On veut crer un carnet des contacts

    Avec une fonctionnalit de recherche

  • 5

    Code en Python

    # Cherche un num dans un tableau par son nomannuaire = [ {'prenom':'Ahmed', 'nom':'Mehdi', 'tel':'0778787887'}, {'prenom':'Mohamed', 'nom':'Rabehi','tel':'0778787887'}, ]def main(): # lire des donnes a partir du clavier print "Recherche d'un telephone" print "Introduire Un nom" nom = raw_input() # nombre d'elements trouvs nb_found = 0 # parcours des noms for personne in annuaire: # afficher toutes les personnes qui ont le nom donn if personne['nom'] == nom: print nom, personne['prenom'], personne['tel'] nb_found += 1 if not nb_found: print "ce nom %s n'existe pas "%nom

    if __name__ == '__main__': main()

  • 6

    Code en Python

    # Cherche un num dans un tableau par son nomannuaire = [ {'prenom':'Ahmed', 'nom':'Mehdi', 'tel':'0778787887'}, {'prenom':'Mohamed', 'nom':'Rabehi','tel':'0778787887'}, ]def main(): # lire des donnes a partir du clavier print "Recherche d'un telephone" print "Introduire Un nom" nom = raw_input() # nombre d'elements trouvs nb_found = 0 # parcours des noms for personne in annuaire: # afficher toutes les personnes qui ont le nom donn if personne['nom'] == nom: print nom, personne['prenom'], personne['tel'] nb_found += 1 if not nb_found: print "ce nom %s n'existe pas "%nom

    if __name__ == '__main__': main()

    Donnes

    Interface

    InterfaceTraitement

  • 7

    MVC

  • 8

    MVC

  • 9

    Avantages du MVC

    Lapproche MVC apporte de rels avantages: Une conception claire et efficace grce la sparation des donnes de

    la vue et du contrleur Un gain de temps de maintenance et dvolution du site Une plus grande souplesse pour organiser le dveloppement entre

    diffrents dveloppeurs (indpendance des donnes, de laffichage (webdesign) et des actions)

  • 10

    Inconvnients

    Linconvnient majeur du modle MVC nest visible que dans la ralisation de petits projets, de sites internet de faible envergure.

    En effet, la sparation des diffrentes couches ncessite la cration de plus de fichiers: Un fichier pour le modle Un fichier pour le contrleur Un fichier pour la vue

    Il nest donc pas trs intressant de recourir ce systme dans ce cas

  • 11

    MVC, comment a marche?

    Larchitecture MVC est donc dcompose en trois tapes:

    1. Le Modle

    2. Le contrleur

    3. La vue

  • 12

    1. Le Modle

    Le modle correspond aux donnes,

    la plupart du temps stockes dans une base de donnes.

    Mais celles-ci peuvent galement tres contenues dans un fichier XML ou dans des fichiers texte.

    Les donnes peuvent tre exploites sous forme de classes, dans un langage de programmation oriente objet (Java, Python, PHP5).

  • 13

    Exemple Modle

    class model: """ classe de modele de donne""" def __init__(self): self.annuaire = [ {'prenom':'Ahmed', 'nom':'Mahdi', 'tel':'0778787887'}, {'prenom':'Mohamed', 'nom':'Mahdi','tel':'0778787887'}, ] def rechercher(self, nom): """ rechecher un tel par nom""" # La liste des personnes trouves return personnes

    Donnes dans un tableau

  • 14

    Exemple Modle

    class model_fichier: """ classe de modele de donne""" def __init__(self): self.annuaire = [] try: myfile = open("annuaire.txt") except: print "Can't open DataFile" sys.exit() lines = myfile.readlines() def rechercher(self, nom): """ rechecher un tel par nom""" . # La liste des personnes trouves return personnes

    Donnes dans Fichier

  • 15

    3. La vue

    la Vue correspond l'interface avec laquelle l'utilisateur interagit.

    Les rsultats renvoys par le modle sont dnus de toute prsentation mais sont prsents par les vues.

    Plusieurs vues peuvent afficher les informations d'un mme modle.

    Elle peut tre conue en html, ou tout autre " langage " de prsentation.

    La vue n'effectue aucun traitement, elle se contente d'afficher les rsultats des traitements effectus par le modle, et de permettre l'utilisateur d'interagir avec elles.

  • 16

    Example

    class view: def __init__(self,): pass def input(self,): """ recuperer le nom rechercher""" print "Recherche d'un telephone" print "Introduire Un nom" nom = raw_input() return nom

    def output(self, personnes): """ afficher les informations d'une liste des personnes""" print "La liste des noms trouvs" print " %d personnes trouves"%len(personnes) for pers in personnes: print pers['nom'], pers['prenom'], pers['tel']

  • 17

    Le Contrleur

    Le contrleur est llment qui va utiliser les donnes pour les envoyer la vue.

  • 18

    Le Contrleur

    Son rle est donc de rcuprer les informations, de les traiter en fonction des paramtres demands par la vue (par

    lutilisateur, exemple: afficher les derniers articles), puis de renvoyer la vue les donnes afin dtre affiches.

  • 19

    Le Contrleur

    Le contrleur peut donc : instancier diffrents objets (classe User, classe Articles, ) qui enverront des requtes vers la base de donnes ou rcupreront des

    donnes XML.

  • 20

    Exemple

    def controleur(): # lire des donnes a partir du clavier

    data_model = model() affichage = view()

    """ rechercher un nom """ # nom = affichage.input() personnes = data_model.rechercher(nom)

    affichage.output(personnes)

  • 21

    Exemple Qutrub

    Python / JAVA

    Text/ SQLITE Android

    Web (html)GUI ( QT)

  • 22

    Example

  • 23

    FrameWork MVC

  • 24

    MVC

  • 25

    Best 4 Top MVC Java-web-framework

    https://zeroturnaround.com/rebellabs/top-4-java-web-frameworks-revealed-real-life-usage-data-of-spring-mvc-vaadin-gwt-and-jsf/

    https://zeroturnaround.com/rebellabs/top-4-java-web-frameworks-revealed-real-life-usage-data-of-spring-mvc-vaadin-gwt-and-jsf/https://zeroturnaround.com/rebellabs/top-4-java-web-frameworks-revealed-real-life-usage-data-of-spring-mvc-vaadin-gwt-and-jsf/

  • 26

    PHP MVC frameworks

  • 27

    PHP MVC frameworks

  • 28

    Python MVC frameworks

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Search related