2011-12-06 22 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中每個條目的文本。工廠將您的常量枚舉從現實世界中的變量中解耦出來(例如用戶界面中不同的/不斷變化的翻譯)。

相關問題