\documentclass[twoside,a4paper,10pt]{report}
\usepackage[french]{babel} %% Use your own babel language
\usepackage[top=3cm,bottom=3cm,left=2.5cm,right=2.5cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{pslatex}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{tabularx}
\usepackage{supertabular}
\usepackage{pdflscape} %% Used for very big table
\usepackage{moreverb}
\usepackage{color}
\usepackage{listings}
\usepackage{lastpage}
\usepackage{fancyhdr}
\usepackage{ulem}
\usepackage{textcomp}
\usepackage{wasysym}
\usepackage{wrapfig} %%Usefull for image 
%%\usepackage{fguill} %%Use this package for guillemot[left|right] useless with babel set to french
\usepackage{eso-pic} %% Background
\pagestyle{fancy}%
\renewcommand{\headrulewidth}{0.1pt}
\renewcommand{\footrulewidth}{0pt}
\renewcommand{\chaptermark}[1]{%
	\markboth{\chaptername\ \thechapter.\ #1}{}}

\renewcommand{\sectionmark}[1]{%
	\markright{#1}{}}

\fancypagestyle{plain}{%
\fancyhf{}
\fancyfoot[R]{\thepage/\pageref{LastPage}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}
\fancyhf{}
\fancyhead[L]{\rightmark}
\fancyhead[R]{\leftmark}
\fancyfoot[R]{\thepage/\pageref{LastPage}}
\renewcommand{\headrulewidth}{0.1pt}
\renewcommand{\footrulewidth}{0pt}

\definecolor{codegray}{gray}{.95}
\lstset{language=C,
	numbers=left,
	tabsize=2,
	basicstyle=\scriptsize,
	stringstyle=\textrm,
	showstringspaces=false,
	frame=none,
	xleftmargin=3pt,
	backgroundcolor=\color{codegray}}

\newcommand{\settexitref}[2]{(\ref{#1}p\pageref{#1})}
\newcommand{\dokutitlelevelone}[1]{\chapter{#1}}
\newcommand{\dokutitleleveltwo}[1]{\section{#1}}
\newcommand{\dokutitleleveltree}[1]{\subsection{#1}}
\newcommand{\dokutitlelevelfour}[1]{\subsubsection{#1}}
\newcommand{\dokutitlelevelfive}[1]{\paragraph{#1}}
\newcommand{\dokufootnote}[1]{\footnote{#1}}
\newcommand{\dokufootmark}[1]{\footnotemark[#1]}
\newcommand{\dokubold}[1]{\textbf{#1}}
\newcommand{\dokuitalic}[1]{\textsl{#1}}
\newcommand{\dokumonospace}[1]{\texttt{#1}}
\newcommand{\dokuunderline}[1]{\underline{#1}}
\newcommand{\dokuoverline}[1]{\sout{#1}}
\newcommand{\dokusupscript}[1]{\textsuperscript{#1}}
\newcommand{\dokusubscript}[1]{$_{#1}$}
\newcommand{\dokuhline}{\line(1,0){400}}
\newcommand{\dokulabel}[1]{\label{#1}}
\newcommand{\dokuitem}{\item}
\newcommand{\dokuquoting}{\textbar}
\newcommand{\dokutabularwidth}{\textwidth}
\newcommand{\dokusupertabularheadbreak}{\small\sl continued from previous page}
\newcommand{\dokusupertabulartailbreak}{\small\sl continued on next page}
\newcommand{\dokuheadingstyle}[1]{\textbf{#1}}
\definecolor{dokuheadingcolor}{rgb}{0,0,0.60}
\newcommand{\dokubackground}[1]{%
\AddToShipoutPicture{%
  \AtTextCenter{%
    \makebox(0,0)[c]{\resizebox{\textwidth}{!}{%
      \rotatebox{25}{\textsf{\textbf{\textcolor[gray]{0.90}{#1}}}}}}%
  }%
 }%
}

\hypersetup{
pdftitle = {JAVA TP4},
pdfauthor = {E. Bruno},
pdfcreator = {DokuTeXit},
pdfproducer = {dokuwiki + TeXit + pdflatex}
}
\title{JAVA TP4}
\author{E. Bruno}
\dokubackground{http://lsis.univ-tln.fr/\~{ }bruno/}
\begin{document}
\thispagestyle{empty}
\maketitle
\thispagestyle{empty}
\cleardoublepage
\tableofcontents
\newpage
\thispagestyle{plain}
\cleardoublepage
\newpage



\dokutitlelevelone{TP4 - Entrées/Sorties et IHM}
\label{d84531fbaf194b29fc289117af377439}%% sorties_et_ihm
\label{6042914ceeeb0c6baa6295612ac5662e}%%Start: tp4 => /home/bruno/public_html/data/pages/tp4.txt

\dokutitleleveltwo{Objectif}
\label{ba81ee9ceeb9c96227f3607460f09179}%% objectif
L'objectif ce TP est de d'illuster l'utilisation simple des entrées/sorties en Java et de
mettre en place des IHM de base.


\dokutitleleveltwo{Les entrées/sorties}
\label{6e0e5d0b7f0fa8bc0095369c74b842f9}%% sorties
\href{http://download.oracle.com/javase/tutorial/essential/io/index.html}{http://download.oracle.com/javase/tutorial/essential/io/index.html}

En vous servant tu TP sur les animaux :


\begin{itemize}
\dokuitem  Ajouter une méthode \dokumonospace{void sauverChien(Collection c, String fichier)} et une méthode \dokumonospace{sauverChien(OutputStream os)} à la classe Chien qui sauvegarde l'état interne d'un chien dans un fichier en écrivant les types primitifs directement en binaire dans un fichier.
\dokuitem  Ajouter une méthode \dokumonospace{Collection restaurerChien(String fichier)} à la classe Chien qui crée une collection d’instances de Chien à partir des informations stockées dans un fichier.
\dokuitem  Modifier les méthodes précédentes pour qu'un tampon soit utilisé.
\dokuitem  Modifier les méthodes précédentes pour que le fichier soit compressé.
\dokuitem  Créer les méthodes \dokumonospace{void sauverChien2(Collection c, String fichier)} et
\end{itemize}
\dokumonospace{Collection restaurerChien2(String fichier)} qui font la même chose en utilisant la sérialisation.


\dokutitleleveltwo{Les IHM}
\label{bc79619828144b846f02246ab5d0e2df}%% les_ihm
\href{http://download.oracle.com/javase/tutorial/uiswing/}{http://download.oracle.com/javase/tutorial/uiswing/}


\dokutitleleveltree{Construction}
\label{f5355504c5355403b74b6fd440b96c94}%% construction
Mettez en place une IHM simple qui permet d'afficher et de modifier une instance de la classe \dokumonospace{Chien}. Essayer d’utiliser un maximum de composants de Swing (cf. tutoriel). Cette classe sera appelée une vue de Chien.

Compléter l'interface pour qu'elle affiche une "liste de Chiens" représentés par leur nom ou leur tatouage (i.e. leur identifiant). 


\dokutitleleveltree{Activation}
\label{24eed33ee38027d124839f0fcdf6adcb}%% activation
Compléter votre interface pour qu'elle puisse :


\begin{itemize}
\dokuitem  d'afficher les informations qui viennent d'une instance Chien en utilisant en utilisant un contrôleur de Chien.
\dokuitem  permettre de sélectionner une chien dans le liste et d'afficher des informations (bouton afficher).
\dokuitem  permettre de créer des instances de \dokumonospace{Chien} à partir des informations et d’afficher les collections produites (bouton créer).
\end{itemize}
\end{document}

