Ajoutd es fichiers

This commit is contained in:
Klafyvel 2018-04-01 14:34:28 +02:00
commit e7a9b1a7cf
28 changed files with 1610 additions and 0 deletions

233
.gitignore vendored Normal file
View file

@ -0,0 +1,233 @@
# Created by https://www.gitignore.io/api/latex
### LaTeX ###
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
*Notes.bib
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.pre
*.snm
*.vrb
# changes
*.soc
# cprotect
*.cpt
# elsarticle (documentclass of Elsevier journals)
*.spl
# endnotes
*.ent
# fixme
*.lox
# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.gtex
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Comment the next line if you want to keep your tikz graphics files
*.tikz
*-tikzDictionary
# listings
*.lol
# makeidx
*.idx
*.ilg
*.ind
*.ist
# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*
# minted
_minted*
*.pyg
# morewrites
*.mw
# nomencl
*.nlo
# pax
*.pax
# pdfpcnotes
*.pdfpc
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# todonotes
*.tdo
# easy-todo
*.lod
# xindy
*.xdy
# xypic precompiled matrices
*.xyc
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# Kile
*.backup
# KBibTeX
*~[0-9]*
# auto folder when using emacs and auctex
/auto/*
# expex forward references with \gathertags
*-tags.tex
### LaTeX Patch ###
# glossaries
*.glstex
# End of https://www.gitignore.io/api/latex

BIN
CSLogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

169
MyPack2.sty Normal file
View file

@ -0,0 +1,169 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{MyPack2}
%%%%%%%% INCLUSIONS GÉNÉRALES %%%%%%%%%
\RequirePackage{babel}
%\RequirePackage{titlesec}
\RequirePackage{color}
%\RequirePackage[a4paper]{geometry}
\RequirePackage[font=small,format=plain,labelfont=bf,up,
textfont=normal,up,
justification=justified,
singlelinecheck=false]{caption}
\RequirePackage[justification=centering]{caption}
\RequirePackage{xcolor} % Required for specifying custom colours
\definecolor{grey}{rgb}{0.9,0.9,0.9} % Colour of the box surrounding the title
\RequirePackage[utf8]{inputenc} % Required for inputting international characters
\RequirePackage[T1]{fontenc}
% \RequirePackage[sfdefault]{ClearSans} % Use the Clear Sans font (sans serif)
\RequirePackage{placeins}
\RequirePackage{listings}
\RequirePackage{graphicx}
\RequirePackage{amsfonts}
\definecolor{defaultColor}{RGB}{0,100,143}
\definecolor{bleu}{RGB}{0,100,143}
\definecolor{gris}{RGB}{130,130,140}
\definecolor{grisBleu}{RGB}{65,115,141}
%%%%%%%% MATH %%%%%%%%%
\RequirePackage{stmaryrd}
\newcommand*\intervalleEntier[2]{\intervalle{\llbracket}{#1}{#2}{\rrbracket}}
\newcommand*\intervalle[4]{\left#1 #2 \, ; #3 \right#4}
\newcommand*\intervalleOO[2]{\intervalle{]}{#1}{#2}{[}}
\newcommand*\intervalleFF[2]{\intervalle{[}{#1}{#2}{]}}
\newcommand*\intervalleOF[2]{\intervalle{]}{#1}{#2}{]}}
\newcommand*\intervalleFO[2]{\intervalle{[}{#1}{#2}{[}}
\let\ensembleNombre\mathbb
\newcommand*\N{\ensembleNombre{N}}
\newcommand*\Z{\ensembleNombre{Z}}
\newcommand*\Q{\ensembleNombre{Q}}
\newcommand*\R{\ensembleNombre{R}}
\newcommand*\C{\ensembleNombre{C}}
\newcommand*\enstq[2]{\left\{#1,\; #2\right\}}
%\newcommand*\int[1]{\left\lfloor #1\right\rfloor}
%\newcommand*\norme[1]{\left\lVert#1\right\rVert}
%\newcommand*\abs[1]{\left\lvert#1\right\rvert}
\let\vecteur\overrightarrow
\newcommand*\Sys[1]{\left\{ \begin{aligned} #1 \end{aligned} \right. \kern-\nulldelimiterspace}
\newcommand*\application[5]{
#1 \colon
\begin{alignedat}{2} &#2 &\to &#3\\
&#4 &\mapsto &#5
\end{alignedat}
}
\newcommand*\applicationSigne[3]{
#1 \colon #2 \to #3
}
\newtheorem{defi}{Définition}[section]
\newtheorem{theo}{Théorème}[section]
\newtheorem{prop}{Proposition}[section]
\newtheorem{ex}{Exemple}[section]
%%%%%%%% SECTIONNEMENT %%%%%%%%%
%\renewcommand{\thesection}{\Roman{section}}
%\renewcommand{\thesubsection}{\arabic{subsection}}
%\renewcommand{\@seccntformat}[1]{
% \llap{
% \textcolor{defaultColor}{\csname the#1\endcsname}
% \hspace{1em}
% }
%}
%\renewcommand{\section}{
% \@startsection{section}{1}{0pt}
% {0pt}
% {0pt}
% {\normalfont\large\bfseries\llap}
%}
\newcommand*\emptyPage{\newpage\null\thispagestyle{empty}\addtocounter{page}{-1}\newpage}
%%%%%%%% INTIALISATION DE LA PAGE %%%%%%%%%
\RequirePackage{fancyhdr}
\newcommand\initPage[3]{
\pagestyle{fancy}
\fancyhead{#1}
\lhead{#2}
\rhead{#3}
\rfoot{}
\lfoot{\includegraphics[scale=0.2]{CSLogo}}
%\titleformat*{\section}{\Large\bfseries\color{bleu}\Roman{section}}
%\titleformat*{\subsection}{\large\bfseries\color{grisBleu}}
%\titleformat*{\subsubsection}{\bfseries\color{gris}}
%\titlespacing*{\section}{-3em}{*1}{*1}
%\titlespacing*{\subsection}{-2em}{*1}{*1}
%\titlespacing*{\subsubsection}{-1em}{*1}{*1}
}
%%%%%%%% TITRE %%%%%%%%M
\renewcommand{\maketitle}{
\begin{titlepage} % Suppresses displaying the page number on the title page and the subsequent page counts as page 1
%------------------------------------------------
% Grey title box
%------------------------------------------------
\topskip0pt
\vspace*{5cm}
\colorbox{grey}{
\parbox[t]{0.93\textwidth}{ % Outer full width box
\parbox[t]{0.91\textwidth}{ % Inner box for inner right text margin
\raggedleft % Right align the text
\fontsize{72pt}{80pt}\selectfont % Title font size, the first argument is the font size and the second is the line spacing, adjust depending on title length
\vspace{1cm} % Space between the start of the title and the top of the grey box
\@title
\vspace{1cm} % Space between the end of the title and the bottom of the grey box
}
}
}
\vfill % Space between the title box and author information
%------------------------------------------------
% Author name and information
%------------------------------------------------
\parbox[t]{0.93\textwidth}{ % Box to inset this section slightly
\raggedleft % Right align the text
\large % Increase the font size
{\Large \@author}\\[4pt] % Extra space after name
\hfill\rule{0.2\linewidth}{1pt}\\% Horizontal line, first argument width, second thickness
\@date
}
\end{titlepage}
\emptyPage
}
%%%%%%%% FIN DU DOCUMENT %%%%%%%%%
\newcommand{\roadMap}{
\clearpage
\listoffigures
\clearpage
\listoftables
}
% Fin du package
\endinput

BIN
complementaire.pdf Normal file

Binary file not shown.

53
complementaire.tex Normal file
View file

@ -0,0 +1,53 @@
\include{macroTL}
\title{Génie logiciel \\ -- \\TD4 - Questions complémentaires}
\author{\bsc{Pietri} Yoann (A11)\\\bsc{Levy--Falk} Hugo (A11)}
\date{Mars 2018}
\usepackage{mathrsfs}
\usepackage{MyPack2}
\usepackage{pdftexcmds}
\usepackage{minted}
\begin{document}
\maketitle
\initPage{TL de Génie Logiciel}{\today}{\bsc{Pietri} Yoann, \bsc{Levy--Falk} Hugo}
\tableofcontents
\newpage
\section{lecture dans un fichier et transformation d'une chaîne de caractères}
Classe \mintinline{java}{Utilitaire} :
\inputminted{java}{questioncomplementaire/Utilitaire.java}
\section{Codage complet des classes Morse et Cesar}
\subsection{Classe \mintinline{java}{Cesar}}
\inputminted{java}{questioncomplementaire/Cesar.java}
\subsection{Classe \mintinline{java}{Morse}}
\inputminted{java}{questioncomplementaire/Morse.java}
\section{Mesure des temps d'exécution}
Classe \mintinline{java}{Comparateur} :
\inputminted{java}{questioncomplementaire/Comparateur.java}
\section{Utilisation d'un patron pour ajouter un algorithme existant}
Classe \mintinline{java}{CodageAClef} :
\inputminted{java}{questioncomplementaire/CodageAClef.java}
\section{Codage d'Huffman}
Classe \mintinline{java}{Huffman} :
\inputminted{java}{questioncomplementaire/Huffman.java}
\section{Documentation}
\subsection{Classe \mintinline{java}{Noeud}}
\inputminted{java}{questioncomplementaire/Noeud.java}
\subsection{Classe \mintinline{java}{Arbre}}
\inputminted{java}{questioncomplementaire/Noeud.java}
\subsection{Classe \mintinline{java}{HuffmanCode}}
\inputminted{java}{questioncomplementaire/Noeud.java}
\section{Sauvegarde des résultats}
Voir la classe \mintinline{java}{Comparateur} dans la section "Mesure des temps d'exécution".
\end{document}

BIN
compteRendu.pdf Normal file

Binary file not shown.

60
compteRendu.tex Normal file
View file

@ -0,0 +1,60 @@
\include{macroTL}
\title{Génie logiciel \\ -- \\TD4}
\author{\bsc{Pietri} Yoann (A11)\\\bsc{Levy--Falk} Hugo (A11)}
\date{Mars 2018}
\usepackage{mathrsfs}
\usepackage{MyPack2}
\usepackage{pdftexcmds}
\usepackage{minted}
\begin{document}
\maketitle
\initPage{TL de Génie Logiciel}{\today}{\bsc{Pietri} Yoann, \bsc{Levy--Falk} Hugo}
\tableofcontents
\newpage
\section{Lecture d'une chaîne de caractères dans un fichier}
Le mot clé \mintinline{java}{static} permet d'appeler la méthode \mintinline{java}{lireTexte} sans avoir besoin d'instancier d'objet de la classe \mintinline{java}{Utilitaire}.
Code source de la classe Comparateur :
\inputminted{java}{td4/question1/comparateur.java}
\section{Implémentation de l'architecture logicielle}
\subsection{Code source de la classe \mintinline{java}{Comparateur}}
\inputminted{java}{td4/question2/Comparateur.java}
\subsection{Code source de la classe \mintinline{java}{AlgoCodage}}
\inputminted{java}{td4/question2/AlgoCodage.java}
\subsection{Code source de la classe \mintinline{java}{Cesar}}
\inputminted{java}{td4/question2/Cesar.java}
\section{Utilisation d'un patron pour ajouter un algorithme existant}
Les classe \mintinline{java}{EncodeurAClef} ne possède pas les méthodes \mintinline{java}{encode} et \mintinline{java}{décode}, mais possède des méthodes \mintinline{java}{chiffre} et \mintinline{java}{déchiffre}. De plus il n'hérite pas de \mintinline{java}{AlgoCodage}. La solution est d'utiliser le patron adaptateur.
La figure \ref{fig:rationalrose} montre le diagramme \bsc{UML} de l'application.
\begin{figure}[h!]
\centering
\includegraphics[width=0.7\linewidth]{td4/question3/rational_rose}
\caption{Diagramme UML}
\label{fig:rationalrose}
\end{figure}
Le code à ajouter dans la classe comparateur est alors:
\begin{minted}{java}
algoAComparer.add(new AdapteEncodeurAClef("mon secret"));
algoAComparer.add(new AdapteEncodeurAClef(""));
\end{minted}
\section{Tests unitaires pour codage d'Huffman}
Code source de la classe \mintinline{java}{ArbreTest} :
\inputminted{java}{td4/question4/ArbreTest.java}
\section{Documentation}
Code source de la classe Feuille :
\inputminted{java}{td4/question5/Feuille.java}
\clearpage
\listoffigures
\end{document}

40
macroTL.tex Normal file
View file

@ -0,0 +1,40 @@
%%% Macro TL
%% Documentclass
\documentclass[a4paper,titlepage]{article}
%% Packages
% Caractères et encodage
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage{amsmath,amsfonts,amssymb}
% Tikz
\usepackage{tikz}
%\usepackage{tkz-tab}
% Pour les circuits électriques
%\usepackage{cir­cuitikz}
% Pour les figures
\usepackage{float}
% Pour les tableaux
\usepackage{tabularx}
% Pour les unités
\usepackage{siunitx}
% Geometrie
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
% Pour le code
\usepackage{moreverb}
% Pour les couleurs
\usepackage{colortbl}
%% Commandes utiles
\usepackage{fancyhdr}
\pagestyle{fancy}

View file

@ -0,0 +1,19 @@
package questioncomplementaire;
public abstract class AlgoCodage {
protected String nom;
public abstract String encode(String s);
public abstract String decode(String s);
public String getNom() {
return nom;
}
@Override
public abstract String toString();
}

View file

@ -0,0 +1,82 @@
package questioncomplementaire;
import java.util.ArrayList;
import java.util.PriorityQueue;
public abstract class Arbre implements Comparable<Arbre> {
final int frequence;
/**
* @param frequence fréquence cumulée des feuilles de l'arbre
*/
public Arbre(int frequence) {
this.frequence = frequence;
}
/**
* @param s chaîne encodée dans l'arbre
* @return un arbre des fréquences d'occurence des lettres de la chaîne
*/
public static Arbre buildTree(String s) {
// tableau de fréquence des caractères
// indexé par le code du caractère
// pour simplifier on fait l'hypothèse qu'aucun code n'est supérieur à 256
int[] frequenceCaracteres = new int[256];
// parcourt la chaine génératrice et compte la fréquence de chaque caractère
for (char c : s.toCharArray())
frequenceCaracteres[c]++;
// liste des éléments
PriorityQueue<Arbre> lesElements = new PriorityQueue<Arbre>();
// au départ on a un ensemble d'arbres réduits chacun à feuille, une pour chaque caractère de la chaine génératrice, non reliés
//for (int i = 0; i < frequenceCaracteres.length; i++)
for (int i = 0; i < frequenceCaracteres.length ; i++)
if (frequenceCaracteres[i] > 0)
lesElements.offer(new Feuille(frequenceCaracteres[i], (char) i));
// on assemble les arbres petit à petit
// on arrête d'itérer lorsqu'il n'y a plus d'une seule racine
while (lesElements.size() > 1) {
// sélectionne les 2 arbres avec la fréquence la plus basse et les retire de la liste
Arbre a = lesElements.poll();
Arbre b = lesElements.poll();
// assemble les 2 arbres retirés et place le nouvel arbre en queue
lesElements.offer(new Noeud(a, b));
}
return lesElements.poll();
}
// établit une relation d'ordre sur les arbres
public int compareTo(Arbre tree) {
return frequence - tree.frequence;
}
/**
* @param prefixe chaîne constituant le préfixe des codes
* @return la liste des codes de Huffman pour chacune des feuilles de l'arbre
*/
public ArrayList<HuffmanCode> collectCodes(StringBuffer prefixe) {
ArrayList<HuffmanCode> lesCodes = new ArrayList<HuffmanCode>();
if (this instanceof Feuille) {
Feuille leaf = (Feuille) this;
lesCodes.add(new HuffmanCode(leaf.lettre, prefixe.toString()));
} else if (this instanceof Noeud) {
Noeud node = (Noeud) this;
// traverse le fils gauche
prefixe.append('0');
lesCodes.addAll(node.filsGauche.collectCodes(prefixe));
prefixe.deleteCharAt(prefixe.length() - 1);
// traverse le fils droit
prefixe.append('1');
lesCodes.addAll(node.filsDroit.collectCodes(prefixe));
prefixe.deleteCharAt(prefixe.length() - 1);
}
return lesCodes;
}
}

