Это, вероятно, раздражает толпу "вам не нужен вонючий UML, просто напишите код".Но в любом случае ...
Вам не нужно изучать Java - или любой другой язык программирования - прежде чем изучать принципы объектной ориентации.На самом деле, есть некоторые преимущества для , а не изучения Java (или аналогичного) в первую очередь.
Я бы не стал беспокоиться о том, что Sun объявит Java предварительным требованием для UML.Их точка зрения отличается от вашей (то есть они хотят погрузить вас в Java, а затем «прогрессировать» в «дизайн»).
Это, конечно, баланс.Вот некоторые вещи, которые следует иметь в виду:
- Возможно, самый важный навык в разработке ОО-программного обеспечения - это умение идентифицировать хорошие абстракции из проблемной области.(см., например, дизайн, управляемый доменом ).Диаграммы классов UML - хороший способ проиллюстрировать эти абстракции (классы) и их отношения.
- Бит отношений чрезвычайно важен - и слишком часто недооценивается.Ключ к пониманию предметной области и ее правильному представлению - это понимание отношений.Это секретный соус.Диаграммы классов UML дают гораздо лучший словарный запас и нотацию для документирования отношений, чем любой язык программирования .
- Изучите принципы инкапсуляции.В частности, отделение интерфейса от реализации.Это не относится к UML (и на самом деле UML не особенно хорош в его поощрении).Тем не менее, Java хуже - намного хуже.Java не в состоянии поддерживать инкапсуляцию свойств.Чтобы по-настоящему понять это, прочитайте первые несколько глав Построения объектно-ориентированного программного обеспечения Бертрана Мейера .
- Узнайте о распределении поведенческой ответственности между классами.Если выявление статических отношений является первым ключевым принципом хорошего ОО, это второе (и основывается на инкапсуляции).Функциональность уровня приложения достигается взаимодействием между объектами.Опять же, это не зависит от любого языка программирования.Диаграммы активности и последовательности UML хороши для этого.
Это плюсы для первого подхода к ОО.UML - хороший язык для визуализации этих вещей.Самый большой недостаток: отсутствие исполняемости.Ничто не подкрепляет понимание лучше, чем "запуск" вашего дизайна.Существует очень мало инструментов UML, которые поддерживают выполнение ваших моделей (также называемых «симуляцией»).Именно здесь языки программирования намного лучше - см., Например, множество структур модульных тестов.Однако есть некоторые инструменты UML, которые поддерживают выполнение, возможно, стоит их проверить.
Немного длинного ответа, извиняюсь за это.Чтобы вкратце ответить на ваш первоначальный вопрос: нужно ли изучать Java перед изучением UML?Определенно нет.
hth.