Как составлять алгоритмы на объектно-ориентированных языках (Java)? До этого времени изучал Си. Теперь хочу как-то понять основы ООП и научиться составлять алгоритмы реальных(!) программ на Java или в других ОО языках. Какие литературы есть по этой теме?