mercredi 21 avril 2010

Design Patterns (I)

Les différents Design Patterns

Creational
Factory : Définit une interface de création d'objet. Permet à la classe de laisser à une sous classe le soin de créer l'objet.
Singleton : Assure que la classe n'a qu'une seule instance et fournit un point d'accès unique à celle-ci.

Structural
Adapter : Convertit l'interface d'un classe en une autre interface attendue par le client. Permet à des classes d'interfaces différentes de travailler ensemble.
Bridge : Découple l'abstraction de l'implémentation ainsi les deux peuvent évoluer de manière indépendante.
Composite : Compose des objets en structure en arbre pour représenter leur hierarchies. Permet au client de s'adresser à des compositions d'objets.
Decorator : Attache des responsabilités additionnelles à un objet de manière dynamique. Le Decorator permet une alternative flexibles à l'utilisation de sous classes pour étendre les fonctionalités.

Behavioral
Interpreter : Donne un langage, défini une représentation de sa grammaire. Interprète les commande d'un langage.
Command : Encapsule les requêtes comme des objets. Laisse la possibilité de paramétrer les clients avec différentes requêtes, queue ou log-request.
Iterator : Fournit un moyen d'accéder aux éléments d'une aggrégation de manière séquentielle.
Strategy : Défini une famille d'algorithme, les encapsule et le rend interchangeable. Permet de faire évoluer les algorithmes suivant l'utilisation du client.
Memento: Sans violer l'encapsulation, capture et externalise les objets et les états internes de l'objet afin de pouvoir le restaurer plus tard.

Règles de construction

- Ne pas confondre héritage de classe et héritage d'interface
Héritage de classe: on passe un objet particulier existant dans les méthodes
Héritage d'interface : la méthode attend un objet répondant à cette interface, l'objet n'est pas signé et peut-être crée au moyen d'un pattern creational.

"Program to an Interface not an implementation"

- Héritage et composition
Il est facile de croire que l'héritage permet une bonne re-usabilité, parfois c'est un leure, la composition permet de mettre en oeuvre des méchanisme plus simple. La composition peut placer une interface sur une colloboration d'objet, ce qui masque la complexité de l'extérieur, l'héritage ne le permet pas.

"Favor object composition over class inheritance"

Sources:Elements of Reusable Object-Oriented Software,
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (GOF)

samedi 17 avril 2010

R (CRAN)

Installation de R sous Linux Debian Lenny


en root taper la commande suivante:

apt-cache search '^r-' \
egrep -v -i '(biologygeneticmap)' \
egrep -v -i sql \
awk '/^r\-/ {print $1}' \
xargs apt-get install --yes

En utilisateur normal taper "R" dans la console, R devrait démarrer.
Complément d'information;
http://www.mayin.org/ajayshah/KB/R/documents/install.html
http://cran.r-project.org/doc/manuals/R-lang.html#Introduction

Importer des données
Le plus simple est sans doute d'importer les données au format texte (.txt). Le fichier commence par un en-tête contenant le nom des colonnes, les colonnes sont séparées par un tab.
On utilise la commande R : read.table()