View file

@ -0,0 +1,38 @@
package questioncomplementaire;
public class Cesar extends AlgoCodage{
private int decalage;
private String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public Cesar(int decalage){
this.nom = "César";
this.decalage = decalage;
}
@Override
public String toString() {
return "codage de César (décalage=" + decalage + ")";
}
@Override
public String encode(String s) {
String encode = "";
for(int i=0;i<s.length();i++){
encode += alphabet.charAt((decalage +
alphabet.indexOf(s.charAt(i)))%alphabet.length());
}
return encode;
}
@Override
public String decode(String s) {
String decode = "";
int index;
for(int i=0; i<s.length(); i++) {
index = (alphabet.indexOf(s.charAt(i))-decalage) % alphabet.length();
index += (index<0)?alphabet.length():0;
decode += alphabet.charAt(index);
}
return decode;
}
}

View file

@ -0,0 +1,39 @@
package questioncomplementaire;
import chiffrement.EncodeurAClef;
public class CodageAClef extends AlgoCodage {
EncodeurAClef encodeur;
String clef;
public CodageAClef(String clef) {
if(clef.equals(""))
this.clef = "clef par défaut";
else
this.clef = clef;
try {
encodeur = new EncodeurAClef(this.clef);
} catch (Exception e) {
System.out.println("Échec de la création de l'encodeur");
e.printStackTrace();
}
}
@Override
public String encode(String s) {
return encodeur.chiffre(s);
}
@Override
public String decode(String s) {
return encodeur.dechiffre(s);
}
@Override
public String toString() {
return "codage à clef (clef = \"" + clef + "\")";
}
}

