Analyse/Dérivation
Définition.
formula_10
La définition suivante est souvent utile:
Interprétation.
Interprétation mécanique.
formula_60,
Interprétation chimique.
formula_71 .

Livre de cuisine/Cretons
Le terme cretons désigne une charcuterie proche de la rillette du Mans ou de Connéré, à la différence qu'il est fait de porc haché plutôt qu'avec des morceaux de porc effilochés à la fourchette après cuisson lente au four.

Programmation Lisaac
= Tutorial : Lisaac pour le programmeur objet standard (Java/C++ par exemple) =
Introduction.
Ce document a pour but de faire découvrir la programmation par prototype en Lisaac à quelqu'un ayant l'habitude des langages à classes. Ce n'est pas un document de référence mais un tutorial didactique. Ce n'est pas non plus un document expliquant les principes fondamentaux et les caractéristiques de la programmation orientée prototype.
Le plan est divisé en deux chapitres, le premier présente les notions les plus standards de la programmation objet, le deuxième présente des techniques moins connues voir novatrices. Après cela dépend évidement de l'expérience de chacun des lecteurs en la matière.
Le style narratif du document sera sous forme de question/réponse comme pour une FAQ (Foire aux questions). Mais contrairement aux FAQ vous devez lire toutes les parties dans l'ordre. Notez aussi que le plan utilise le vocable de la programmation objet à classe et le contenu introduit celui de la programmation objet à prototype utilisé dans Lisaac.
Si jamais quelque chose ne vous parait pas clair, ou si jamais vous avez une interrogation sur le pourquoi ou les avantages de Lisaac par rapport à ce que vous êtes habitués n'hesitez pas à modifier directement le document et à rajouter votre question à l'endroit le plus approprié. Néanmoins le document ne doit pas devenir un forum de discussion, vous pouvez utiliser la page dédiée pour cela.
Chapitre 1 : Les notions basiques.
AFAIRE : rajouter kkpart qu'il faut dire (-2) pour les int négatif
Chapitre 3 : Les design-patterns classiques.
A FAIRE : coder et enlever ceux qui ne sont pas réutilisable directement par du code. De plus certain sont triviaux comme Singleton et Prototype, d'autre sont d'un intéret limité par les mécanismes comme l'héritage partagé pour le Poids-mouche.

Lisaac/Prototype
Question : Comment je fait une classe toto ?
Il suffit de créer un fichier toto.li contenant :
 Section Header
 + name := TOTO;
 - category := APPLICATION;
Remarques :
Q : Où sont passées les accolades ou les mots clés de début et de fin de définition de classes ?
Vu qu'il y a un et un seul prototype par fichier nous n'en avons pas vraiment besoin, n'est ce pas ? Par contre il y a à la place une section d'entête décrivant l'identifiant du prototype.
Q: À quoi sert le mot category ?
C'est un petit peu compliqué à expliquer à ce niveau du tutoriel. Disons pour le moment qu'il existe des catégories d'objets que le compilateur ne traitera pas de la même manière. Par exemple un objet peut représenter un dispositif matériel comme une souris, chaque souris aura un et un seul objet MOUSE associé ce qui restreint l'utilisation de l'objet. Alors que les classes que vous écrirez pour vos applications n'auront pas ces caractéristiques.
Les catégories sont une fonctionnalité à utiliser avec IsaacOS. Elles permettent de séparer les privilèges des objets. Les catégories peuvent être :
Selon leur catégorie, les objets ont le droit d'accéder à d'autres objets ou non. Un objet de niveau KERNEL ne pourra utiliser que d'autre objets KERNEL alors qu'un objet niveau APPLICATION peut utiliser n'importe quel objet. Il existe de plus une catégorie DOCILE. Un tel peut être utilisé par n'importe quel objet mais ne peuvent accéder qu'aux objets autorisés pour la catégorie de l'objet qui l'utilise. Ces objets sont généralement des objets de la bibliothèque.
Q: C'est nul ton truc ! J'ai essayé de compiler mais il ne veut pas..
C'est normal, il faut juste attendre quelques sections. En fait cette classe (vide) est correcte mais on ne peut pas la compiler séparément.
Par contre le compilateur n'accepte pour le moment que les sections sous la forme "section HEADER", ce document se base sur la prochaine version du compilateur (0.2). Pensez donc à remplacer dans tous les exemples "Section" par "section" et le nom des sections comme "Header" par "HEADER".

Lisaac/Héritage
Question : Bon comme c'est censé être un langage objet certifié élevé au grain : voyons directement comment hériter d'une classe ? pardon d'un prototype..
Facile (heureusement) il faut rajouter un identifiant dans la section Inherit et lui affecter le nom du prototype. Dans l'exemple suivant j'ai rajouté un héritage vers le parent racine de tous les prototypes le bien nommé : OBJECT.
 Section Header
 + name := TOTO;
 - category := APPLICATION;
 section Inherit
 - parent_object:OBJECT := OBJECT;
Lisaac autorise plusieurs types d'héritages qui seront abordés dans le deuxième chapitre.
L'héritage présenté dans l'exemple ci-dessus est particulier, puisqu'il n'a pas le comportement habituel des langages objet à classes. Pour retrouver ce type de comportement, il faut utiliser la forme suivante :
 Section Inherit
 + heritage_standard:Expanded PROTO_PARENT;
Ce qui dénote un héritage expansé non partagé.
Q : Étrange j'ai l'habitude que la classe racine soit ajoutée automatiquement comme en Java, N'est-ce pas revenir aux problèmes du C++ qui ne proposait pas de classe racine ?
Pas vraiment, le problème principal en C++ venait surtout du fait que la classe Object n'était pas fournie en standard avec les compilateurs. Ici vous devez ajouter le prototype parent Objet à la main mais elle est standard donc pas de soucis. Et en plus vous pouvez adapter le système en utilisant votre propre prototype "Adam" pour des besoin spécifiques.
Q : Et je peux rajouter autant d'héritage que je veux ?
Bien sur lisaac gère l'héritage multiple ! Et vous êtes encouragé à l'utiliser !
Q : Mais je croyais que l'héritage multiple était le MAL et qu'il ne fallait pas l'utiliser. Et même que c'est révélateur d'un mauvaise conception objet !!
Pas du tout cela fait longtemps que l'on sait résoudre les problème du multi-héritage correctement. C'est juste que la solution proposée par C++ est bancale. Et que le l'idée de se restreindre à l'héritage simple + interface multiple (comme en Java,C#,Smalltalk...) règle évidement tous les problèmes mais empêche aussi d'utiliser le concept d'héritage à sa pleine mesure. Sachez enfin que l'héritage multiple ne pose des difficultés que lorsque le graphe d'héritage possède un ou plusieurs cycles (problème du diamant). En dehors de ce cas il n'y a pas vraiment de différence avec l'héritage simple, sauf que c'est plus utile. Et nous parlerons des cas problématiques dans la deuxième partie du tutoriel.
Q : Je trouve cela étrange que l'on doive nommer la relation d'héritage, on dirait une relation d'agrégation !
Oui mais cela n'en est pas une, les relations d'héritage sont nommées c'est tout. Et c'est logique puisque l'on peut en avoir plusieurs, et cela permet aussi d'autres choses que nous verrons plus tard.