2010-08-05 5 views
3

다음은 간단한 Address 클래스의 초기 사양입니다. 동일한 단순한 '번호'를 가진 아파트의 아파트와 같은 합병증을 무시하기 때문에 단순화 된 것입니다.
29a, 29b).setter를 지정해야합니까?

// 질문
1. 사양에 주어진 주소의 각 속성 : 주소 (다른 개발자가 다른 프로젝트에서 나중에 사용할 수)는 유틸리티 클래스로 봉사하는 가정하는 경우

class Address 
    { 
    private: 
    int number; 
    string name; 
    string postcode; 
    public: 
    //getters implemented but ommited 
    }; 

Address 클래스에 해당 인스턴스 변수에 대한 setter 메서드를 갖춰야하는지 여부를 명시해야합니다. 각 경우에 대해 간단히 설명하십시오.

사람들이 내 과제물에 대한 질문이므로 클래스 주소가 디자인 된 방식에 의문을 제기하지 마십시오.

+0

@Rup : 신경 쓰지 마라, 나는 그것을 뒤로 굴렸다. – BoltClock

+0

그것은 어떻게 사용 될지에 따라 달라집니다 - 생성자에서 모든 것을 한 번 설정하고 불변 또는 일반 속성 클래스를 설정하거나 조회 자체를 수행할지 여부는 달라집니다. 한 번에 주소의 일부를 변경하고 싶지만 postcocde 등을 찾아보고 싶을 수도 있습니다. – Rup

+0

@BoltClock - 실제로 A-ha의 역사를 살펴보고 그는 대부분 C++ 질문을합니다. 어쩌면 당신이 옳았다는 것을 유감스럽게 생각합니다 :-)하지만 임무는 자바가 나에게 말한다. – Rup

답변

8

주소의 출처에 따라 다릅니다. 예를 들어, 데이터베이스에서 읽는다면 올바른 사용 권한이없는 사람들이 데이터베이스 값을 변경하지 않도록 설정 도구를 구현하지 않을 것입니다. 그러나 사용자가이 데이터를 읽은 경우 사용자가 오타 및 조정을하거나 이전 주소 또는 그 중 어느 것을 입력했는지 파악해야하며 변경 사항을 제공해야합니다.

+0

+1 내가 아는 한이 클래스가 사용되도록 모든 가능한 방법을 예측할 수 없으므로이 클래스를 불변으로 만 제한하는 것은 불변의 Address 클래스 만 필요로하는 사용자로 클래스의 사용자를 제한하는 것과 같습니다. 나머지는 자신 만의 가변 클래스를 작성해야합니다. – user336359

5

저에게는 불변 클래스 여야하며 모든 필드는 생성시 설정되고 각각에 대한 getter가 있어야합니다.

1

주소 자체는 변경할 수 없으므로 주소는 변경 불가능해야한다고 생각합니다. 따라서 사람이 주소를 변경하면 새 개체를 첨부해야합니다.

이름이 잘못되었거나 사람의 이름 인 경우 "이름"이 의미하는 바가 확실하지 않습니다.

0

빌드 할 때 모든 필드를 설정하고 각 필드에 대해 getter를 사용하여 내 pov에 변경 불가능한 클래스 여야합니다.

건설 후에 주소를 변경해야하는 경우, 전체 필드 세트에 대한 설정자를 생각해보십시오. 단일 필드의 수정으로 인해 오브젝트 데이터가 일치하지 않게됩니다. 개체 사용에 완전히 의존합니다.

관련 문제