View file

@ -0,0 +1,58 @@
package questioncomplementaire;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
public class Comparateur {
public static void main(String[] arg) {
PrintWriter out;
try {
out = new PrintWriter("resultats.txt");
} catch (FileNotFoundException e) {
System.out.println("Impossible d'ouvrpour les résultats.");
e.printStackTrace();
return;
}
int TAILLE_EXTRAIT = 50;
String texteClair = Utilitaire.lireTexte("texte1.txt");
out.println("début du texte original : "
+ texteClair.substring(0, Math.min(50, texteClair.length())));
texteClair = Utilitaire.getLettres(texteClair);
out.println("texte après `getLettres` : "
+ texteClair.substring(0, Math.min(50, texteClair.length())));
ArrayList<AlgoCodage> algoAComparer = new ArrayList<AlgoCodage>();
algoAComparer.add(new Cesar(3));
algoAComparer.add(new Morse());
algoAComparer.add(new Cesar(10));
algoAComparer.add(new CodageAClef("mon secret"));
algoAComparer.add(new CodageAClef(""));
algoAComparer.add(new Huffman(texteClair));
String encodee = "";
for (AlgoCodage algo : algoAComparer) {
out.println("algorithme : " + algo.toString());
long avant = System.currentTimeMillis();
encodee = algo.encode(texteClair);
long apres = System.currentTimeMillis();
long duree = apres - avant;
out.println("\tencodage : "
+ "\t durée : "
+ duree
+ "\t résultat : "
+ encodee.substring(0, Math.min(50, encodee.length())));
avant = System.currentTimeMillis();
String decodee = algo.decode(encodee);
apres = System.currentTimeMillis();
duree = apres - avant;
out.println("\tdécodage : "
+ "\t durée : "
+ duree
+ "\t résultat : "
+ decodee.substring(0, Math.min(50, decodee.length())));
}
out.close();
}
}

View file

@ -0,0 +1,37 @@
package questioncomplementaire;
/**
* @author galtier
*
* Cette classe représente une feuille d'un arbre de Huffman.
*
*/
public class Feuille extends Arbre {
final char lettre;
/**
* @param frequence nombre d'occurences de cette lettre dans le générateur
* @param lettre caractère dont on compte le nombre d'occurences
*/
public Feuille(int frequence, char lettre) {
super(frequence);
this.lettre = lettre;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Feuille other = (Feuille) obj;
if ((lettre != other.lettre) || (this.frequence != other.frequence))
return false;
return true;
}
}

View file

@ -0,0 +1,54 @@
package questioncomplementaire;
import java.util.ArrayList;
public class Huffman extends AlgoCodage {
private String generatrice;
private ArrayList<HuffmanCode> codes;
private Arbre arbre;
public Huffman(String generatrice) {
this.generatrice = generatrice;
arbre = Arbre.buildTree(generatrice);
codes = arbre.collectCodes(new StringBuffer(""));
}
@Override
public String encode(String s) {
String encode = s;
for (HuffmanCode huffmanCode : codes) {
encode = encode.replaceAll(
String.valueOf(huffmanCode.lettre), huffmanCode.code);
}
return encode;
}
@Override
public String decode(String s) {
String decode = "";
Arbre current = arbre;
for (int i=0; i<s.length(); i++) {
if(current instanceof Feuille) {
decode += ((Feuille) current).lettre;
current = arbre;
}
if(current instanceof Noeud) {
if(s.charAt(i) == '0')
current = ((Noeud)current).filsGauche;
else
current = ((Noeud)current).filsDroit;
}
}
return decode;
}
@Override
public String toString() {
return "Huffman (génératrice = "
+ generatrice.substring(0, Math.min(50, generatrice.length()))
+ ")";
}
}

View file

@ -0,0 +1,24 @@
package questioncomplementaire;
/**
* @author galtier
*
* cette classe représente un code de Huffman
*/
public class HuffmanCode {
char lettre;
String code;
/**
*
* @param lettre caractère à encoder
* @param code code représentant le caractère donné
*/
public HuffmanCode(char lettre, String code) {
super();
this.lettre = lettre;
this.code = code;
}
}

View file

@ -0,0 +1,51 @@
package questioncomplementaire;
import java.util.HashMap;
public class Morse extends AlgoCodage{
private String[] alphabet;
private HashMap<String, String> decoder;
public Morse(){
this.nom = "Morse";
alphabet = new String[] {
".-", "-...", "-.-.", "-..", ".", "..-.",
"--.", "....", "..", ".---", "-.-", ".-..",
"--", "-.", "---", ".--.", "--.-", ".-.",
"...", "-", "..-", "...-", ".--", "-..-",
"-.--", "--.."
};
decoder = new HashMap<String, String>();
int a = 65;
for (int i = 0; i < alphabet.length; i++) {
decoder.put(alphabet[i], String.valueOf((char)(a+i)));
}
}
@Override
public String toString() {
return "Morse";
}
@Override
public String encode(String s) {
String encode = "";
int a = 65; // Code ASCII de A
for (int i = 0; i < s.length(); i++) {
encode += alphabet[(int)s.charAt(i)-a] + "/";
}
return encode;
}
@Override
public String decode(String s) {
String decode = "";
int a = 65; // Code ASCII de A
String[] lettres = s.split("/");
for (int i = 0; i < lettres.length; i++) {
decode += decoder.get(lettres[i]);
}
return decode;
}
}

