1.4-Software-Development-Principles

Cloning Persons

Inleiding

Om te oefenen met het proces van klonen gebruiken we de situatie uit de slides en de theorie:

Opdracht

Step 1 - Geef de originele lijst referentie mee.

Maak een ArrayList met een aantal Personen er in.

Geef de lijst aan een externe methode die het eerste element verwijderd en het derde element wijzigt.

private void changeList(ArrayList<Person> list) {
	// ...
}

Bevestig dat deze methode de originele lijst veranderd heeft.

Step 2 - Geef een kopie van de lijst mee.

Voordat je de lijst aan de changeList methode aanbiedt, maak je erst een nieuwe lijst aan en kopieer alle Personen uit de originel lijst naar de nieuwe lijst.

Bevestig dat, in jouw originele lijst, de eerste Person nog steeds aanwezig is, maar de derde Person is nog steeds gewijzigd.

Step 3 - Geef een Deep Clone van de lijst mee.

Kopieer deze keer niet aleen de lijst, maar maak ook clones van alle Personen.

Bevestig dat in de originele lijst de eerste Person nog steeds aanwezig is. Deze keer blijft de derde Person ongewijzigd. Alle wijzigingen gebeuren nu enkel in de gekloonde lijst.

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.