NOC:Object Oriented System Development using UML, Java and Patterns