Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

PlantUML Macro
class Memory {
	-List<Object> possibleItems
	-List<Object> expectedItems
	-int acceptedCount
	+Memory(Collection<Object>)
	+int getItemCount()
	+int getAcceptedCount()
	+Object nextItem()
	+Boolean acceptItem(Object)
}

Bruker Object, så alle mulige objekter er tillatt

Code Block
languagejava
Memory memory = new Memory(Arrays.asList("En", "To", "Tre"));
...
Integer userInput = ...
// meningsløst, uten at det gir feil
if (memory.acceptItem(userInput) ...

...

PlantUML Macro
class Memory<T> {
	-List<T> possibleItems
	-List<T> expectedItems
	-int acceptedCount
	+Memory(Collection<T>)
	+int getItemCount()
	+int getAcceptedCount()
	+T nextItem()
	+Boolean acceptItem(T)
}

Introduserer typeparameter T, slik at alle mulige typer kan brukes, men bare en bestemt type for hver instans.

Code Block
languagejava
Memory<String> memory = new Memory<String>(Arrays.asList("En", "To", "Tre"));
...
Integer userInput = ...
// meningsløst, og vil gi typefeil siden acceptItem er spesialisert til String
if (acceptItem(userInput) ... 
PlantUML Macro
class Memory<String> {
	-List<String> possibleItems
	-List<String> expectedItems
	-int acceptedCount
	+Memory(Collection<String>)
	+int getItemCount()
	+int getAcceptedCount()
	+String nextItem()
	+Boolean acceptItem(String)
}

Effekten av å spesialisere med T=String

Her er fullstendig kode for klasser:

...