Возьмите Страуструпа по плюсам. Ведь все-таки он придумал ООП в том виде который сейчас используется) и лучше чем у него в общем-то вы врядли найдете что-то по тому что вы назвали. Точнее, найдете - но с него лучше начать. Проектирование - банду четырех читайте, и Фаулера. Но без понимания ООП к проектированию рано подходить, так что начните с первого человека, которого я Вам назвал. Тем более что после C будет понятно что происходит в коде)