commit
e7a9b1a7cf
28 changed files with 1610 additions and 0 deletions
@ -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 |
||||
|
After Width: | Height: | Size: 79 KiB |
@ -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}  &\to \\ |
||||
|
 &\mapsto  |
||||
|
\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 |
||||
Binary file not shown.
@ -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} |
||||
Binary file not shown.
@ -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} |
||||
@ -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{circuitikz} |
||||
|
|
||||
|
% 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} |
||||
|
|
||||
@ -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(); |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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 + "\")"; |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -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(); |
||||
|
} |
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -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())) |
||||
|
+ ")"; |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
} |
||||
@ -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(); |
||||
|
} |
||||
|
} |
||||
@ -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); |
||||
|
} |
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -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é"; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
@ -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()))); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -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"; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
After Width: | Height: | Size: 28 KiB |
@ -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); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -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; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -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<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…
Reference in new issue