I would like to understand how to be able to combine items in a player's inventory, producing new items. For example, the scenario I have in mind is that the user picks up three key fragments and combines them to create a complete key.

What properties should I model on my item classes to support this behavior, and what should my basic algorithms be?