In reply to MICRO_91:
You should be careful with your words.
As a UVM Coach and Trainer I see what people are doing with the UVM. Of course you can do what you like. But in most cases you are limiting the power of the UVM. When learning the wrong things you will do them also in your projects resulting bad examples.
At least you should follow the approach using the test/environment/agent appraoch.
A simple example of bad UVM code is using $display. Doing so you did not understand the power and the benefit of the UVM reporting mechanism.