2010-12-26 1 views
6

Java에서 가계도 프로그램을 만들거나 적어도 시도하고 있습니다. 나는 여러 클래스 개발 :가계도 프로그램의 논리 코드

  • 사람 - 여러 구성 - 사람 게터 및 설정 부모를위한 세터와 어린이
  • 제품군을 확장 - 이름 성별 연령 등을위한 getter와 세터를 FamilyMember는
  • 가족 구성원 및 추가 방법 구성원 제거
  • FamilyTree는 기본 클래스 인 관계 설정에 사용됩니다.

나는 두 가지 문제가 : 나는 사람들 사이의 관계를 설정해야

1). 현재 내가하고있는 일 :

FamilyMember A, FamilyMember B 
B.setMother(A); 
A.setChild(B); 

위의 예는 어머니와 자식 관계를 설정하기위한 것입니다.

이것은 매우 혼란스러워 보입니다. 모든 관계를 구현하는 데 오랜 시간이 걸리고 있습니다. 덜 절차적인 방법으로 여러 관계를 구현하는 방법에 대한 아이디어가 있습니까?

2) 가계도를 표시 할 수 있어야합니다. 어떻게해야합니까? 인생을 더 쉽게 만들어주는 맞춤 수업이 있습니까? 시간에 대한

감사합니다 ... 클래스 다음과 같은

+0

어떻게 표시 하시겠습니까? – Roman

답변

4

를 사용 구조를 그리는 데 2 ​​세대 이상이 표시되면 충돌을 피하기 어렵습니다 (십자 모양으로 교차하는 선). 따라서 응용 프로그램에서 두 가지로 유지하도록 허용하는 경우 큰 효과가 있습니다.

alt text

또는 수평 : 나도 수직 표시의이 종류를 사용하는 프로그램의 수를 서면으로 작성했습니다

alt text

한 번에 표시 세대 이상이 필요한 경우, 다른 표현을 생각 해낼 필요가 있습니다. 그리고 그들은 같은 수준의 모든 세대를 같은 세대에 보여줄 수 있도록 꽤 희소 해지기 시작할 수도 있습니다.

데이터 구조로 관계를 표현하는 방법과 관련하여 - 음, 지저분합니다. 가장 단순하고 가장 깨끗한 것은 동일한 개인의 어머니와 아버지 인 두 명의 개인이 "결혼"한다는 것입니다. 그러나 여러 파트너, 계단 아이 등을 어떻게 대변하고 싶습니까? 프로그램에서해야 할 일에 대해 더 많이 알지 못하면 대답하기가 어렵습니다. 어쩌면 데이터 세트에 이러한 합병증이없는 것일 수 있습니다. 그렇다고해도 까다로운 경우를 먼저 생각해 보는 것이 좋습니다. 단순한 표현은 어려운 경우를 다루기위한 쉬운 확장에 적합하지 않습니다.

당신이 예상하는 가장 어려운 몇 가지 사례를 직접 (손으로) 그립니다. 어떤 종류의 데이터를 녹음해야하는지, 어떻게 구성해야하는지 알려줄 것입니다. 그릴 때 선택하는 사항 (누가 먼저 오는지, 각 노드에서 사용할 기호와 텍스트 등)은 데이터 구조 결정을 알립니다.

B의 어머니와 A의 자식을 모두 설정하면 중복 된 것처럼 보일 수 있으며 중복으로 인해 오류가 발생합니다. 하나를 선택하십시오. 어느 것? 자, B의 어머니 (A의 성별)를 설정할 때 더 많은 정보가 있습니다. 우리는 정확히 두 명의 부모가 필요하고, 0 명 이상의 자녀가있을 것입니다. 그래서 나는 와 함께 간다. B의 어머니를 설정한다. 당신은 부모가 문제의 개인과 동등한 세트를 고르기 위해 모든 것을 반복함으로써 모든 개인의 자녀를 항상 발견 할 수 있습니다. 실제로 어머니를 저장하는 것 & 아버지 관계 (단순한 부모 관계와 비교하여)는 중복을 줄일 수 있습니다 (개인과 함께 성을 저장한다고 가정 할 때).

0

일 (이것은 의사 코드가 아닌 실제 자바 클래스)

class Node 
{ 

    public Node Parent { get;set;} 

    public List<Node> Childs {get;set;} 

} 

가 관련하여

 Node ultimateGrandParent = new Node(); 
    ultimateGrandParent.Parent = null; 
    ultimateGrandParent.Childs = new List<Node>(); 
+0

나무 구조로보고 싶다. 나의 주요 문제는 관계를 설정하는 것이다. 나는 아빠와 많은 아이들이있을 수있는 가족 수업을 가지고 있습니다. 결혼을 구현하는 방법과 같은 부모와 함께 많은 아이들을위한 설정 관계를 구현하는 방법을 모르겠다 ... 그런 빠른 응답을 주셔서 감사합니다 !! – dr85

0

관계를 덜 구현하는 방법에 대한 아이디어는 입니까?

예, 관계 자체를 개체로 나타낼 수 있습니다. 어떤 두 사람이라도 0 개 이상의 관계를 가질 수 있습니다.

몇 년 전 나는 마스터 이름 인덱스에있는 두 사람 사이의 연관성에 대해보다 일반적으로이를 수행 한 경찰 기록 시스템을 연구했습니다.

관계가 지시 될 수 있습니다. 어머니 --- 어머니 -> - 아이.

관계가 계층적일 수 있습니다. 어머니는 부모입니다.

2) 가계도를 표시 할 수 있어야합니다. 어떻게해야합니까? 밖에 사용자 정의 클래스가 있습니까 인생을 편하게합니까?

예, 그래프 표시를 지원하는 기존 코드가 있습니다. 나는 개인적으로 prefuse visualization toolkit과 함께 좋은 경험을했습니다.

관심있는 프리 퓨즈 트리보기를 찾을 수 있습니다. this example에있는 노드를 클릭하십시오. (그러나 자신이 아닌 다른 가족이 사용하기 위해 소프트웨어를 사용하려는 경우 나무가 부족할 수 있습니다.)