2012-11-26 4 views
3

나는 약간 Association, Aggregation and Composition에 대해 혼란스러워합니다. 많은 웹 사이트 및 포럼에서이 주제에 관해 논의하고 있지만, 나는 그 중 일부를 읽은 후에 더 혼란스러워졌습니다. 전체를 파괴하면 존재하지 않을 것이다 -Association, Composition and Aggregation - Java로 구현

1) 집계는 :

나는 올바른지 다음과 같은 경우 알고 싶어요. 예를 들어 EngineCar과 함께 또는 포함되지 않을 수 있습니다.

2.) 작곡 - 객체가 파괴되면 존재하지 않습니다. 예를 들어 RoomHouse 없이는 존재할 수 없습니다.

3.) 협회 - 나는 어떤 경우에 이것을 사용해야하는지 잘 모르겠습니다. 누군가가 이에 대해 언급 할 수 있습니까?

가 집계, 컴포지션 자바 코드를 작성하고

4. 협회

에 관해서) 집계

Class Car { 

    private Engine engine; 

    public void setEngine(Engine engine){ 
    this.engine=engine; 
    } 

    public Engine getEngine(){ 
    return engine; 
    } 
} 

나는 집계 협회의 경우, 다음 accessors and mutators 정의가 있어야한다고 생각합니다. 이 올바른지 ?

내 정의에 따르면, Car 개체가 파괴되면 Engine에 액세스 할 수 있다고 언급했습니다. 하지만, 위의 코드에서 hapenning을 볼 수 없습니다. Car 객체가 파괴되면 car.getEngine()처럼 엔진에 액세스 할 수있는 방법이 없습니다. 그러면 어떻게 될까요?

구성은

Public House { 
    private Room room; 
    Public House(){ 
     room = new Room (int noRooms, String nameOfHouse); 

    } 
} 

나는 그것이 C0mposition을인지하고 어떤 accessor mutator 기능이 없을해야한다고 생각합니다. Object Room은 생성자 내에서만 생성되어야합니다. room 개체를 보유하는 인스턴스 메서드는 Private이어야합니까? 나 맞아 ?

참고 : 다시 한번 말하면, 나는 봤는데, 많은 의심의 여지가없는 많은 웹 사이트/포럼을 방문했다. 비슷한 질문이 많은 포럼에 게시되었지만, 나는 이것에 대해서만 혼란스러워했다. 누군가 내 의구심을 해소하도록 도와 줄 수 있습니까? 고맙습니다!

+0

거의 거의 : http://stackoverflow.com/questions/9862286/how-to-write-composition-and-aggregation-in-java?rq=1 – nawfal

답변

2

연결 유형은 구현 방법에 거의 영향을 미치지 않습니다. 그것이 집합 또는 구성이라는 사실은 단지 의미 론적 차이 일뿐입니다.

개체가 일부 데이터베이스에서 유지되는 경우 차이가 나타납니다. 이 경우 컨테이너 개체가 데이터베이스에서 제거되면 포함 된 개체도 연결 유형에 따라 제거되거나 제거되지 않습니다.

1

우리는 또 다른 예 .... 사람과 기업을 집계 협회 ...

사람과 기업이 두 개의 개별 기관이지만, 사람이 회사에서 일할 수 그가 호출을 정의하려면 직원으로서 ... 그래서 직원은 외부 세계에서 사람으로 존재합니다. 그래서 회사가 멸망하더라도 사람은 멸망하지 않을 것입니다 ...

public class Example { 

    public static void main(String[] args) { 
     Person p1 = new Person("Vishal"); 
     Company abc = new Company(p1); 
    } 


} 

class Person{ 
    String name; 
    public Person(String name) { 
     this.name = name; 
    } 
} 

class Company{ 
    Person employee; 
    public Company(Person p1) { 
     employee = p1; 
    } 
} 

나는 회사와 사람의 실제 정의에 가지 않았다, 그러나 나는 지금 느낄 것이라 생각합니다.

반면 구성 연관성은 회사와 부서 간의 연관성입니다. 회사가 멸망하자마자 부서가 이해가 안되기 때문에 부서지기 시작합니다. ...

또 다른 구성 조합의 예는 주문과 다른 주문 항목입니다. 온라인 상점에서 몇 권의 책 (3 권)을 주문합니다. 이 경우 주문이 취소 된 경우 3 개의 주문 라인 (품목)을 취소해야합니다. 따라서 주문 라인의 존재 여부는 주문에만 의존합니다.

관리자는 스 와이프 카드를 사용하여 XYZ 구내에 입장합니다. 관리자 개체와 스 와이프 카드 개체는 서로를 사용하지만 고유 한 개체 수명을가집니다. 즉, 그들은 서로없이 존재할 수 있습니다. 이 관계에서 가장 중요한 점은 단일 소유자가 없다는 것입니다. 집계에 하나의 객체가 다른 객체를 소유 반면

...

그것은 당신이 두번째 요구 사항을 확인하실 수 있습니다 연관에 대해 ...이 세 개념에 좋은 링크입니다

이 ... http://www.codeproject.com/Articles/330447/Understanding-Association-Aggregation-and-Composit

+0

사용 방법을 예를 들어 설명해 줄 수 있습니까? '협회 '? –

+0

@sharonHwk 한 링크로 답변을 편집했습니다. 희망이 도움이 될 것입니다. – Vishal

0

그것은이다 연관성에 대한 모든 가능한 자바 코드를 다루기 란 어려운 질문입니다. Java UML 성경의 일종 인 EclipseUML Omondo를 다운로드하는 것이 가장 좋습니다. 이 도구는 UML에서 Java 로의 매핑에만 사용됩니다. MDD는 없지만 실시간 동기화.Yoiu는 클래스 다이어그램에서 어떤 코드를 볼 수 있습니다.

코드는 그래픽 클래스 다이어그램에서 실시간으로 동기화되므로 모든 가능한 Java 코드를 처리하기 위해 원하는만큼 재생하고 다시 실행할 수 있습니다.

최신 릴리스가 유료 고객에게만 예약 된 경우에도 Java 코드가되어야 하는지를 알 수있는 충분한 시간을 제공하는 30 일 평가판이 있습니다.

1

Vishal의 답변 이외에도 직원 클래스를 확장하여 Person 클래스 대신 Employee 클래스를 보유 할 수 있고 회사가 파괴 될 때 직원이 함께 이동 (쓰레기로 수집)되고 Person이 아닌 . 이것은 현실과 더 유사 할 뿐이며 필요하지 않을 수도 있습니다.