object oriented software engineering notes