<p> Pour chacune des classes vue en TD vous devez écrire des tests pour chacune des méthodes et ensuite vous implémenterez ces méthodes. Vous avez un exemple de squelette pour la classe <code>Vector</code>.</p>
<h2>Objectif</h2>
<p>L'objectif de ce TP est de mettre en place des pratiques de programmation permettant
de produire un code correct et lisible. Ce premier TP est assez long à réaliser. Il est impératif de vous concentrer
sur votre TP et de travailler entre les TP pour le terminer.</p>
<p>La démarche que vous allez suivre pour implémenter les exercices du TD est la suivante. Vous allez faire dans l'ordre
les trois points suivants :
<ul>
<li>Écriture de commentaires pour spécifier <b>précisément</b> le comportement des classes et méthodes.</li>
<li>Écriture de tests permettant de vérifier la <b>totalité</b> de la spécification.</li>
<li>Écriture du code des méthodes de façon <b>la plus lisible possible</b>.</li>
</ul>
</p>
<h2>Vecteur d'entiers</h2>
<h3>Écriture des tests</h3>
<p>Les tests permettent de vérifier à chaque étape du développement que le code écrit est correct, c'est-à-dire,
qu'il vérifie les spécifications. Les tests vont être écrits sous la forme de petites méthodes qui vérifient
un des comportements attendus. </p>
<p>Faites un clic droit sur la classe <code>Vector</code> et créez un nouveau <code>JUnit Test Case</code>.
Sélectionnez <code>New JUnit 4 test</code>, le répertoire <code>src/test/java</code> et nommez
la classe <code>VectorTest</code>. Normalement, la nouvelle classe contient un code qui ressemble à celui-ci : <p>
<code>
public class VectorTest {
@Test
public void test() {
fail("Not yet implemented");
}
}
</code>
<p>Placez vous sur la classe et <code>VectorTest</code> et exécutez son contenu à l'aide de la flèche
verte d'<code>Eclipse</code>. Normalement, vous devriez voir apparaître le résultat de l'exécution
avec un échec rencontré sur la méthode <code>void test()</code>. En effet, la méthode
<code>test()</code> est annotée par <code>@Test</code>. Par conséquent, elle est exécutée comme
un test par <code>JUnit</code>. La ligne <code>fail("Not yet implemented");</code> génère l'échec
obtenu par l'exécution des tests.</p>
<p>Vous allez écrire des méthodes dans la classe <code>VectorTest</code> afin de tester les différentes
fonctionnalités de la classe <code>Vector</code>. Pour cela, vous allez remplacer le code de la classe
<code>VectorTest</code> par le code suivant et le compléter en vous inspirant des tests déjà écrits.
Les deux premières lignes commençant par <code>import static</code> permettent d'avoir accès
directement aux méthodes statiques des classes <code>MatcherAssert</code> et <code>Matchers</code>
de <code>hamcrest</code> : cela permet par exemple d'utiliser la méthode <code>equalTo</code>
sans avoir à écrire <code>org.hamcrest.Matchers.equalTo</code>. Un tutoriel de la librairie
<code>Hamcrest</code> est donné <ahref="https://code.google.com/archive/p/hamcrest/wikis/Tutorial.wiki">ici</a>.</p>