Теперь, если мы сравним карточку CRC с нашей диаграммой классов, вы можете заметить, как некоторые из обязанностей карточки превратились в свойства в диаграмме классов.
Некоторые из них стали операцией.
Конечно, вы можете использовать CRC-карточки для абстрагирования объекта, но тут возникают двусмысленности, которые препятствуют программисту перевести CRC-карточку в код.
Одна из двусмысленностей заключается в том, что CRC-карточка не показывает разделения между свойствами и операциями.
Все они перечислены вместе.
Теперь, когда у нас есть представление диаграммы классов, давайте реализуем его в код Java.
Диаграммы классов очень близки к реализации, что делает перевод на Java очень простым.
Имя класса в диаграмме превращается в класс в Java.
Свойства в диаграмме классов превращаются в переменные-члены.
И, наконец, операции превращаются в методы.
Преобразование кода в диаграмму классов также является простым.
Несмотря на дополнительные подробности, которые может предоставить диаграмма классов, CRC-карточки успешно используются для имитации и прототипирования различных конструкций.
А тот факт, что они далеки от кода, заставляет вас сосредоточиться на задаче, а не на реализации.
С другой стороны, диаграммы классов намного ближе к коду, и вы можете четко передать свой технический дизайн разработчикам.
Но поскольку вам нужно указать специфичные для кода вещи, такие как списки параметров и возвращаемые значения, диаграммы классов слишком детализированы для концептуального дизайна.
Детали будут отвлекать и отнимать много времени, при создании первоначальных проектов.
Принцип Инкапсуляции в UML
Теперь, когда вы понимаете основные принципы объектно-ориентированного программирования, вам нужно научиться их применять.
Давайте посмотрим, как применить инкапсуляцию.
Как вы помните, инкапсуляция включает в себя три идеи.
Во-первых, вы объединяете данные и функции, которые управляют данными, в автономный объект.
Во-вторых, вы можете предоставить определенные данные и функции этого объекта, чтобы к ним можно получить доступ из других объектов.
И в-третьих, вы можете ограничить доступ к определенным данным и функциям только внутри этого объекта.
Итак, как это выглядит в коде?
И как выглядит в дизайне?
Прежде чем перейти к написанию кода, давайте посмотрим на некоторые обозначения в диаграмме классов UML, которые выражают инкапсуляцию.
Если вы создаете систему, которая моделирует студента с использованием инкапсуляции, вы должны иметь все соответствующие данные, определенные в атрибутах класса студента.
Вам также понадобятся публичные методы, которые будут обращаться к атрибутам.
В