So consider you have to create a payment application in which Users transfers money to each other. On first transaction both the sender and the recipient get 100 supercash (virtual currency) and second transaction onwards they get gifts.
Gifts can be of following type:
Whenever you hit the user with the following gifts, you get the value specified against each gift from supercash balance of other user. Now you have to design all the classes in Object Oriented way and specifically design hit method in such a way that there are no race conditions.