Książka do programowania obiektowego/javy

Witam!

Szukam tutoriali/ksiązki która dobrze wyjaśnia aspekty programownia obiektowego takie jak np. code smell, czy przypisywanie jednych klas do drugich. Najlepiej żeby była napisana w stylu symfonii C++. Może być po angielsku. Mógłby ktoś coś polecić?

Ogólnie, jeśli chodzi o Javę, to polecam wszystko duetu D. Geary, C. Horstmann. Fajnie napisane i dużo można wyciągnąć.

Która dokładnie książka?

Ja ostatnio czytam książki do refaktoringu i tam jest masa tego typu pomocy. Co mogę polecic:

R. Martin “czysty kod”

Michael Feathers" Praca z zastanym kodem"

Refaktoryzacja do wzorców projektowych Joshua Kerievsky