Strategies and Techniques to Design Object-Oriented Programming