Académique Documents
Professionnel Documents
Culture Documents
Cedric.Dumas@emn.fr
contrat Creative Commons Paternit-Pas d'Utilisation CommercialePartage des Conditions Initiales l'Identique 2.0 France License
de dveloppements
Modle en V
Modle en cascade
Modle en Spirale
Modle en Y
Etc...
tude des
Besoins
Maquettage
Architecture
Logicielle
Cahier des
Charges
Scenarii
dutilisation
Programmation
Analyse
de lActivit
Prototypage
Tests
Scenarii de
travail
Diagrammes
(UML)
valuation
Architecture Conceptuelle
Sert
la (retro)conception
Architecture Logicielle
Autrement dit :
directeurs
Une architecture est le rsutat dun processus
Lenvironnement : participants (culture en qualit logicielle, outils, requis
commercial
Finalit dune architecture
Une architecture est un concept dun systme : elle existe bien que non observable
Architecture Logicielle
Bass (1998)
Thearchitectureofacomputingsystemisasetofstructureswhich
comprisesoftwarecomponents,theexternallyvisiblepropertiesofthese
componentsandtherelationshipsamongthem
Autrement dit :
Relations -> connexion -> connecteurs (appel procdural, RMI, socket, etc.)
Composant
Connecteur
Composant
Architecture Conceptuelle
Sert
la (retro)conception
Dmarche :
Dcomposition modulaire
Noyau (Fonctionnel)
Modle (Applicatif)
Fonctions
Objets
Mtier
Services
Notre TP
Notre TP
Interface
JFrame
JMenu
JList
JLabel
JSlider
JPanel
(s)
Modle
ImageLibrary
ImageItem
graphiques
WIMP
Standardisation
de l aspect (look) et du
comportement (feel)
Nouvelle philosophie de programmation
Contrle
utilisateur
Sparation Interface et Noyau fonctionnel
Architectures de type Arch
Architecture Conceptuelle
Sert
la (retro)conception
Sparation entre la smantique et son
utilisation
portabilit (device independant)
rutilisabilit
plusieurs interfaces (flexibilit, plateformes, etc)
Personnalisation (designer, utilisateur)
Communication
entre lapplication et la
prsentation : contrleur de dialogue
3 composants maintenant...
vue de la smantique
qui est fournie pour
linterface
Dialog
Control
Presentation
Component
User
Application
bypass
rguleinterfaces
les communications
Modlise les
jusque 1985
apparence de
entre lapplication et linterface
linterface et E/S
Pas dedusparation
en composant utilisateur
optimisation
feedback
etours visuels,
dessins et
main
leve, etc)
logiques
implmentation
Plus
Contrleur de Dialogue
Adaptateur
Functionnal Core Adapter
(Virtual Application Layer)
Domain Objects
Domaine
Application Functionnal Core
Domain-specific component
application
noyau fonctionnel
Prsentation
Logical Presentation Component
(Virtual Toolkit)
Interaction
Interaction Toolkit Component
Physical Presentation Component
Contrleur de Dialogue
Gestion des vnements
Squencement des actions
Portion de relev
Adaptateur
Relevs de comptes
Noyau Fonctionnel
Application Bancaire
Gestion de comptes
Table de donnes
Prsentation
DefaultTableModel
Interaction
JTable
look & feel
Exemple Calculatrice
Contrleur de Dialogue
Gestion des vnements
Appel des oprations
chiffre
Noyau Fonctionnel
Application Bancaire
Gestion de comptes
Chiffres
Interaction
JButtons
Notre TP
Notre TP
Contrleur de Dialogue
Gestion des vnements
Listeners Swing
Adaptateur
ImageIcon + String
CurrentIndex
Noyau Fonctionnel
ImageLibrary
ImageItem
Prsentation
ImageIcon
JFrame + JPanel
Layout managers
Interaction
JSlider + JList + JMenu + JPanel
look & feel
View
ouput devices
Model
Controller
application semantics
noyau fonctionnel
gestion de linteraction
en entre
input devices
user
Implmentation Classique
MVC en Java
Modle
de faon gnrale :
Observer/Observable dans java.util
MVC dans Swing :
JComponent
= model + delegate
delegate = V + C
Abstraction
Control
MVC en Java ?
Extrait du tutoriel MVC Swing (Sun)
JTextField
(textField)
JTextArea
(textList)
+JScrollPane
textField.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent e)
{
// Append the textField's text to textList
textList.append(textField.getText());
textList.append("\n");
textField.setText(""); // Reset the textField }
}); // ENTER key causes an ActionEvent
MVC en Swing
JTextField
(textField)
JTextArea
(textList)
JTextArea
solutions
(avgField)
listener
listener
listener
MVC
MVC
Class Model
{
int [ ] liste;
void addElement(int)
int getElement(int );
int getAverage();
}
to many
dcoupage
JTextArea
JTextField
Modle
JTextArea
dcoupage
Observer
Observable
Attach(Observer)
Notify()
JTextField
Update()
JTextArea
Modle
setValeur(int)
getValeur()
valeur
JTextArea
Modele dentiers
import java.util.Observable;
public class Exo1Model extends Observable {
public int [ ] liste;
public Exo1Model() { }
Observable
Attach(Observer)
Notify()
Modle
setValeur(int)
getValeur()
valeur
Observer
Update()
JTextArea
Le principal
Observable
Attach(Observer)
Notify()
Observer
Update()