Object-oriented methods : a foundation, 2nd ed