UML : définitions objet, classe, associations

Classe
Représente la description abstraite d'un ensemble d'objets ayant les mêmes caractéristiques. On dit aussi qu'une classe est un type d'objet.

Objet
C'est une entité définie par une classe. Un objet possède une identité, un état et un comportement. C'est une instance, ou occurrence, d'une classe.


Association
Représente une relation durable entre deux classes.

Par défaut, l'association est bidirectionnel. Cependant, dans le cas où elle n'est pas bidirectionnelle, le trait est remplacé par un flèche ouverte.

La classe B est utilisée par la classe A.

Cardinalité
Aux extrémités d'une association figure peut figurer une indication de cardinalité, ou multiplicité, pour spécifier le nombre d'objets qui peuvent participé à la relation avec l'objet de l'autre extrémité.
0..1Aucune ou une instance
1Une instance exactement
0..* ou *Aucune ou plusieurs instances          
1..*Une instance ou plusieurs (au moins une)      

Agrégation
C'est un cas particulier d'association, non symétrique, c'est-à-dire qu'elle exprime une relation de contenance. On utilise un losange vide du côté de la classe qui initie la relation.
Une instance de la classe proche de ce losange "contient" une ou plusieurs instances de la classe en relation.
- Un panier peut avoir plusieurs articles.
- Un type d'article peut appartenir à plusieurs paniers.

Autre définition
Une relation d'agrégation indique un principe de subordination entre l'agrégat et les agrégées. Ici, l'agrégat est la classe qui regroupe les classes agrégées. Elle indique une "possession" : l'agrégat peut contenir plusieurs objets d'un même type. Par exemple, une classe Panier peut contenir un ou plusieurs objets de type Article.
Une agrégation veut dire:
- une classe (l'agrégée) fait d'une autre (l'agrégat)
- un changement d'état de l'agrégée entraîne un changement de l'agrégat
- de même, une action sur l'agrégée entraîne une action sur  l'agrégat
- un objet agrégé peut appartenir à plusieurs agrégats
- les deux objets de la relation peuvent exister indépendamment l'un de l'autre. La suppression de l'un n’entraîne pas la supression de l'autre.

Composition
C'est un agrégat plus fort (aussi appelée agrégation forte). On utilise un losange plein du côté de la classe qui initie la relation.
Une composition entre les classes A et B signifie que:
- Un instance de B ne peut appartenir qu'à une seule instance de A
- Les objets agrégés sont totalement dépendants de l'agrégat
- B ne peut exister sans A

JavaEE et modèle 3 couches

Le modèle d’application JavaEE repose sur une division des tâches en différentes éléments.
De fait, cette division est d’abord imposée par l’architecture physique de l’application. Lorsque l’on parle de “tiers” (i.e. application n-tiers), on parle de l’architecture technique. En divisant l’application en “tiers”, on répartit les composants applicatifs (et leur charge) sur plusieurs machines/serveurs.
Sur cette division s’appuie l’architecture n-couches, qui elle, découpe l’application de façon logique, en isolant les éléments selon leur tâche.

Dans une architecture en couche, les données circulent de façon linéaire entre la couche de présentation et la couche de données (et vis-versa). La règle du modèle à 3 couches est que le client (couche présentation) ne communique jamais avec la couche d’accès aux données.  Chaque couche est interfacée  avec la couche adjacente, et toutes les communications sont bidirectionnelles et passent toujours par la couche intermédiaire.

Spring MVC - @RequestMapping

Exemple @RequestMapping



Class
Method
Description

@RequestMapping
(value="/order.htm")
Maps to all requests on the order.htm
URL.
@RequestMapping
("/order.htm")
@RequestMapping
(method=RequestMethod.GET)
Maps to all GET requests to the order.html URL.
@RequestMapping
("/order.*")


@RequestMapping
(method={RequestMethod.PUT,
RequestMethod.POST})
Maps to all PUT and POST requests to the order.* URL. * means any suffix
or extension such as .htm, .doc, .xls, and so on.
@RequestMapping
(value="/customer.htm",
consumes="application/json")

@RequestMapping
(produces="application/xml")
Maps to all requests that post JSON and accept XML as a response.

@RequestMapping
(value="/order.htm")


@RequestMapping
(params="add-line",
method=RequestMethod.POST)
Maps to all POST requests to the order.htm URL that include an addline parameter.
@RequestMapping
(value="/order.htm")

@RequestMapping
(headers="!VIA")
Maps to all requests to the order.htm URL that don’t include a VIA HTTP
Header.


Les modificateurs

Les modificateurs d'accès

Un modificateur indique si les autres classes de l'application pourront accéder ou non à la classe / méthode / membre (appelé par la suite « item »). Il  permet de contrôler la visibilité des différents items et d'empêcher que des actions illégales soient effectuées sur les items.

- public : toutes les classes peuvent accéder à l'item
- protected : seules les classes dérivées et les classes du même package peuvent accéder à l'item
- private : l'item est seulement accessible depuis l'intérieur de la classe où il est défini.
- (par défaut) : sans modificateur d'accès, seules les classes du même package peuvent accéder à l'item.