반응형

클래스 간의 관계 7

[C# 소스] 클래스 간의 관계 - 5. 의존(Dependency) 관계

[C# 소스] 클래스 간의 관계 - 5. 의존(Dependency) 관계 의존 관계는 다른 개체의 변화가 발생했을 때 자신에 영향을 받는 개체 사이의 관계입니다. 그리고 특정 개체의 생성을 담당할 때도 의존 관계로 표현합니다. GUI(Graphic User Interface) 프로그램에서 특정 데이터의 정보를 화면에 표시하는 컨트롤과 데이터 사이에는 의존 관계로 표현할 수 있습니다. UI 컨트롤을 통해 사용자가 개체의 속성을 입력하면 의존 관계에 있는 개체의 속성을 변경해야겠죠. 혹은 개체의 속성이 변하면 UI 컨트롤을 통해 변경한 정보를 사용자에 알려주어야 할 것입니다. 이 책에서는 GUI를 다루고 있지 않아 이와 같은 의존 관계는 표현하지 않을 거예요. 소프트웨어 설계에 관한 많은 레퍼런스에서는 UI..

[C# 소스] 클래스 간의 관계 - 4. 연관(Association) 관계

[C# 소스] 클래스 간의 관계 - 4. 연관(Association) 관계 연관 관계는 명령 개체와 피 명령 개체가 명확하지 않은 관계입니다. 프로그램에서는 연관 관계로 표현하지 말고 직접 연관 관계로 표현하는 것이 안전합니다. 연관 관계는 약사와 의사처럼 “약사와 의사는 환자 치료에 연관이 있다.”와 같이 수평적인 관계입니다. 의사는 환자 치료를 위해 어떠한 약을 처방받아 먹고 있는지 알 수 있어야 합니다. 또한 약사는 약을 조재하기 위해서는 의사의 처방이 필요합니다. 그런데 이와 같은 관계에서 프로그램을 잘못 작성하여 버그가 날 위험이 많습니다. 예를 들어 의사의 “치료하다” 기능에서 약사의 “조재하다”를 호출하게 구현하고 약사의 “조재하다” 기능에서 의사의 “치료하다”를 호출한다면 스택 오버 플로우..

[C# 소스] 클래스 간의 관계 - 3. 직접 연관(DIrected Association) 관계

[C# 소스] 클래스 간의 관계 - 3. 직접 연관(DIrected Association) 관계 직접 연관 관계는 프로그램에서 가장 흔하게 볼 수 있는 관계로 명령을 내리는 개체와 명령을 받아 수행하는 개체의 관계입니다. “고용자는 피 고용자에게 일을 시킬 수 있다.” 처럼 프로그램 세계에서는 매우 자연스러운 관계입니다. 목적 집단에서 목적을 달성하기 위해 상하 관계가 존재하는 것처럼 프로그램도 특정 목적을 수행하기 위한 코드 집합이어서 직접 연관 관계가 필요합니다. using System; namespace 직접연관관계 { class Employee { int capa; string name; public Employee(int capa, string name) { this.capa = capa; th..

[C# 소스] 클래스 간의 관계 - 2. 집합(Aggregation) 관계

[C# 소스] 클래스 간의 관계 - 2. 집합(Aggregation) 관계 필통과 펜의 관계처럼 "필통은 펜을 보관할 수 있다."라는 논리적 관계를 집합이라 합니다. 집합 관계에서는 소유 개체와 피 소유 개체의 생성 시기와 소멸 시기가 같지 않아도 됩니다. using System; using System.Collections; namespace 집합_관계 { class Pen { string maker; string name; public Pen(string maker, string name) { this.maker = maker; this.name = name; } public override string ToString() { return string.Format("상품명:{0} 제조사:{1}", n..

[C# 소스] 클래스 간의 관계 - 1. 일반화(Generalization)관계

[C# 소스] 클래스 간의 관계 - 1. 일반화(Generalization)관계 음악가와 피아니스트와 같이 "피아니스트는 음악가이다."라는 논리적 관계를 형성하는 관계를 일반화 혹은 파생 관계(Derivation)라 합니다. 이와 같은 일반화 관계에 있을 때 기반이 되는 클래스에 정의되어 있는 멤버를 파생 클래스에서는 상속을 받게 되며 OOP의 중요한 특징 중의 하나라고 할 수 있습니다. using System; namespace 일반화_관계 { class Musician { public void Play() { Console.WriteLine("음악가 연주하다."); } } class Pianist:Musician { public void Tuning() { Console.WriteLine("조율하다...

[C++ 무료 동영상 강의] 61. 클래스 간의 관계

[C++ 무료 동영상 강의] 61. 클래스 간의 관계 다루는 내용일반화 관계(Generalization),집합 관계(Aggregation), 구성 관계(Composition),직접 연관 관계(Directed Association),연관 관계(Association),의존 관계(Dependency), 실현 관계(Realization) 앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다. 본문[디딤돌 C++] 61. 클래스 간의 관계

[C++] 61. 클래스 간의 관계

[C++] 61. 클래스 간의 관계 이번에는 프로그래밍할 때 개발자가 정의하는 형식과 형식 사이에 관계를 알아보기로 합시다. 여기에서는 UML에서의 클래스 다이어그램에 표현할 수 있는 관계를 기준으로 표현할게요. UML에서 클래스 사이의 관계는 7 가지로 표현할 수 있습니다. 일반화(Generalization) 관계: “피아니스트는 음악가이다.”27. 상속(일반화 관계) 개요 집합(Aggregation) 관계: “필통은 연필들과 지우개 등을 보관할 수 있다.”62. 집합(AGGREGATION) 관계구성(Composition) 관계: “사람은 눈과 귀 등을 가지고 태어난다.”63. 구성(COMPOSITION) 관계직접 연관(Directed Association) 관계: “고용주는 피고용인에게 일을 시킨다...

반응형