2011-12-06 24 views
0
您想创建一个用于管理电话簿的程序。 为每个人提供了以下个人信息:
 
Surname 
Name 
Title 
E-mail address (can not contain spaces and must contain the @ symbol) 
Company 
Position 
对于每一个可以存储以下电话号码的人(每个类别)
 
Home 
Office 
Mobile Phone. 
还可以存储其他电话号码列表。对于每个其他号码,您必须存储电话号码 数字的描述。

这是我今晚必须在Java中做的作业。 我的问题是我如何实现各种类别:家庭,办公室,ecc ...哪个是实现这些类别的最佳解决方案?也许是一个枚举?在Java中实现类别的解决方案

这是我的实现:

import java.util.*; 

public class Persona { 

private String Name; 
private String surname; 
private String title; 
private String mail_addr; 
private String company 
private String position; 
private Phone homePhone; 
private Phone officePhone; 
private Phone mobilePhone; 
private Collection<Phone> otherphonesList 

public Persona(String n,String s,String t,String m,String c,String p,Phone hp,Phone of,Phone mp,Collection<Phone> otherphones) 
{ 
    name=n; 
    surname=s; 
    title=t; 
    mail_addr=m; 
    company=c; 
    position=p; 
    homePhone=hp; 
    officePhone=of; 
    mobilePhone=mp; 
    otherphonesList=new ArrayList<Phone>(otherphones); 
} 

public String getName() 
{ 
    return name; 
} 

public String getSurname() 
{ 
    return surname; 
} 

public String getTitle() 
{ 
    return title; 
} 

public String getMail() 
{ 
    return mail_addr; 
} 

public String getCompany() 
{ 
    return company; 
} 

public String getPosition() 
{ 
    return position; 
} 
} 


public class Phone { 

private String phone; 
private String description; 

public Phone(String phone,String description) 
{ 
    this.phone=phone; 
    this.description=description; 
} 

public String getPhone() 
{ 
    return phone; 
} 

public String getDescription() 
{ 
    return description; 
} 


} 
+0

并且不要忘记'title'字段:) – Matten

+1

并且,请遵循[Java Code Conventions](http://www.oracle.com/technetwork/java/codeconv-138413.html)。 S /姓名/名称。 – Artem

回答

2

你可以写一个电话簿类领域,你需要:

public class PhoneBook { 
    private Phone homePhone; 
    private Phone officePhone; 
    private Phone mobilePhone; 
    private List<Phone> otherPhones; 
    ..getters/setters.. 
} 

public class Phone { 
    private String phone; 
    private String description; 
    ..getters/setters.. 
} 
+0

我对此解决方案...创建一个类型的电话 – Mazzy

+0

对于这些类别,使用'enum'注意:对于家庭作业类型的问题,通常最好是给出建议而不是完整的解决方案 –

+0

为什么使用enum如果我已经创建了属性homePhone, officePhone ...? – Mazzy

1

你可能有一个看Map类来存储的电话号码,并添加访问器适用于家庭,办公室和移动电话条目。

+0

-1用于暗示已弃用的类。自Java 1.2以来,应该使用'Map'。 –

+0

@Aaron Digulla - 当然你是对的。我编辑了我的帖子。作为一个C#开发人员词典是我想到的第一个类:)应仔细阅读链接页面,尤其是在顶部的大胆部分... – Matten

+0

而且我无法撤销downvote,因为SO坚持认为答案还没有被编辑,因为我downvoted它: - ((((该死的:-( –

1

enum s为如果一个很好的解决方案:

  1. 项目的数量是固定的
  2. 的所有信息项目也是固定的(不加载外部文件/资源​​/等)。

在实际应用中,您可能需要在显示器上显示类别。这包括将类别转换为用户的语言,这意味着存在外部依赖性。

在这种情况下,您可以使用enum作为工厂的关键字,为工厂提供enum中每个条目的文本。工厂将您的常量枚举从现实世界中的变量中解耦出来(例如用户界面中不同的/不断变化的翻译)。

相关问题