[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}", name, maker);
}
}
class PencilCase:IEnumerable
{
Pen[] buffer;
public PencilCase(int capacity)
{
buffer = new Pen[capacity];
}
public Pen this[string key]
{
get
{
foreach(Pen pen in buffer)
{
if(pen == null)
{
break;
}
if(pen.ToString() == key)
{
return pen;
}
}
return null;
}
set
{
int i;
for (i = 0; i<buffer.Length;i++)
{
if(buffer[i]==null)
{
break;
}
if(buffer[i].ToString() == key)
{
return;
}
}
if(i != buffer.Length )
{
buffer[i] = value;
}
}
}
public IEnumerator GetEnumerator()
{
return buffer.GetEnumerator();
}
}
class Program
{
static string MakeString(string name,string maker)
{
return string.Format("상품명:{0} 제조사:{1}", name, maker);
}
static void Main(string[] args)
{
PencilCase pc = new PencilCase(10);
string maker = "언휴";
string name;
for(int i = 0; i<10;i++)
{
name = i.ToString();
pc[MakeString(name, maker)] = new Pen(maker, name);
}
foreach(Pen pen in pc)
{
Console.WriteLine(pen);
}
}
}
}
'언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
매우 초보스런 단위테스트 예 (0) | 2017.09.20 |
---|---|
[C# OOP 실습] 캠퍼스 생활 (0) | 2017.09.15 |
[C# 소스] 클래스 간의 관계 - 5. 의존(Dependency) 관계 (0) | 2017.09.14 |
[C# 소스] 클래스 간의 관계 - 4. 연관(Association) 관계 (0) | 2017.09.14 |
[C# 소스] 클래스 간의 관계 - 3. 직접 연관(DIrected Association) 관계 (0) | 2017.09.14 |
[C# 소스] 클래스 간의 관계 - 1. 일반화(Generalization)관계 (0) | 2017.09.14 |
[C# 캡슐화 실습] 캠퍼스 생활 - 학생 클래스 정의하기 (0) | 2017.09.13 |
[C# 실습] 도서 관리 프로그램 - 인덱서 정의 (0) | 2017.09.12 |
[C# 배열 실습] 성적 관리 프로그램 (0) | 2017.09.06 |
[C# 제어문 실습] 다이아몬드 출력 (0) | 2017.09.05 |