Cette page est à destination des étudiants du module « Programmation
Orientée Objet » de la brique « Ingénierie des Systèmes Objets » de
l'ENST encadrée par
Akim Demaille et
Geoffroy Fouquier.
On peut joindre ces étudiants par brique-iso-t2
at listes.enst.fr.
Les Sujets
L'environnement de travail
Nous utilisons le compilateur SmartEiffel, autrefois
SmallEiffel. Toutes les informations le concernant sont
diponibles sur le
site de SmartEiffel. En particulier, il y a la
documentation des outils, et
celle de la bibliothèque standard.
Accès au SmartEiffel de mon compte
Ce compilateur est installé sur mon compte. Pour vous en servir, assurez-vous que votre PATH contienne le répertoire ~demaille/SmartEiffel/bin/. Le plus simple consiste à exécuter la commande suivante pour les utilisateurs de bash, zsh ou sh:
SE=~demaille/SmartEiffel
export PATH=$SE/bin:$PATH
export MANPATH=$SE/man:$MANPATH
cp ~demaille/.serc ~
quant à ceux qui en dépit du bon sens utiliseraient encore csh ou tcsh, tapez:
set SE /infres/ir20/irpost/demaille/SmartEiffel
setenv PATH $SE/bin:$PATH
setenv MANPATH $SE/man:$MANPATH
cp ~demaille/.serc ~
N'oubliez pas de lancer
hash -d ou
rehash selon votre shell. Tant que la commande suivante échoue, c'est qu'il y a un problème:
$ compile --version
Version of command "compile" is:
SmartEiffel The GNU Eiffel Compiler, Eiffel tools and libraries
Release 2.0 (Monday september 27th 2004) [Hercule]
Copyright (C), 1994-2002 - INRIA - LORIA - ESIAL UHP Nancy 1 - FRANCE
Copyright (C), 2003-2004 - INRIA - LORIA - IUT Charlemagne Nancy 2 - FRANCE
D.COLNET, P.RIBET, C.ADRIAN, V.CROIZIER F.MERIZEN - SmartEiffel@loria.fr
http://SmartEiffel.loria.fr
Les outils disponibles sont alors :
$ ls $SE/bin
ace_check* compile* pretty* short*
class_check* compile_to_c* print_jvm_class*
clean* finder* READ_ME
Prise en main du compilateur SmartEiffel
Dans un premier temps vous êtes encouragés à essayer de compiler le
programme suivant :
$ cp $SE/tutorial/hello_world.e .
$ cat hello_world.e
class HELLO_WORLD
--
-- The "Hi World program" for SmartEiffel :-)
--
-- To compile type command : compile hello_world
-- Run with command : a.out
--
-- To compile an optimized version type : compile hello_world -boost -O2
--
-- To produce Java bytecode : compile_to_jvm -o hello hello_world
-- To run the Java bytecode : java hello
--
create make
feature
make is
do
io.put_string("Hello World.%N")
end
end -- HELLO_WORLD
$ compile hello_world -o hello_world
$ ./hello_world
Hello World.
Enfin, étudiez et comprenez comment fonctionne l'exemple des tours de
Hanoi :
$ cp -r $SE/tutorial/hanoi .
$ cd hanoi
ATTENTION Emacs & XEmacs
Quelque part dans les fichiers de configuration
d'Emacs à infres, Emacs pense que les fichiers terminant en
.e sont à
chiffrer (i.e., crypter). Bien su^r vous n'avez aucune envie de chiffrer
votre code, puisque vous voulez le donner à lire à (i) vous-me^me,
(ii) votre compilateur, (iii) vos correcteurs... S'il vous demande s'il
faut chiffrer, dites
non.
Pour de'sactiver cette "fonctionnalite'", faites :
M-: (set 'write-file-hooks nil) <RET>
ou`
M-: signifie taper simultane'ment la touche Meta (le losange) et
:,
ou bien d'abord sur
puis :.
Si par défaut vous ne disposez pas du mode Eiffel, alors,
une fois que vous avez lancé X?Emacs, tapez
M-x load-file <RET> ~demaille/SmartEiffel/eiffel.el
Autres outils
Vous allez rapidement avoir besoin de documentation sur les classes standard d'Eiffel ; pour ceci, je vous conseille la documentation bibliothèque standard de SmallEiffel.
Vous allez également vouloir de la documentation sur votre propre application. pour cela, utilisez short. Par exemple, dans votre répertoire de hanoi, exécutez short -plain string ou encore short -plain -short string, et enfin short -plain hanoi.
Notez que la qualité de la documentation donnée par short dépend de votre écriture : les commentaires doivent être convenablement placés etc.
Documentation
- Les notes de cours
- Documentation exte'rieure
Les Rendus
Modalités de rendu
Le sujet se fait par monome. Le travail par groupe est encouragé, mais chaque membre du groupe se doit de démontrer sa compréhension du projet et donc du langage. En particulier, le code identique pour deux personnes n'est pas accepté ; néanmoins du code similaire sera toléré si la ressemblance est déclarée plutôt que découverte. Enfin, aucune similarité dans les rapports ne sera tolérée.
Le rendu se fera sous la forme d'une archive envoyée à <Akim.Demaille@lrde.epita.fr>
et à <Geoffroy.Fouquier@lrde.epita.fr>. Suivre obligatoirement
les ModalitesDeRendu (par courriel).
La date de rendu est fixée au jeudi 16 février midi. Geoffroy Fouquier
enverra alors la liste des projets qui n'ont pas été reçus. Ces derniers
auront jusqu'au vendredi 17 février midi dernier délai.
Ensuite des pénalités sévères seront appliquées (voire juste pas
de correction.)
Vous devez fournir comme documentation :
- Le descriptif du processus de compilation et d'éxecution du programme.
- La description de la hiérarchie.
- Un diagramme UML présentant la hiérarchie des classes utilisées.
- Un ensemble de tests contenant :
- 5 tests fonctionnels.
- 5 tests non fonctionnels.
Les Rendus Reçus
Pour l'instant, les projets reçus sont :
vendredi 17 février 2006, 15:38:08 (UTC+0100)
LOOAST-talatini.tar.gz
LOO_AST-bollengi.tar.gz
LOO_Benoit_RAPEBACH_Final.tar.bz2.tar.bz2
LOO_ROCHE.tar.gz
LooAst-FXHouardDist.tar.gz
LooAst-alouani.tar.gz
LooAst-gelliber.tar.gz
loo-ast-bessaies.tar.gz
loo-ast-oliveira.tar.gz
loo-ast-schittly.tar.gz
loo_ast-hnia.tar.gz
loo_ast-sunderme.tar.gz
loo_ast_sterlin.tar.gz
looast-elazreq.tar.gz
looast-garrigues.tar.gz
looast-hafner.tar.gz
looast-hermes.tar.gz
looast-hess.tar.gz
looast-richea.tar.gz
looast-sarrabez.tar.gz
looast-xzhao.tar.gz
tp-looast-zoukpo.tar.gz
Les Notes
Voir l'un des documents suivants :
-- Main.akim - 20 Jan 2006
to top