View file

@ -0,0 +1,22 @@
package questioncomplementaire;
/**
* @author galtier
*
* Cette classe représente un noeud d'un arbre de Huffman.
*
*/
public class Noeud extends Arbre {
final Arbre filsGauche, filsDroit;
/**
*
* @param filsGauche fils gauche du noeud
* @param filsDroit fils droit du noeud
*/
public Noeud(Arbre filsGauche, Arbre filsDroit) {
super(filsGauche.frequence + filsDroit.frequence);
this.filsGauche = filsGauche;
this.filsDroit = filsDroit;
}
}

View file

@ -0,0 +1,46 @@
package questioncomplementaire;
import java.io.BufferedReader;
import java.io.FileReader;
/**
* @author galtier
*
*/
public class Utilitaire {
/**
* Lit un fichier texte et place les caractères lus dans une chaîne de
* caractères.
*
* @param nomFichier
* le nom complet du fichier à lire
* @return une chaine de caractères contenant le texte lu dans le fichier.
* Si le fichier n'existe pas ou ne peut pas être lu, retourne null.
*
*/
public static String lireTexte(String nomFichier) {
try {
String texte = "";
FileReader fr = new FileReader(nomFichier);
BufferedReader br = new BufferedReader(fr);
String ligne;
while ((ligne = br.readLine()) != null)
texte += ligne + "\n";
return texte;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* Supprime tous les caractères qui ne sont pas des lettres
* et met les autres en majuscules.
* @param input La chaîne à traîter.
* @return La chaîne de caractères traîtée.
*/
public static String getLettres(String input) {
return input.replaceAll("[^a-zA-Z]*", "").toUpperCase();
}
}

View file

@ -0,0 +1,10 @@
package question1;
public class Comparateur {
public static void main(String[] args) {
String nomFichier = "texte2.txt";
String txt = Utilitaire.lireTexte(nomFichier);
System.out.println(txt);
}
}

View file

@ -0,0 +1,16 @@
package question2;
public abstract class AlgoCodage {
protected String nom;
public abstract String encode(String s);
public abstract String decode(String s);
public String getNom() {
return nom;
}
}

30
td4/question2/Cesar.java Normal file
View file

@ -0,0 +1,30 @@
package question2;
public class Cesar extends AlgoCodage{
private int decalage;
private String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public Cesar(int decalage){
this.nom = "César";
this.decalage = decalage;
}
@Override
public String encode(String s) {
String encode = "";
for(int i=0;i<s.length();i++){
encode += alphabet.charAt((decalage +
alphabet.indexOf(s.charAt(i)))%alphabet.length());
}
return encode;
}
@Override
public String decode(String s) {
return "Fonctionnalité décodage de César pas encore implémenté";
}
}

View file

@ -0,0 +1,32 @@
package question2;
import java.util.ArrayList;
public class Comparateur {
public static void main(String[] arg) {
int TAILLE_EXTRAIT = 50;
String texteClair = Utilitaire.lireTexte("texte2.txt");
System.out.println("début du texte original : "
+ texteClair.substring(0, Math.min(50, texteClair.length())));
ArrayList<AlgoCodage> algoAComparer = new ArrayList<AlgoCodage>();
algoAComparer.add(new Cesar(3));
algoAComparer.add(new Morse());
algoAComparer.add(new Cesar(10));
String encodee = "";
for (AlgoCodage algo : algoAComparer) {
System.out.println("algorithme : " + algo.getNom());
encodee = algo.encode(texteClair);
System.out.println("\tencodage : "
+ "\t résultat : "
+ encodee.substring(0, Math.min(50, encodee.length())));
String decodee = algo.decode(encodee);
System.out.println("\tdécodage : "
+ "\t résultat : "
+ decodee.substring(0, Math.min(50, decodee.length())));
}
}
}

19
td4/question2/Morse.java Normal file
View file

@ -0,0 +1,19 @@
package question2;
public class Morse extends AlgoCodage{
public Morse(){
this.nom = "Morse";
}
@Override
public String encode(String s) {
return "Fonctionnalité encodage de Morse pas encore implémentée";
}
@Override
public String decode(String s) {
return "Fonctionnalité décodage de Morse pas encore implémentée";
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -0,0 +1,41 @@
package question4;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class ArbreTest {
Arbre arbre1;
Arbre arbre2;
@Before
public void setup() throws Exception{
arbre1 = Arbre.buildTree("a");
arbre2 = Arbre.buildTree("baob");
}
@Test
public void testBuildTree() {
assertEquals("La lettre n'est pas dans une feuille simple",
((Feuille)arbre1).lettre, 'a');
assertEquals("La fréquence est mauvaise dans une feuille simple",
((Feuille)arbre1).frequence, 1 );
assertEquals(arbre2.frequence, 4 );
Feuille feuilleB = (Feuille)((Noeud)arbre2).filsGauche;
assertEquals(feuilleB.frequence, 2);
assertEquals(feuilleB.lettre, 'b');
Noeud noeudDroit = (Noeud)((Noeud)arbre2).filsDroit;
assertEquals(noeudDroit.frequence, 2);
Feuille feuilleA = (Feuille)noeudDroit.filsGauche;
assertEquals(feuilleA.lettre, 'a');
assertEquals(feuilleA.frequence, 1);
Feuille feuilleO = (Feuille)noeudDroit.filsDroit;
assertEquals(feuilleO.lettre, 'o');
assertEquals(feuilleO.frequence, 1);
}
}

View file

@ -0,0 +1,36 @@
package question5;
/**
* Cette classe représente une feuille d'un arbre de Huffman.
* @author galtier
*
*/
public class Feuille extends Arbre {
final char lettre;
/**
*
* @param frequence nombre d'occurrences de cette lettre dans le générateur
* @param lettre caractère dont on compte le nombre d'occurences
*/
public Feuille(int frequence, char lettre) {
super(frequence);
this.lettre = lettre;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Feuille other = (Feuille) obj;
if ((lettre != other.lettre) || (this.frequence != other.frequence))
return false;
return true;
}
}

401
truc Normal file
View file

@ -0,0 +1,401 @@
<?xml version="1.0" encoding="UTF-8"?>
<XMI xmlns:UML="http://schema.omg.org/spec/UML/1.4" xmi.version="1.2" verified="false" timestamp="2018-03-27T16:38:32">
<XMI.header>
<XMI.documentation>
<XMI.exporter>umbrello uml modeller http://umbrello.kde.org</XMI.exporter>
<XMI.exporterVersion>1.6.12</XMI.exporterVersion>
<XMI.exporterEncoding>UnicodeUTF8</XMI.exporterEncoding>
</XMI.documentation>
<XMI.metamodel xmi.name="UML" xmi.version="1.4" href="UML.xml"/>
</XMI.header>
<XMI.content>
<UML:Model xmi.id="m1" name="UML Model" isAbstract="false" isRoot="false" isLeaf="false" isSpecification="false">
<UML:Namespace.ownedElement>
<UML:Stereotype xmi.id="folder" isAbstract="false" name="folder" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="m1"/>
<UML:Model xmi.id="Logical_View" isAbstract="false" name="Logical View" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="m1">
<UML:Namespace.ownedElement>
<UML:Package xmi.id="Datatypes" isAbstract="false" name="Datatypes" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" stereotype="folder" namespace="Logical_View">
<UML:Namespace.ownedElement>
<UML:DataType xmi.id="uFoXLnwS24jDi" isAbstract="false" name="char" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="uJF9r192gOBbm" isAbstract="false" name="int" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="uQDSwZaqcgJwh" isAbstract="false" name="float" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="uEAR962YASBC4" isAbstract="false" name="double" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="uI3kPavEUajOu" isAbstract="false" name="bool" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="uTpOs9d4v6FCt" isAbstract="false" name="string" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="u96kSNPiru3S8" isAbstract="false" name="unsigned char" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="u9QcuH0xi9dxZ" isAbstract="false" name="signed char" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="u2t1Ut8oRJ7Uh" isAbstract="false" name="unsigned int" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="ucbRbdzzcIO8T" isAbstract="false" name="signed int" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="umccfrq4mjFuG" isAbstract="false" name="short int" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="u2kQ5YxwxJJBc" isAbstract="false" name="unsigned short int" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="uZJ5xk389pZqa" isAbstract="false" name="signed short int" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="uZJHBCtkFabB5" isAbstract="false" name="long int" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="u2oNEabiItOdr" isAbstract="false" name="signed long int" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="uDc3WJvYH5r1s" isAbstract="false" name="unsigned long int" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="umuAnT8iCCVRd" isAbstract="false" name="long double" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="u19jzj9VZyllV" isAbstract="false" name="wchar_t" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
<UML:DataType xmi.id="uOFZB3YNmvpiU" isAbstract="false" name="Vector&lt;ElementBase>" isRoot="false" visibility="public" elementReference="ukFumxgPIWZZS" isLeaf="false" isSpecification="false" namespace="Datatypes"/>
</UML:Namespace.ownedElement>
</UML:Package>
<UML:Class xmi.id="u0jMryxTfuAqC" isAbstract="false" name="LectureEcritureFichier" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View">
<UML:Classifier.feature>
<UML:Operation isQuery="false" xmi.id="uisqlAN2DLOp4" isAbstract="false" name="ouvrirFichierBmp" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="u78YzdJCnsDYg" xmi.id="uEoZVIml3y3tt" name="nomFichier" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uPfh1wb9duVq9" isAbstract="false" name="enregistrerArbre" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="uTwdPw0wW0NlV" xmi.id="uHsuuxCf083Ur" name="arbre" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="u78YzdJCnsDYg" xmi.id="uth4DEbMLodOt" name="nomFichier" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="u5i9fpdjsdYyB" isAbstract="false" name="lectureFichierCompresse" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="u78YzdJCnsDYg" xmi.id="uMduxhTnaWCSd" name="nomFichier" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="u5fiRB2ya1wTa" xmi.id="urjkdaHcf7WQe" name="imgFichier" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
</UML:Class>
<UML:Class xmi.id="uhjGdAaO97O7I" isAbstract="false" name="QuadTree" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View">
<UML:Classifier.feature>
<UML:Operation isQuery="false" xmi.id="uD20Jxn6U4MYO" ownerScope="classifier" isAbstract="false" name="main" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="uy0q0G1pHWfPt" xmi.id="uNqpJMhM6gIZe" name="args" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uQ1uTFI0UxhQQ" isAbstract="false" name="calculInformationBloc" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="uyI8NYpkKxiH3" xmi.id="uLpEo1KmY9b85" kind="return"/>
<UML:Parameter type="u5fiRB2ya1wTa" xmi.id="uvbHDGWK5n8Eg" name="img" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="uORXfQoEy6ncU" name="x0" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="uB07J4fKc1Teh" name="y0" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="uo3jTTDLLdAE7" name="x1" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="uXP1cR9rgZ8jU" name="y1" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uD6S6JIZLcvPC" isAbstract="false" name="construireArbreQuadTrees" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="uTwdPw0wW0NlV" xmi.id="u6HNSNw2gKGiH" kind="return"/>
<UML:Parameter type="u5fiRB2ya1wTa" xmi.id="ueXJcmT5hQWd4" name="img" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="uBkTsrDiwGWkM" name="x0" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="uzvfSiXAHB5mr" name="y0" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="uTKCMTNHMAGwE" name="x1" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="u6ywldDLdHFoN" name="y1" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uEAR962YASBC4" xmi.id="uZOoQwLr5KsOW" name="seuil" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
</UML:Class>
<UML:Class xmi.id="uyI8NYpkKxiH3" isAbstract="false" name="InformationBloc" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View">
<UML:Classifier.feature>
<UML:Attribute type="ufaU7RB2MERga" xmi.id="ugXBVAwyoOBHg" name="rouge" visibility="private" isSpecification="false"/>
<UML:Attribute type="ufaU7RB2MERga" xmi.id="uBOfcYe8EZfb3" name="vert" visibility="private" isSpecification="false"/>
<UML:Attribute type="ufaU7RB2MERga" xmi.id="uuRymoZ6rLvpZ" name="bleu" visibility="private" isSpecification="false"/>
<UML:Attribute type="uEAR962YASBC4" xmi.id="u81qkHZ47pjoR" name="dispersion" visibility="private" isSpecification="false"/>
<UML:Operation isQuery="false" xmi.id="ukjoy0OKVhSfg" isAbstract="false" name="InformationBloc" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="ufaU7RB2MERga" xmi.id="uzwjPz12h5okj" name="rouge" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="ufaU7RB2MERga" xmi.id="ufGlq9LQSbEQg" name="vert" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="ufaU7RB2MERga" xmi.id="uYtZVLCx9xX85" name="bleu" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uEAR962YASBC4" xmi.id="uYknjVHEDxX3b" name="dispersion" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="u2le4H9usYi21" isAbstract="false" name="getRouge" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="ufaU7RB2MERga" xmi.id="uIMiMcZH1IsIN" kind="return"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="ucQ0JLeYTRvox" isAbstract="false" name="getVert" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="ufaU7RB2MERga" xmi.id="uM3BWvi7UP2Ge" kind="return"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uePlQDhKFoU4h" isAbstract="false" name="getBleu" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="ufaU7RB2MERga" xmi.id="u3xspVBvXCiGN" kind="return"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uq6f266XdgDHl" isAbstract="false" name="getDispersion" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="uEAR962YASBC4" xmi.id="uTMTC7lLrcJts" kind="return"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uCUzJ2JG0C3OA" isAbstract="false" name="toString" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="u78YzdJCnsDYg" xmi.id="uuPVHeWrYxQDE" kind="return"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
</UML:Class>
<UML:Class xmi.id="uTwdPw0wW0NlV" isAbstract="true" name="ElementBase" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View">
<UML:Classifier.feature>
<UML:Operation isQuery="false" xmi.id="ukUBq4sQ09bxB" isAbstract="true" name="toString" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="u78YzdJCnsDYg" xmi.id="uGyR0vsErmdv9" kind="return"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uLDagKIKmbjPS" isAbstract="true" name="construireImage" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="u5fiRB2ya1wTa" xmi.id="uVExJSI0eCCg2" name="img" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uanHayxjxsmRd" isAbstract="true" name="enregistrerElement" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="udpxzEssyEMek" xmi.id="uUiiCV9NZxl68" name="flux" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
</UML:Class>
<UML:Class xmi.id="ukgKXvC3BIUbS" isAbstract="false" name="Noeud" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View">
<UML:GeneralizableElement.generalization>
<UML:Generalization xmi.idref="uguBegpzVc7Zc"/>
<UML:Generalization xmi.idref="uoWn0J5nHEdEk"/>
</UML:GeneralizableElement.generalization>
<UML:Classifier.feature>
<UML:Operation isQuery="false" xmi.id="u8HZySGy9wr7a" isAbstract="false" name="Noeud" isRoot="false" visibility="public" isLeaf="false" isSpecification="false"/>
<UML:Operation isQuery="false" xmi.id="umcl4Sp7cImHi" isAbstract="false" name="ajouterNoeud" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="uTwdPw0wW0NlV" xmi.id="uxY2SuWQ6TYFX" name="element" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uV5fYMHzF3vzD" isAbstract="false" name="toString" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="u78YzdJCnsDYg" xmi.id="ux3zjgzVEqT7e" kind="return"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="u9c6JSpwIX9MM" isAbstract="false" name="construireImage" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="u5fiRB2ya1wTa" xmi.id="uSGOTFzPk4h4j" name="img" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uhlDafR4rYNX1" isAbstract="false" name="enregistrerElement" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="udpxzEssyEMek" xmi.id="u6S9y3mHP6Onj" name="flux" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
</UML:Class>
<UML:Class xmi.id="uaoOBugKTszvr" isAbstract="false" name="Feuille" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View">
<UML:GeneralizableElement.generalization>
<UML:Generalization xmi.idref="uuIbOEuBwNqyk"/>
</UML:GeneralizableElement.generalization>
<UML:Classifier.feature>
<UML:Attribute type="uJF9r192gOBbm" xmi.id="uX1xn3oqIZ2D9" name="x0" visibility="private" isSpecification="false"/>
<UML:Attribute type="uJF9r192gOBbm" xmi.id="uNbp5jyEIsomp" name="x1" visibility="private" isSpecification="false"/>
<UML:Attribute type="uJF9r192gOBbm" xmi.id="ueqMp8bS6o1Ag" name="y0" visibility="private" isSpecification="false"/>
<UML:Attribute type="uJF9r192gOBbm" xmi.id="uepK86uhVodiF" name="y1" visibility="private" isSpecification="false"/>
<UML:Attribute type="ufaU7RB2MERga" xmi.id="u8VMXfD7kLHh8" name="rouge" visibility="private" isSpecification="false"/>
<UML:Attribute type="ufaU7RB2MERga" xmi.id="u031vmesHJOdH" name="vert" visibility="private" isSpecification="false"/>
<UML:Attribute type="ufaU7RB2MERga" xmi.id="u5GvJWY5uTI4X" name="bleu" visibility="private" isSpecification="false"/>
<UML:Attribute type="uEAR962YASBC4" xmi.id="ufGPN5OEZh8YA" name="dispersion" visibility="private" isSpecification="false"/>
<UML:Operation isQuery="false" xmi.id="ua9KPyIlDq4La" isAbstract="false" name="Feuille" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="uds0d8hkz61Sx" name="x0" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="uALgXjLlzeVZo" name="y0" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="uR7cicSdXI5gF" name="x1" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uJF9r192gOBbm" xmi.id="uwP1aDVhBNq8o" name="y1" value="" visibility="private" isSpecification="false"/>
<UML:Parameter type="uyI8NYpkKxiH3" xmi.id="ulTbuzGdiSd8Q" name="bloc" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="ujd9j5SZ4n5hm" isAbstract="false" name="toString" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="u78YzdJCnsDYg" xmi.id="u9t39Ldq0kWse" kind="return"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uLv5ajf4m3DSt" isAbstract="false" name="construireImage" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="u5fiRB2ya1wTa" xmi.id="uLmr5pMSPOnJn" name="img" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
<UML:Operation isQuery="false" xmi.id="uqyivTFtKPPCZ" isAbstract="false" name="enregistrerElement" isRoot="false" visibility="public" isLeaf="false" isSpecification="false">
<UML:BehavioralFeature.parameter>
<UML:Parameter type="udpxzEssyEMek" xmi.id="u0y3lARPv1wks" name="flux" value="" visibility="private" isSpecification="false"/>
</UML:BehavioralFeature.parameter>
</UML:Operation>
</UML:Classifier.feature>
</UML:Class>
<UML:Class xmi.id="u78YzdJCnsDYg" isAbstract="false" name="String" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View"/>
<UML:Class xmi.id="u5fiRB2ya1wTa" isAbstract="false" name="BufferedImage" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View"/>
<UML:Class xmi.id="uy0q0G1pHWfPt" isAbstract="false" name="String[]" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View"/>
<UML:Class xmi.id="ufaU7RB2MERga" isAbstract="false" name="byte" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View"/>
<UML:Class xmi.id="udpxzEssyEMek" isAbstract="false" name="DataOutputStream" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View"/>
<UML:Generalization discriminator="" xmi.id="uuIbOEuBwNqyk" name="" child="uaoOBugKTszvr" visibility="public" parent="uTwdPw0wW0NlV" isSpecification="false" namespace="Logical_View"/>
<UML:Generalization discriminator="" xmi.id="uguBegpzVc7Zc" name="" child="ukgKXvC3BIUbS" visibility="public" parent="uTwdPw0wW0NlV" isSpecification="false" namespace="Logical_View"/>
<UML:Class xmi.id="ukFumxgPIWZZS" isAbstract="false" name="Vector" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View"/>
<UML:Dependency xmi.id="uS2dhwk1L9OnA" client="uaoOBugKTszvr" name="" visibility="public" supplier="uTwdPw0wW0NlV" isSpecification="false" namespace="Logical_View"/>
<UML:Class xmi.id="uQ0FwW7wzaTrE" isAbstract="false" name="int x1" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="Logical_View"/>
<UML:Association xmi.id="uiFBjrfRJAUxN" name="" visibility="public" isSpecification="false" namespace="Logical_View">
<UML:Association.connection>
<UML:AssociationEnd changeability="changeable" aggregation="aggregate" type="ukgKXvC3BIUbS" xmi.id="uognzmAogOisc" name="" visibility="public" isSpecification="false" isNavigable="true"/>
<UML:AssociationEnd changeability="changeable" aggregation="none" type="uTwdPw0wW0NlV" xmi.id="uAiRS34uY2Uda" name="" visibility="public" isSpecification="false" isNavigable="true"/>
</UML:Association.connection>
</UML:Association>
<UML:Generalization discriminator="" xmi.id="uoWn0J5nHEdEk" name="" child="ukgKXvC3BIUbS" visibility="public" parent="uTwdPw0wW0NlV" isSpecification="false" namespace="Logical_View"/>
<UML:Association xmi.id="u0FLbIv8KaWyD" name="" visibility="public" isSpecification="false" namespace="Logical_View">
<UML:Association.connection>
<UML:AssociationEnd changeability="changeable" aggregation="none" type="ukgKXvC3BIUbS" xmi.id="uugYQ32POKj6h" name="" visibility="public" isSpecification="false" isNavigable="false"/>
<UML:AssociationEnd changeability="changeable" aggregation="none" type="ukgKXvC3BIUbS" xmi.id="u3IGsw1nO4QSH" name="" visibility="public" isSpecification="false" isNavigable="true"/>
</UML:Association.connection>
</UML:Association>
<UML:Association xmi.id="uCiXYqQcq7Z7c" name="" visibility="public" isSpecification="false" namespace="Logical_View">
<UML:Association.connection>
<UML:AssociationEnd changeability="changeable" aggregation="aggregate" type="ukgKXvC3BIUbS" xmi.id="uSrd3scO0SctN" name="lesFils" visibility="private" multiplicity="0..4" isSpecification="false" isNavigable="true"/>
<UML:AssociationEnd changeability="changeable" aggregation="none" type="uTwdPw0wW0NlV" xmi.id="ucRSlj6SQTBUA" name="" visibility="private" isSpecification="false" isNavigable="true"/>
</UML:Association.connection>
</UML:Association>
</UML:Namespace.ownedElement>
<XMI.extension xmi.extender="umbrello">
<diagrams resolution="96">
<diagram type="1" backgroundcolor="#ffffff" showattsig="1" font="Ubuntu,11,-1,5,50,0,0,0,0,0" zoom="48,93249999999999" showscope="1" xmi.id="uJRKCw2ez17NB" fillcolor="#ffff00" showops="1" griddotcolor="#d3d3d3" showpubliconly="0" canvasheight="880.857" documentation="" showattribassocs="1" usefillcolor="1" showpackage="1" textcolor="#000000" snapgrid="0" linewidth="0" showopsig="1" showgrid="0" isopen="1" showatts="1" localid="-1" linecolor="#ff0000" snapcsgrid="0" snapy="25" canvaswidth="1456.74" showstereotype="1" snapx="25" name="class diagram">
<widgets>
<classwidget usesdiagramusefillcolor="0" showattsigs="601" font="Ubuntu,11,-1,5,50,0,0,0,0,0" y="-679.71" showscope="1" showattributes="1" xmi.id="u0jMryxTfuAqC" showopsigs="601" fillcolor="#ffff00" showpubliconly="0" usesdiagramfillcolor="0" usefillcolor="1" isinstance="0" showpackage="1" textcolor="#000000" linewidth="0" height="76" localid="ua8pLhEvX8MUy" autoresize="1" width="520" linecolor="#ff0000" showoperations="1" x="-266.076" showstereotype="1"/>
<classwidget usesdiagramusefillcolor="0" showattsigs="601" font="Ubuntu,11,-1,5,50,0,0,0,0,0" y="-774.612" showscope="1" showattributes="1" xmi.id="uhjGdAaO97O7I" showopsigs="601" fillcolor="#ffff00" showpubliconly="0" usesdiagramfillcolor="0" usefillcolor="1" isinstance="0" showpackage="1" textcolor="#000000" linewidth="0" height="76" localid="ub7Fr0dhC5PYI" autoresize="1" width="759" linecolor="#ff0000" showoperations="1" x="25.0994" showstereotype="1"/>
<classwidget usesdiagramusefillcolor="0" showattsigs="601" font="Ubuntu,11,-1,5,50,0,0,0,0,0" y="-681.735" showscope="1" showattributes="1" xmi.id="uyI8NYpkKxiH3" showopsigs="601" fillcolor="#ffff00" showpubliconly="0" usesdiagramfillcolor="0" usefillcolor="1" isinstance="0" showpackage="1" textcolor="#000000" linewidth="0" height="187" localid="uRRXzRuzNOGPr" autoresize="1" width="513" linecolor="#ff0000" showoperations="1" x="277.139" showstereotype="1"/>
<classwidget usesdiagramusefillcolor="0" showattsigs="601" font="Ubuntu,11,-1,5,50,0,0,0,0,0" y="-591.147" showscope="1" showattributes="1" xmi.id="uTwdPw0wW0NlV" showopsigs="601" fillcolor="#ffff00" showpubliconly="0" usesdiagramfillcolor="0" usefillcolor="1" isinstance="0" showpackage="1" textcolor="#000000" drawascircle="0" linewidth="0" height="76" localid="ubuvSYfbQrNB9" autoresize="1" width="321" linecolor="#ff0000" showoperations="1" x="-70.9319" showstereotype="1"/>
<classwidget usesdiagramusefillcolor="0" showattsigs="601" font="Ubuntu,11,-1,5,50,0,0,0,0,0" y="-445.817" showscope="1" showattributes="1" xmi.id="ukgKXvC3BIUbS" showopsigs="601" fillcolor="#ffff00" showpubliconly="0" usesdiagramfillcolor="0" usefillcolor="1" isinstance="0" showpackage="1" textcolor="#000000" linewidth="0" height="110" localid="uJShAQ4ziDBs7" autoresize="1" width="332" linecolor="#ff0000" showoperations="1" x="107.354" showstereotype="1"/>
<classwidget usesdiagramusefillcolor="0" showattsigs="601" font="Ubuntu,11,-1,5,50,0,0,0,0,0" y="-441.351" showscope="1" showattributes="1" xmi.id="uaoOBugKTszvr" showopsigs="601" fillcolor="#ffff00" showpubliconly="0" usesdiagramfillcolor="0" usefillcolor="1" isinstance="0" showpackage="1" textcolor="#000000" linewidth="0" height="221" localid="uOLtQsnav2skw" autoresize="1" width="436" linecolor="#ff0000" showoperations="1" x="-353.101" showstereotype="1"/>
</widgets>
<messages/>
<associations>
<assocwidget type="500" usesdiagramusefillcolor="240" totalcountb="2" font="Ubuntu,11,-1,5,50,0,0,0,0,0" indexb="1" xmi.id="uuIbOEuBwNqyk" fillcolor="#ffff00" usesdiagramfillcolor="0" totalcounta="2" usefillcolor="1" widgetbid="uTwdPw0wW0NlV" textcolor="none" indexa="1" linewidth="0" autoresize="1" linecolor="#ff0000" seqnum="" widgetaid="uaoOBugKTszvr">
<linepath layout="Polyline">
<startpoint startx="-6.477" starty="-441.351"/>
<endpoint endy="-515.147" endx="-6.477"/>
</linepath>
</assocwidget>
<assocwidget type="500" usesdiagramusefillcolor="0" totalcountb="2" font="Ubuntu,11,-1,5,50,0,0,0,0,0" indexb="1" xmi.id="uoWn0J5nHEdEk" fillcolor="#ffff00" usesdiagramfillcolor="0" totalcounta="2" usefillcolor="1" widgetbid="uTwdPw0wW0NlV" textcolor="none" indexa="1" linewidth="0" autoresize="1" linecolor="#ff0000" seqnum="" widgetaid="ukgKXvC3BIUbS">
<linepath layout="Polyline">
<startpoint startx="107.354" starty="-445.817"/>
<endpoint endy="-515.147" endx="107.354"/>
</linepath>
</assocwidget>
<assocwidget type="501" usesdiagramusefillcolor="0" totalcountb="2" font="Ubuntu,11,-1,5,50,0,0,0,0,0" indexb="1" xmi.id="uCiXYqQcq7Z7c" fillcolor="#ffff00" usesdiagramfillcolor="0" totalcounta="2" usefillcolor="1" widgetbid="uTwdPw0wW0NlV" textcolor="#000000" indexa="1" linewidth="0" autoresize="1" linecolor="#ff0000" seqnum="" widgetaid="ukgKXvC3BIUbS">
<linepath layout="Polyline">
<startpoint startx="107.354" starty="-445.817"/>
<endpoint endy="-515.147" endx="107.354"/>
</linepath>
<floatingtext usesdiagramusefillcolor="1" pretext="" font="Ubuntu,11,-1,5,50,0,0,0,0,0" y="-468" xmi.id="uI9Mv01XWb14W" fillcolor="none" usesdiagramfillcolor="1" posttext="" usefillcolor="1" isinstance="0" role="701" textcolor="none" linewidth="0" height="21" localid="u67lb5uVnEh3m" text="0..4" autoresize="1" width="32" linecolor="#ff0000" x="109" showstereotype="1"/>
<floatingtext usesdiagramusefillcolor="1" pretext="-" font="Ubuntu,11,-1,5,50,0,0,0,0,0" y="-468.817" xmi.id="uIIeogZ6rCxEi" fillcolor="none" usesdiagramfillcolor="1" posttext="" usefillcolor="1" isinstance="0" role="709" textcolor="none" linewidth="0" height="21" localid="uR4GPLzN8gXnv" text="lesFils" autoresize="1" width="58" linecolor="#ff0000" x="49.2672" showstereotype="1"/>
</assocwidget>
</associations>
</diagram>
<diagram type="3" backgroundcolor="#ffffff" showattsig="1" font="Ubuntu,11,-1,5,50,0,0,0,0,0" zoom="100" showscope="1" xmi.id="uc6prlmvuc49Z" fillcolor="#ffff00" showops="1" griddotcolor="#d3d3d3" showpubliconly="0" canvasheight="0" documentation="" showattribassocs="1" usefillcolor="1" showpackage="1" textcolor="#000000" snapgrid="0" linewidth="0" showopsig="1" autoincrementsequence="0" showgrid="0" isopen="1" showatts="1" localid="-1" linecolor="#ff0000" snapcsgrid="0" snapy="25" canvaswidth="0" showstereotype="1" snapx="25" name="sequence diagram">
<widgets/>
<messages/>
<associations/>
</diagram>
</diagrams>
</XMI.extension>
</UML:Model>
<UML:Model xmi.id="Use_Case_View" isAbstract="false" name="Use Case View" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="m1">
<UML:Namespace.ownedElement/>
</UML:Model>
<UML:Model xmi.id="Component_View" isAbstract="false" name="Component View" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="m1">
<UML:Namespace.ownedElement/>
</UML:Model>
<UML:Model xmi.id="Deployment_View" isAbstract="false" name="Deployment View" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="m1">
<UML:Namespace.ownedElement/>
</UML:Model>
<UML:Model xmi.id="Entity_Relationship_Model" isAbstract="false" name="Entity Relationship Model" isRoot="false" visibility="public" isLeaf="false" isSpecification="false" namespace="m1">
<UML:Namespace.ownedElement/>
</UML:Model>
</UML:Namespace.ownedElement>
</UML:Model>
</XMI.content>
<XMI.extensions xmi.extender="umbrello">
<docsettings viewid="uJRKCw2ez17NB" documentation="" uniqueid="uc6prlmvuc49Z"/>
<listview>
<listitem type="800" open="1" id="Views">
<listitem type="821" open="1" id="Component_View"/>
<listitem type="827" open="1" id="Deployment_View"/>
<listitem type="836" open="1" id="Entity_Relationship_Model"/>
<listitem type="801" open="1" id="Logical_View">
<listitem type="813" open="1" id="u5fiRB2ya1wTa"/>
<listitem type="813" open="1" id="ufaU7RB2MERga"/>
<listitem type="807" open="0" id="uJRKCw2ez17NB" label="class diagram"/>
<listitem type="813" open="1" id="udpxzEssyEMek"/>
<listitem type="830" open="0" id="Datatypes">
<listitem type="829" open="1" id="uI3kPavEUajOu"/>
<listitem type="829" open="1" id="uFoXLnwS24jDi"/>
<listitem type="829" open="1" id="uEAR962YASBC4"/>
<listitem type="829" open="1" id="uQDSwZaqcgJwh"/>
<listitem type="829" open="1" id="uJF9r192gOBbm"/>
<listitem type="829" open="1" id="umuAnT8iCCVRd"/>
<listitem type="829" open="1" id="uZJHBCtkFabB5"/>
<listitem type="829" open="1" id="umccfrq4mjFuG"/>
<listitem type="829" open="1" id="u9QcuH0xi9dxZ"/>
<listitem type="829" open="1" id="ucbRbdzzcIO8T"/>
<listitem type="829" open="1" id="u2oNEabiItOdr"/>
<listitem type="829" open="1" id="uZJ5xk389pZqa"/>
<listitem type="829" open="1" id="uTpOs9d4v6FCt"/>
<listitem type="829" open="1" id="u96kSNPiru3S8"/>
<listitem type="829" open="1" id="u2t1Ut8oRJ7Uh"/>
<listitem type="829" open="1" id="uDc3WJvYH5r1s"/>
<listitem type="829" open="1" id="u2kQ5YxwxJJBc"/>
<listitem type="829" open="1" id="uOFZB3YNmvpiU"/>
<listitem type="829" open="1" id="u19jzj9VZyllV"/>
</listitem>
<listitem type="813" open="0" id="uTwdPw0wW0NlV">
<listitem type="815" open="0" id="uLDagKIKmbjPS"/>
<listitem type="815" open="0" id="uanHayxjxsmRd"/>
<listitem type="815" open="0" id="ukUBq4sQ09bxB"/>
</listitem>
<listitem type="813" open="0" id="uaoOBugKTszvr">
<listitem type="814" open="0" id="u5GvJWY5uTI4X"/>
<listitem type="815" open="0" id="uLv5ajf4m3DSt"/>
<listitem type="814" open="0" id="ufGPN5OEZh8YA"/>
<listitem type="815" open="0" id="uqyivTFtKPPCZ"/>
<listitem type="815" open="0" id="ua9KPyIlDq4La"/>
<listitem type="814" open="0" id="u8VMXfD7kLHh8"/>
<listitem type="815" open="0" id="ujd9j5SZ4n5hm"/>
<listitem type="814" open="0" id="u031vmesHJOdH"/>
<listitem type="814" open="0" id="uX1xn3oqIZ2D9"/>
<listitem type="814" open="0" id="uNbp5jyEIsomp"/>
<listitem type="814" open="0" id="ueqMp8bS6o1Ag"/>
<listitem type="814" open="0" id="uepK86uhVodiF"/>
</listitem>
<listitem type="813" open="0" id="uyI8NYpkKxiH3">
<listitem type="814" open="0" id="uuRymoZ6rLvpZ"/>
<listitem type="814" open="0" id="u81qkHZ47pjoR"/>
<listitem type="815" open="0" id="uePlQDhKFoU4h"/>
<listitem type="815" open="0" id="uq6f266XdgDHl"/>
<listitem type="815" open="0" id="u2le4H9usYi21"/>
<listitem type="815" open="0" id="ucQ0JLeYTRvox"/>
<listitem type="815" open="0" id="ukjoy0OKVhSfg"/>
<listitem type="814" open="0" id="ugXBVAwyoOBHg"/>
<listitem type="815" open="0" id="uCUzJ2JG0C3OA"/>
<listitem type="814" open="0" id="uBOfcYe8EZfb3"/>
</listitem>
<listitem type="813" open="1" id="uQ0FwW7wzaTrE"/>
<listitem type="813" open="0" id="u0jMryxTfuAqC">
<listitem type="815" open="0" id="uPfh1wb9duVq9"/>
<listitem type="815" open="0" id="u5i9fpdjsdYyB"/>
<listitem type="815" open="0" id="uisqlAN2DLOp4"/>
</listitem>
<listitem type="813" open="1" id="ukgKXvC3BIUbS">
<listitem type="815" open="0" id="umcl4Sp7cImHi"/>
<listitem type="815" open="0" id="u9c6JSpwIX9MM"/>
<listitem type="815" open="0" id="uhlDafR4rYNX1"/>
<listitem type="815" open="0" id="u8HZySGy9wr7a"/>
<listitem type="815" open="0" id="uV5fYMHzF3vzD"/>
</listitem>
<listitem type="813" open="1" id="uhjGdAaO97O7I">
<listitem type="815" open="0" id="uQ1uTFI0UxhQQ"/>
<listitem type="815" open="0" id="uD6S6JIZLcvPC"/>
<listitem type="815" open="0" id="uD20Jxn6U4MYO"/>
</listitem>
<listitem type="810" open="0" id="uc6prlmvuc49Z" label="sequence diagram"/>
<listitem type="813" open="1" id="u78YzdJCnsDYg"/>
<listitem type="813" open="1" id="uy0q0G1pHWfPt"/>
<listitem type="813" open="1" id="ukFumxgPIWZZS"/>
</listitem>
<listitem type="802" open="1" id="Use_Case_View"/>
</listitem>
</listview>
<codegeneration>
<codegenerator language="C++"/>
</codegeneration>
</XMI.extensions>
</XMI>