б. Аналогично для счета юридического лица добавьте владельца Company , свяжите анонимной ассоциацией с CompanyAccount и укажите подходящие названия полюсов.
в. Добавьте класс адреса Address с атрибутами строкового типа street , city и целочисленным положительным building . Укажите с помощью новых анонимных ассоциаций, что Person может иметь адрес регистрации registeredAt , фактический адрес actual , в то время как компания связана с одним юридическим адресом legalAddress и может иметь почтовый адрес postAddress .
1.2.Интерфейс Stack определяет операции помещения в стек push с параметром obj типа Element , операцию получения элемента из стека pop с возвращаемым значением типа Element . При решении задачи используйте диаграммы классов.
а. Добавьте в интерфейс Stack операции очистки стека reset , которая не имеет параметров, статическую операцию создания нового стека createNew с возвращаемым значением типа Stack .
б. Покажите, что интерфейс Stack зависит от типа данных Element .
в. Добавьте класс ListStack , который реализует интерфейс Stack . Покажите реализуемые классом операции интерфейса.
г. Добавьте в класс ListStack частное структурное свойство arr типа Element с кратностью больше нуля, значения которого упорядочены и могут повторяться.
д. Добавьте частный целочисленный атрибут increment только для чтения и защищенную операцию изменения размера resize с целочисленным параметром newSize .
е. Покажите на диаграмме экземпляров экземпляр stack класса ListStack , свойство arr которого содержит элемент first типа Element первым и second того же типа вторым. Укажите, что атрибут increment экземпляра stack равен 10 .
1.3.В пространстве имен Time расположены перечисления Month , DayOfWeek , а также классы Date и Period . При решении задачи используйте диаграммы классов.
а. Укажите, что перечисление Month может принимать значения: Jan , Feb , Mar , Apr , May , Jun , Jul , Aug , Sep , Oct , Nov , Dec .
б. Укажите, что перечисление DayOfWeek может принимать значения: Mon , Tue , Wed , Thu , Fri , Sat , Sun .
в. Добавьте классу Date частные атрибуты year , month , dayOfMonth типа Integer , а также общедоступные операции:
– получения года getYear типа Integer ; – получения месяца getMonth типа Month ; – получения дня getDayOfMonth типа Integer ; – получения дня недели getDayOfWeek типа DayOfWeek .
г. Добавьте классу Date общедоступную статическую операцию now () типа Date .
д. Добавьте классу Period общедоступную статическую операцию between . У операции два аргумента: from и to . Оба аргумента имеют тип Date . Операция возвращает значение типа Period
е. Добавьте классу Date операцию plus c аргументом delta типа Period . Результат операции – значение типа Date .
1.4.Класс MyWindow уточняет абстрактный базовый класс Window . MyWindow состоит (композиция) из кнопки класса Button и надписи класса Label . Отобразите на диаграмме классов.
а. Класс Label имеет частный атрибут text типа String и общедоступную операцию setText c параметром text типа String .
б. Композиция между MyWindow и Button называется HoldsButton . Полюс со стороны кнопки имеет имя okButton , защищенную видимость, кратность 1 . Композиция между MyWindow и Label называется HoldsLabel . Украшения полюса со стороны Label : название textLabel , частная видимость, кратность 1 .
в. Для реакции на события кнопки реализован паттерн Слушатель (Listener) следующим образом. Класс Button предоставляет операцию setClickListener с единственным параметром l типа IClickListener . Интерфейс IClickListener содержит единственную операцию onClick без параметров.
г. Класс MyWindow реализует интерфейс IClickListener для реакции на нажатие кнопки. Отобразите на диаграмме, что между классом Button и MyWindow есть ассоциация с именем NotifyListener с направлением от кнопки к окну. Укажите, что полюс со стороны окна называется listener , имеет тип IClickListener , множественную кратность и частную видимость.
д. И Label и Button имеют строковый атрибут text , который можно менять с помощью метода setText . Вынесите общий атрибут и метод в абстрактный базовый класс TextWidget .
е. Отобразите на диаграмме объектов, как в процессе выполнения объекты связаны между собой: объект window класса MyWindow связан с кнопкой button класса Button и с надписью label класса Label .
Читать дальше
Конец ознакомительного отрывка
Купить книгу