Download - Schema Beans. Langage temperature Schema temperature Publié par Lance Fontaine, Modifié il y a 8 ans
Schema Beans
Langage temperature
Schema temperature
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace=”temperature" xmlns="temperature" elementFormDefault="qualified">
<xsd:element name="temperature" type="Temperature"/>
<xsd:complexType name="Temperature"> <xsd:sequence> <xsd:element name="min" type="xsd:int"/> <xsd:element name="max" type="xsd:int"/> </xsd:sequence> </xsd:complexType>
</xsd:schema>
Document instance XML
<temperature xmlns='temperature' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='temperature temperature.xsd'>
<min>3</min><max>12</max>
</temperature>
•Une classe, tout comme un schéma est un modèle
•A partir d’une classe, on peut créer des objets instance, tout comme à partir d’un schéma on peut créer des documents instance
Classes
Structure d’une classe
ChampsConstructeurMéthodes Une classe Temperature doit se trouver
dans un fichier de nom Temperature.java
Classes
Champs
Méthodes
Le constructeur est une méthode servant à créer des objets à partir du modèle. Le nom du constructeur est celui de la classe
new
Objets
•Conformes au modèle décrit dans la classe
•Offrent les méthodes décrites dans la classe
•Ont les champs décrits dans la classe
Programme Java
JVM
Main new
Démarrage du programme par “java Main”. Java désigne la machine virtuelle
•Nous allons voir 3 formes de classes équivalentes au schéma temperature
•Champs public avec accés direct
•Champs privés avec accés par méthodes get/set:
•Méthodes déclarées localement
•Méthodes publiées dans une interface
Classes Java
Champs public avec accés direct
Classe Temperature
public class Temperature {//champs public int min; public int max;//constructeur public Temperature { }}
Champs public: accés direct aux valeurs
Utilisationpublic class Main {
public Main() { }
public static void main(String args[]) { Temperature t = new Temperature(); t.min = 6 ; t.max = 22 ; double m = (t.min + t.max)/2.0; }
}
accés direct aux valeurs
utilisation du constructeur
Champs privés avec accés par méthodes get/set
méthodes déclarées localement
get/set
| get sert à retirer une copie de la valeur| set sert à déposer une valeur
(effacement de l’ancienne)
get/set sont des méthodes permettant l’accés aux champs losrque ceux-ci ne sont pas public
Bean Temperaturepublic class Temperature {//champs private int min; private int max;//constructeur public Temperature { }//methodes d’acces public int getMin() { return min; } public int getMax() { return max; }//methodes de mutation public void setMin(int m) {min=m;} public void setMax(int m) {max=m;}}
Une bean est une classe qui a des méthodes set/get d’accés aux champs
Utilisationpublic class Main {
public Main() { }
public static void main(String args[]) { Temperature t = new Temperature(); t.setMin(6) ; t.setMax(22) ; double m = (t.getMin() + t.getMax())/2.0; }
}
Champs privés avec accés par méthodes get/set méthodes publiées
dans une interface
Interfaces| Une interface est un contrat | Une interface est un engagement
de fournir les méthodes dont la liste se trouve dans le contrat
Interface Temperature
public interface Temperature {
//methodes d’acces public int getMin(); public int getMax();
//methodes de mutation public void setMin(int m); public void setMax(int m);
}
Les interfaces sont des contrats entre un producteur de classes et un utilisateur de classes
Bean TemperatureImpl
public class TemperatureImpl implements Temperature { private int min; private int max; public TemperatureImpl() { }
//méthodes d’accés public int getMin() { return min; } public int getMax() { return max; }
//méthodes de mutation public void setMin(int m) { min = m; } public void setMax(int m) { max = m; } }
Con
tra
tre
mp
li
Utilisationpublic class Main {
public Main() { }
public static void main(String args[]) { Temperature t = new TemperatureImpl(); t.setMin(6) ; t.setMax(22) ; double m = (t.getMin() + t.getMax())/2.0; } }
Seule modification
Interfaces
•Evolution dans le temps
•Changement de l’implementation sans remise en cause du code client
•Masquage d’une implémentation
•Modularité
•une classe peut implémenter plusieurs interfaces
Beans & UML
Beans: get/set
•Les beans sont des classes Java particulières
•Containeurs de données
•Accés aux données par des méthodes de nom getNomDeLaDonnée
•Modification des valeurs par des méthodes de nom setNomDeLaDonnée
Représentation UML
- pour private
+ pour public
Cas d’une “bean” sans interface
Représentation UML
- pour private
+ pour public
Cas d’une “bean” avec interface
Equivalence Types simples
xsd:string java.lang.Stringxsd:integer java.math.BigIntegerxsd:int intxsd.long longxsd:short shortxsd:decimal java.math.BigDecimalxsd:float floatxsd:double doublexsd:boolean booleanxsd:byte bytexsd:QName javax.xml.namespace.QNamexsd:dateTime java.util.Calendarxsd:base64Binary byte[]xsd:hexBinary byte[]xsd:unsignedIn longxsd:unsignedShort intxsd:unsignedByte shortxsd:time java.util.Datexsd:date java.util.Datexsd:anySimpleType java.lang.String
Des types simples xsd deviennent des types complexes Java
Le nom d’un type complex Java (classe)
commence toujours par une majuscule
Documents & Objets
new
documents Objets
Document instance XML
<temperature xmlns='temperature' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='temperature temperature.xsd'>
<min>3</min><max>12</max>
</temperature>
•Création directe par new
•Création indirecte par une fabrique d’objets
Création d’un objet
Création directepublic class Main {
public Main() { }
public static void main(String args[]) { Temperature t = new Temperature(); t.min = 6 ; t.max = 22 ; double m = (t.min + t.max)/2.0; }
}
Pattern ObjectFactory
•public class Main {• public static void main(String[] args) {
• Temperature t = ObjectFactory.createTemperature();
• t.setMin(3) ;• t.setMax(34) ;
• }•}// end class
Programme Java
JVM
Main
ObjectFactory
new
new
Démarrage du programme par “java Main”. Java désigne la machine virtuelle
Temperature