Browse Source

Ajoutd es fichiers

master
Klafyvel 8 years ago
commit
e7a9b1a7cf
  1. 233
      .gitignore
  2. BIN
      CSLogo.png
  3. 169
      MyPack2.sty
  4. BIN
      complementaire.pdf
  5. 53
      complementaire.tex
  6. BIN
      compteRendu.pdf
  7. 60
      compteRendu.tex
  8. 40
      macroTL.tex
  9. 19
      questioncomplementaire/AlgoCodage.java
  10. 82
      questioncomplementaire/Arbre.java
  11. 38
      questioncomplementaire/Cesar.java
  12. 39
      questioncomplementaire/CodageAClef.java
  13. 58
      questioncomplementaire/Comparateur.java
  14. 37
      questioncomplementaire/Feuille.java
  15. 54
      questioncomplementaire/Huffman.java
  16. 24
      questioncomplementaire/HuffmanCode.java
  17. 51
      questioncomplementaire/Morse.java
  18. 22
      questioncomplementaire/Noeud.java
  19. 46
      questioncomplementaire/Utilitaire.java
  20. 10
      td4/question1/comparateur.java
  21. 16
      td4/question2/AlgoCodage.java
  22. 30
      td4/question2/Cesar.java
  23. 32
      td4/question2/Comparateur.java
  24. 19
      td4/question2/Morse.java
  25. BIN
      td4/question3/rational_rose.png
  26. 41
      td4/question4/ArbreTest.java
  27. 36
      td4/question5/Feuille.java
  28. 401
      truc

233
.gitignore

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

169
MyPack2.sty

@ -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

Binary file not shown.

53
complementaire.tex

@ -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

Binary file not shown.

60
compteRendu.tex

@ -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

@ -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}

19
questioncomplementaire/AlgoCodage.java

@ -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();
}

82
questioncomplementaire/Arbre.java

@ -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;
}
}

38
questioncomplementaire/Cesar.java

@ -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;
}
}

39
questioncomplementaire/CodageAClef.java

@ -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 + "\")";
}
}

58
questioncomplementaire/Comparateur.java

@ -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();
}
}

37
questioncomplementaire/Feuille.java

@ -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;
}
}

54
questioncomplementaire/Huffman.java

@ -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()))
+ ")";
}
}

24
questioncomplementaire/HuffmanCode.java

@ -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;
}
}

51
questioncomplementaire/Morse.java

@ -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;
}
}

22
questioncomplementaire/Noeud.java

@ -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;
}
}

46
questioncomplementaire/Utilitaire.java

@ -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();
}
}

10
td4/question1/comparateur.java

@ -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);
}
}

16
td4/question2/AlgoCodage.java

@ -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

@ -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é";
}
}

32
td4/question2/Comparateur.java

@ -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

@ -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";
}
}

BIN
td4/question3/rational_rose.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

41
td4/question4/ArbreTest.java

@ -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);
}
}

36
td4/question5/Feuille.java

@ -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

@ -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>
Loading…
Cancel
Save