// 의존관계를 가지는 원시코드 class 자동차 { public void 주유하다(주유기 p){ p.휘발유(); } //객체를 메서드의 매개변수로 받아 사용 } class 주유기 { public void 휘발유( ){ System.out.println("휘발유 주입"); } } public class Test { public static void main(String args[]) { 자동차 car = new 자동차(); car.주유하다(new 주유기()); } } //출력 : 휘발유 주입
위의 예는 "어떤 클래스(자동차)가 다른 클래스의 객체(주유기)를 메서드의 매개변수로 받아 사용하는 경우"이다.
class Computer { private CPU cpu = new CPU(); //연관 – 객체 소유 public void speed() { System.out.print("CPU 속도 : " + cpu.get()); } } class CPU { private int s = 3; //CPU 속도 3Ghz public int get() { return s; } } public class Test //프로그램 시작 { public static void main(String[] args) { Computer c = new Computer(); //객체 생성 c.speed(); } } //실행 결과 : CPU 속도 : 3
첫댓글
먼저, 질문한 내용을 정확하게 답변하려면 원시코드를 갖고서 설명해야 합니다.
단지, 시험에서는 서술식으로 출제되는 경우와 원시코드로 출제되는 경우가 있습니다.
<서술식으로 출제되는 경우>
//의존
•의존은 어떤 클래스가 다른 클래스의 객체를 메서드 내에서 사용하는 관계(매개변수, 메서드 호출)
•의존은 한 클래스의 변화가 다른 클래스에 영향을 주는 관계이다.(역은 성립하지 않는다)
•의존 관계는 사용(using) 관계를 나타낸다.(종속 관계)
//연관
•연관은 어떤 클래스가 다른 클래스의 객체를 속성(멤버변수)으로 가지는 경우이다.
•연관은 어떤 클래스가 다른 클래스의 객체를 소유하는 경우이다.(소유 관계)
제가 본인에게 질문 하나할께요.
위에 적은 내용으로 의존과 연관을 정확하게 구별할 수 있습니까?
만약, 정확하게 구분할 수 있다면 코딩을 많이 해본 경우입니다.
그렇지 않으면 뜬구름 잡는 말이 될 수 있습니다.
정확하게 의존과 연관을 구별하려면 원시코드를 이용하여 공부해야 합니다.
// 의존관계를 가지는 원시코드
class 자동차
{
public void 주유하다(주유기 p){ p.휘발유(); } //객체를 메서드의 매개변수로 받아 사용
}
class 주유기
{
public void 휘발유( ){ System.out.println("휘발유 주입"); }
}
public class Test
{
public static void main(String args[])
{
자동차 car = new 자동차();
car.주유하다(new 주유기());
}
} //출력 : 휘발유 주입
위의 예는 "어떤 클래스(자동차)가 다른 클래스의 객체(주유기)를 메서드의 매개변수로 받아 사용하는 경우"이다.
// 연관관계를 가지는 원시코드
class Computer
{
private CPU cpu = new CPU(); //연관 – 객체 소유
public void speed() { System.out.print("CPU 속도 : " + cpu.get()); }
}
class CPU
{
private int s = 3; //CPU 속도 3Ghz
public int get() { return s; }
}
public class Test //프로그램 시작
{
public static void main(String[] args)
{
Computer c = new Computer(); //객체 생성
c.speed();
}
} //실행 결과 : CPU 속도 : 3
위의 예는 "클래스 Computer가 클래스 CPU를 소유"하는 경우이다.
집합과 합성은 의존관계와는 무관하고 연관관계의 특수 형태 입니다.
집합과 합성, 그리고 연관관계에 대해서 설명하려면 설명할 것이 너무 많습니다.
전산공무원 시험에서 출제되는 것과
객체지향언어에서 일반적으로 서술하는 것 차이가 있습니다.
현재 전산공무원 시험에서 출제되는 기준으로 적으면
합성은 객체 생명주기가 일치하는 연관관계
집합은 객체 생명주기가 일치하지 않는 연관관계.