Object-oriented software construction