Содержание
- Сериализация
- Сериализация и десериализация
- Объектные потоки
- Автоматическая сериализация
- Ручная сериализация
- Настраиваемая сериализация
- Сериализация и версионирование
- Сериализация и дескрипторы
- Концепции RMI
- Предназначение
- Схема работы и стек протоколов
- Удаленные интерфейсы
- Stub и Skeleton
- Распределенная сборка мусора
- RMI Registry
- Применение RMI
Домашнее задание 11. Физические лица
-
Добавьте к банковскому приложению возможность работы с физическими
лицами.
-
У физического лица (
Person
) можно запросить
имя, фамилию и номер паспорта.
-
Удалённые физические лица (
RemotePerson
)
должны передаваться при помощи удалённых объектов.
-
Локальные физические лица (
LocalPerson
)
должны передаваться при помощи механизма сериализации,
и при последующем использовании не требовать связи с сервером.
-
Должна быть возможность поиска физического лица по
номеру паспорта, с выбором типа возвращаемого лица.
-
Должна быть возможность создания записи о физическом лице
по его данным.
-
У физического лица может быть несколько счетов,
к которым должен предоставляться доступ
(через
Person
).
-
Счёту физического лица с идентификатором subId
должен соответствовать банковский счёт с id
вида passport:subId.
-
Изменения, производимые со счётом в банке
(создание и изменение баланса), должны быть видны всем
соответствующим
RemotePerson
,
и только тем LocalPerson
,
которые были созданы после этого изменения.
-
Изменения в счетах, производимые через
RemotePerson
,
должны сразу применяться глобально, а производимые
через LocalPerson
– только локально
для этого конкретного LocalPerson
.
-
Реализуйте приложение, демонстрирующее работу с физическим лицами.
-
Аргументы командной строки: имя, фамилия, номер паспорта физического
лица, номер счёта, изменение суммы счёта.
-
Если информация об указанном физическом лице отсутствует, то оно должно
быть добавлено. В противном случае – должны быть проверены его данные.
-
Если у физического лица отсутствует счёт с указанным номером, то
он создается с нулевым балансом.
-
После обновления суммы счёта новый баланс должен выводиться на консоль.
-
Напишите тесты, проверяющие вышеуказанное поведение как банка, так и приложения.
-
Для реализации тестов рекомендуется использовать
JUnit
(Tutorial).
Множество примеров использования можно найти в тестах.
-
Если вы знакомы с другим тестовым фреймворком
(например, TestNG),
то можете использовать его.
-
Добавьте jar-файлы используемых библиотек в каталог
lib
вашего репозитория.
- Нельзя использовать самописные фреймворки и тесты,
запускаемые через
main
.
- Сложный вариант
-
На каждом счету всегда должно быть
неотрицательное количество денег.
-
Тесты не должны рассчитывать на наличие запущенного
RMI Registry.
-
Создайте класс
BankTests
, запускающий тесты.
-
Создайте скрипт, запускающий
BankTests
и возвращающий код (статус) 0
в случае успеха и 1
в случае неудачи.
-
Создайте скрипт, запускающий тесты с использованием
стандартного подхода для вашего тестового фреймворка.
Код возврата должен быть как в предыдущем пункте.
-
Приложения и тесты должны находится в пакете
info.kgeorgiy.ja.*.bank
и его подпакетах.