object oriented programming notes