2014-10-11 1 views
0

Предисловие: Это назначение, поэтому у меня есть имена пользователей и паролей в виде обычного текста в CSV-файле.Создание объектов на основе переменной в CSV-файле

Вот что я дал: username, password, staff type как мой файл данных.

Последнее существо либо E для Employee, M для Manager или C для Contractor. Каждый из них представлен их собственными классами, с их собственными методами.

Я реализовал функцию, которая аутентифицирует имя пользователя/пароль, который вводит пользователь. Я просто зациклился на том, как создать объект, основанный на последнем значении staff type.

Моего наивное решения сначала было сделать что-то вроде:

if (staffType.equals("E")) { 
    Employee user = new Employee(); 
else if (staffType.equals("C")) { 
    Contractor user = new Contractor(); 
else if (staffType.equals("M")) { 
    Manager user = new Manager(); 
} 

Однако я тогда попытался обернуть это в методе, и я застрял на том, что ставить в качестве возвращаемого типа. У меня был разрыв в год с Java и OO в целом, поэтому, к сожалению, все понятия полиморфизма, наследования, общие методы и т. Д. Для меня нечеткие.

Очевидно, что в свете этого задания я не хочу полной реализации, просто намек в правильном направлении.

Спасибо всем

ответ

1

если вы нашли IS_A соотношения в этих классах (например, менеджер является сотрудников), то вы должны использовать наследование для их реализации:

Class Employee 
Class Manager extends Employee 

и типа возвращаемого значения в этом растворе Employee.

public Employee create(String staffType) { 
    Employee user = null; 
    if (staffType.equals("E")) { 
     user = new Employee(); 
    else if (staffType.equals("M")) { 
     user = new Manager(); 
    }  
    .... 
    return user; 
} 

еще вы можете использовать интерфейс, как тип возвращаемого значения:

Class Employee implements Createable 
Class Manager implements Createable 

и все общие методы Employee и Manager необходимо определить в Createable.

interface Createable { 
    void method1() 
    .... 
} 

, а затем:

public Employee create(String staffType) { 
    Creatable user = null; 
    if (staffType.equals("E")) { 
     user = new Employee(); 
    else if (staffType.equals("M")) { 
     user = new Manager(); 
    }  
    .... 
    return user; 
} 
2

Вы должны создать иерархию, например. например, Менеджер и Подрядчик являются Работниками, поэтому они должны расширить класс Employee. Что-то вроде этого:

class Employee 

class Manager extends Employee 

class Contractor extends Employee 

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

Смежные вопросы