이번 강의는 연관 관계(Association) 실습입니다.
연관 관계는 두 형식 개체가 협업하는 관계입니다. 현실 세계에서는 수평적인 관계가 이상적이라 생각할 수 있어요. 하지만 프로그램 세계는 명확한 목적을 수행하는 목적 집단입니다. 목적 집단에서는 명확한 수직 관계로 조직화합니다.
프로그램에 연관 관계가 있을 때 협업하는 메서드를 수행할 때 매우 위험할 수 있어요. 서로 상대의 협업 메서드를 호출하면 실제 메서드는 끝나지 않고 스택 메모리 Overflow가 발생할 수 있는 것입니다.
이번 실습에서는 이러한 위험성을 확인해 보기로 해요.
실습할 소재는 의사와 약사 사이의 협업입니다.
의사는 “약사와 함께 일하다.”, “치료하다.” 기능을 제공합시다.
약사는 “의사와 함께 일하다.”, “조재하다.” 기능을 제공합시다.
이를 클래스 다이어그램으로 표시하면 두 형식 사이에 실선으로 연관 관계를 표시합니다.
using System; namespace 연관_관계_실습 { class Druggist { public void WorkWith(Doctor doctor) { Console.WriteLine("약사 - WorkWith"); doctor.WorkWith(this); Hasty(); } public void Hasty() { Console.WriteLine("조재하다."); } } }
using System; namespace 연관_관계_실습 { class Doctor { public void WorkWith(Druggist druggist) { Console.WriteLine("의사 - WorkWith"); druggist.WorkWith(this); Treatment(); } public void Treatment() { Console.WriteLine("치료하다."); } } }
//https://ehpub.co.kr //실습으로 다지는 C# //연관(Association) 관계 실습 - 의사, 약사 using System; namespace 연관_관계_실습 { class Program { static void Main(string[] args) { Doctor doctor = new Doctor(); Druggist druggist = new Druggist(); Console.ReadKey(); doctor.WorkWith(druggist); } } }