1.4-Software-Development-Principles

Cloneable Linked List

Inleiding

We gaan opnieuw kijken naar onze lijst implementatie. Jouw lijst is hopenlijk volkomen veilig zoadat extenen niet jouw previous en next referenties kunnen wijzigen. (Wanneer jouw lijst een methode genaamd public Node<?> getNode() bevat dan moet je dat eerst corrigeren!)

Voor ons gemak maken we een versie van de lijst die de Cloneable interface implementeerd.

Opdracht

Maak een nieuwe decendant van de lijst die de originele lijst implementatie uitbreidt met de Cloneable interface.

Hint 1: Dit kan er voor zorgen dat ook de elementen van de lijst Cloneable moeten implementeren. Hint 2: Hoewel de structuur van de lijst best lastig kan zijn is het maken van een kloon niet zo heel moeilijk.

Testen

Nadat je een gekloonde lijst gemaakt het wil je natuurlijk bevestigen via unittest dat je succesvol was. Gebruik de assertEquals methode zodat de equals methode bevestigd dat de twee instanties gelijk zijn.

Gebruik alsjeblieft ook de assertNotSame methode (dit is het omgekeerde van assertSame) om te bevestigen dat de elementen van de lijst niet gewoon naar de dezelfde referentie verwijzen!

Dus ieder element in de originele list moet equivalent zijn met ieder element in de kloon, maar ze moeten niet hetzelfde object zijn.