Корпоративный архитектор из Sparx утверждает, что может перепроектировать Java-код, включая создание диаграмм последовательности - см. Этот раздел руководства пользователя
можете записать сеанс отладки, а затем вы сгенерируете диаграмму последовательности из этого
Я не пробовал (хотя использовал EA в качестве инструмента моделирования), так что ymmv!
Есть бесплатный 30-дневный доступна загрузка оценки
Внутренний класс - это просто способ четко разделить некоторые функции, которые действительно принадлежат исходному внешнему классу. Они предназначены для использования, когда у вас есть 2 требования:
Учитывая эти требования, внутренние классы имеют полный доступ к своему внешнему классу. Поскольку они в основном являются членами внешнего класса,
Внутренний класс (для для целей контроля доступа), который считается частью содержащего класса. Это означает полный доступ ко всем частным лицам.
Это реализовано с использованием синтетических методов, защищенных пакетом: внутренний класс будет скомпилирован в отдельный класс в том же пакете (ABC $ XYZ).
Поскольку ваш метод main ()
находится в классе ABC
, который может получить доступ к собственному внутреннему классу .
Ограничения доступа устанавливаются для каждого класса. Метод, объявленный в классе, не может не иметь доступа ко всем членам экземпляра / класса. Само собой разумеется, что внутренние классы также имеют неограниченный доступ к членам внешнего класса, а внешний класс имеет неограниченный доступ к членам внутреннего класса.
Логика внутренних классов такова: внутренний класс во внешнем классе, потому что им нужно будет совместно использовать несколько вещей, и поэтому для них имеет смысл иметь большую гибкость, чем у "обычных" классов.
Если в вашем случае, для классов нет смысла видеть внутреннюю работу друг друга - что в основном означает, что внутренний класс можно было бы просто сделать обычным классом, вы можете объявить внутренний класс как статический класс XYZ
. Использование static
будет означать, что они не будут совместно использовать состояние (и, например, new ABC (). New XYZ ()
не будет работать, и вам нужно будет использовать new ABC.XYZ ()
.
Но в этом случае вам следует подумать о том, действительно ли XYZ
должен быть внутренним классом и, возможно, он заслуживает своего собственного файла. Иногда имеет смысл создать статический внутренний класс (например, если вам нужен небольшой класс, реализующий интерфейс, который использует ваш внешний класс, и который больше нигде не поможет). Но примерно в половине случаев он должен был стать внешним классом.