Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > [Тестовое задание] Модель работы турникета


Автор: Pitbul 21.12.2010, 17:15
Доброго времени суток всем. Недавно получил тестовое задание. В нем просят выполнить следующую задачу по постройке модели работы турникета.

Турникет контролирует входе пассажиров в МЕТРО. Для этого используются карточки нескольких типов:

1) Такие, что действуют по термину: 1 день, 10 дней.
2) Такие, что действуют на количество проездов: 2 поездки на 1 день, 10 поездок на месяц.
3) Пенсионные безлимитные.

Турникет должен быть связан с системой, в которой ведется реестр выданных карт. В этой системе можно создать карту, пополнить счет или заблокировать ее.

Данные о карте хранятся на смой карте: уникальный номер, тип карты, дата окончания срока, количество поездок и т. п.

Турникет считывает данные с карты, если срок действия и количество поездок в норме, то отнимается одна поездка, а иначе выводи на экран сообщение о невозможности осуществить проезд.

Условия для выполнения задания:

1.     Наследование должно быть применено к иерархии карт.

2.    Инкапсуляция для скрытия данных на проездной карте.

3.     Полиморфизм должен быть применен к проверке карты на "действительность" и для снятия одной поездки.

Это и есть задание smile 

А теперь подскажите пожалуйста на недостатки и пробелы в моем алгоритме решения задачи.

Иерархия проездных карт.

Я начал все строить с класса:

Код

import java.util.Calendar;

abstract class Card
{
    
Calendar DoCR = Calendar.getInstance(); // Date of Card Registration
protected int id; // Номер карты
protected String type; // Тип карты
protected boolean active; // Действительность карты
protected int trips; // Количество поездок

}


Вот один из производных классов:
Код

import java.util.Calendar;

class CardUnlim1Day extends Card
{    
    
CardUnlim1Day()
{
    
    this.id = 1;
    this.type = "Безлимитная однодневная карата";
    this.active = true;
    this.trips = 1;
    
    //Установка даты окончания действия карты
    DoCR.get(Calendar.DAY_OF_MONTH);
    DoCR.get(Calendar.MONTH);
    DoCR.get(Calendar.YEAR);
    
    DoCR.add(Calendar.DAY_OF_MONTH, 1);
}
    
}


Главным вопросом для меня сейчас является установка id для каждой новой карты и хранение карт в одном месте.
Для хранения я думаю воспользоваться LinkedList, но не знаю, каким образом решить вопрос с записью smile  
Помогите пожалуйста обдумать алгоритм сохранения информации о картах в LinkedList smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)