Photographie/Fabricants/Walter Voss
La société Walter Voss, installée à Ulm/Donau, en Allemagne, a produit de 1947 à 1957 la série des Diax, appareils à viseur ou à télémètre pour film 35 mm. Le Diax I est un modèle caractéristique : il possédait des objectifs interchangeables, 3 différents viseurs dont la couleur correspondait à la focale utilisée, bleu pour 35 mm, jaune pour 85 ou 90 mm et gris neutre pour 45 ou 50 mm. Les modèles référencés b étaient semblables à ceux référencés a, mais possédaient un levier d'avance rapide du film. Les Diax II, Diax IIa et Diaxette étaient des appareils à télémètre.

Photographie/Fabricants/Schneider-Kreuznach/Schneider-Kreuznach APO-Xenoplan 23 mm f/1,4

Commentaires.
Objectif réalisé spécialement pour les applications industrielles, la vision artificielle, les caméras de surveillance, la métrologie, l'imagerie médicale. Il est prévu pour les capteurs CCD et CMOS de 5 Mpixels de dimensions allant jusqu'à 2/3"

Patrons de conception/Monteur
Le monteur ("builder") est un patron de conception utilisé pour la création d'une variété d'objets complexes à partir d'un objet source. L'objet source peut consister en une variété de parties contribuant individuellement à la création de chaque objet complet grâce à un ensemble d'appels à l'interface commune de la classe abstraite "Monteur".
Un exemple d'objet source est une liste de caractères ou d'images dans un message devant être codé. Un objet directeur est nécessaire pour fournir les informations à propos de l'objet source vers la classe "Monteur". La classe "Monteur" abstraite pourrait être une liste d'appel de l'interface que la classe directeur utilise comme par exemple "handleCharacter()" ou "handleImage()". Chaque version concrète de la classe "Monteur" pourrait implémenter une méthode pour ces appels ou bien simplement ignorer l'information si appelée. Un exemple de monteur concret serait "enigmaBuilder" qui chiffrerait le texte, mais ignorerait les images.
Dans l'exemple précédent, le logiciel va créer une classe "Monteur" spécifique, "enigmaBuilder". Cet objet est passé à un objet directeur simple qui effectue une itération à travers chaque donnée du message principal de l'objet source. La classe monteur crée, incrémentalement, son projet final. 
Finalement, le code principal va demander l'objet final depuis le "Monteur" et ensuite détruire celui-ci et l'objet directeur. Par la suite, si jamais un remplacement de la technique de cryptage de "enigmaBuilder" par une autre se faisait sentir, une nouvelle classe Monteur pourrait être substituée avec peu de changements pour la classe directeur et le code principal. En effet, le seul changement serait la classe "Monteur" actuelle passée en paramètre au directeur.
But : Séparer la construction d'un objet complexe de la représentation afin que le même processus de construction puisse créer différentes représentations.
Diagramme de classes.
La structure des classes du patron de conception Monteur peut être représenté par le diagramme de classes UML suivant :
Exemples.
Java.
/* Produit */
class Pizza
 private String pate = "";
 private String sauce = "";
 private String garniture = "";
/* Monteur */
abstract class MonteurPizza
 protected Pizza pizza;
 public abstract void monterPate();
 public abstract void monterSauce();
 public abstract void monterGarniture();
/* MonteurConcret */
class MonteurPizzaHawaii extends MonteurPizza
/* MonteurConcret */
class MonteurPizzaPiquante extends MonteurPizza
/* Directeur */
class Serveur
 private MonteurPizza monteurPizza;
 public void construirePizza()
 monteurPizza.creerNouvellePizza();
 monteurPizza.monterPate();
 monteurPizza.monterSauce();
 monteurPizza.monterGarniture();
/* Un client commandant une pizza. */
class ExempleMonteur
 public static void main(String[] args)
 Serveur serveur = new Serveur();
 MonteurPizza monteurPizzaHawaii = new MonteurPizzaHawaii();
 MonteurPizza monteurPizzaPiquante = new MonteurPizzaPiquante();
 serveur.setMonteurPizza(monteurPizzaHawaii);
 serveur.construirePizza();
 Pizza pizza = serveur.getPizza();
PHP.
/* Produit */
class Pizza {
 private $_pate = "";
 private $_sauce = "";
 private $_garniture = "";
/* Monteur */
abstract class MonteurPizza {
 protected $_pizza;
 abstract public function monterPate();
 abstract public function monterSauce();
 abstract public function monterGarniture();
/* MonteurConcret */
class MonteurPizzaHawaii extends MonteurPizza {
/* MonteurConcret */
class MonteurPizzaPiquante extends MonteurPizza {
/* Directeur */
class Serveur {
 private $_monteurPizza;
 public void construirePizza() {
 $this->_monteurPizza->creerNouvellePizza();
 $this->_monteurPizza->monterPate();
 $this->_monteurPizza->monterSauce();
 $this->_monteurPizza->monterGarniture();
/* Un client commandant une pizza. */
$serveur = new Serveur();
$monteurPizzaHawaii = new MonteurPizzaHawaii();
$monteurPizzaPiquante = new MonteurPizzaPiquante();
$serveur->setMonteurPizza($monteurPizzaHawaii);
$serveur->construirePizza();
$pizza = $serveur->getPizza();

Patrons de conception/Patrons de structure

Un patron de structure permet de résoudre les problèmes liés à la structuration des classes et leur interface en particulier.
Les différents patrons de structure sont les suivants :

Découvrir le Web/Découvrir le Web social