반응형

객체지향프로그래밍 연습 (UML 작성 하기)
강아지 수용소 문제 객체지향 프로그래밍연습 UML 이용

*객체지향연습 문제
미국의 다코타에 있는 강아지 수용소는 그것의 활동을 추적하는 객체지향 해법을 필요로 한다. 시의원은 다음에 나오는 정보를 당신에게 제출하였다. 강아지 수용소는 길 잃은 개를 모으고 수용량은 50마리이다. 3대의 트럭으로 개를 모으고 각각의 수용량은 5마리이다. 만약 수용소의 수용량이 초과되면 길 잃은 개를 모으는 것이나 채용하는 것에 대한 요금을 감소시키고 개를 모으는 것 보다 주인에게 티켓을 발행한다. 개가 수용소로 들어갈 때 수용소는 꼬리표를 사용하여 현재의 이름, 품종, 주인 그리고 또 다른 정보를 찾아낸다. 개의 것이 될 이름 및 식별을 할당한다. 개가 어떠한 감염증이 있는지 탄을 필요로(안락사..)하는지 결정하기 위해 시험을 하여야 한다. 강아지 수용소는 강아지에게 사료를 먹이고 모든 개들이 필요로 하는 충분한 양의 먹이를 지켜 공급해야 한다. 먹이의 총계는 각 개의 크기와 나이에 의해 결정된다. 개가 수용소에 한 달을 머물게 되면 다른 주인에게 양도 준비해야 합니다. 40달러의 양도 요금이 있습니다. 사람들은 수용소로 와서 그들의 개를 되찾거나(이 경우 그들은 반드시 개를 찾기 위하여나 어떠한 치료비를 지불해야 한다.) 새로운 개를 사기하기 위해 비용을 지불한다.

<목차>

< 강아지 수용소 문제 객체지향 프로그래밍연습 UML 이용 >
1. 과제 접근 마인드
2. UML에정의된 다이어그램의종류:(1),(2)을 문제에맞게작성해보았다.
2.1 (1) 유즈 케이스 다이어그램(Use Case Diagram)
2.2 (2) 클래스 다이어그램(Class Diagram)
3. UML 이용 객체지향 프로그래밍 실제로 해 보기
3.1 간략화한 문제 해결 클래스 다이어 그램
3.2 실제 구현 코드
3.3 코드실행화면(실행환경.NET C++ARCHITECT 2003 FW1.0)
4. 마무리 글... (과제 수행에서의 한계점...)
5. 참고 문헌 및 웹 사이트

참고 : 컴파일 실행 환경
- .NET C++ ARCHITECT 2003 Framework 1.0

소스 파일 지참 - 구현코드(dog.cpp:Visual C++실행 가능)

1. 과제 접근 마인드

UML의 모든 문법을 습득하여 주어진 문제에 대한 UML을 그려낸다는 것은 힘들다는 판단을 하였다. 하지만, 습득할 수 있는한 UML의 표준 문법들을 최대한 적용을 하여 주어진 문제에 대한 UML을 그려낼 수 있도록 노력했다.

객체지향 이야기라는 책을 발췌 학습을 하였는데, UML에 정의된 다이어 그램의 종류는 한 가지가 아니며, UML 작성에서 이 여러 가지 다이어 그램을 그려나가는 순서가 있다는 것을 알게 되었다.

2. UML에정의된 다이어그램의종류:(1),(2)을 문제에맞게작성해보았다.

- (1) 유즈 케이스 다이어그램(Use Case Diagram)
- (2) 클래스 다이어그램(Class Diagram)
- (3) 시퀀스 다이어그램(Sequence Diagram)
- (4) 협동도(Collaboration Diagram)
- (5) 상태도(State Diagram)
- (6) 행위도(Activity Diagram)
- (7) 배치도(Deployment Diagram)

2.1 (1) 유즈 케이스 다이어그램(Use Case Diagram)

2.2 (2) 클래스 다이어그램(Class Diagram)

3. UML 이용 객체지향 프로그래밍 실제로 해 보기

: 원래 주어진 문제 조건으로는 프로그램이 너무 복잡하고 어려운 것 같아. 문제의 조건을 아래와 같이 간단하게 수정한 후 실제로 UML을 이용하여 프로그램을 간단하게 구현해 보았다.

< 간략화 한 문제 조건 >

강아지 수용소의 수용 량은 제한하지 않음
개가 수용소로 들어갈 때 꼬리표 : 이름, 나이
개를 수용하는 행위
개를 찾는 행위

3.1 간략화한 문제 해결 클래스 다이어 그램

3.2 실제 구현 코드

#include <iostream.h>
//-------------------(Dog)---------------------------------------------------------------------
class Dog 
{			// 강아지
public:
	void InputAge();
	void InputName();
	char name[20];
	int age;
};
void Dog::InputName()
{
	cout << "강아지 이름을 입력하세요: ";
	cin >> Dog::name;
}
void Dog::InputAge()
{
	cout << "강아지 나이를 입력하세요: ";
	cin >> Dog::age;
}

// -----------------(DogSooYong)------------------------------------------------------
class DogSooYong : public Dog
{	// 강아지 수용소
public:
	void Show();
	Dog GAJ[3];
};
void DogSooYong::Show()
{
	int i;
	cout << "번호	이름	나이" << endl;
	cout << "-----------------------------" << endl;
	for(i=0;i<3;i++)
	{
		cout << i+1 << "     " << GAJ[i].name << "     " << GAJ[i].age << endl;
	}
}

//-----------------(Person)-------------------------------------------------------------------
class Person : public DogSooYong
{		// 인간
public:
	void SooYong(int n);
};
void Person::SooYong(int n)
{
	GAJ[n].InputName();
	GAJ[n].InputAge();
}
//---------------------------------------------------------------------------------------------
int main()
{
	int cnt;
	Person K;	// 사람 인스턴스 생성
	for (cnt=1;cnt<4;cnt++)	// 멤버 함수 이용 3마리의 강아지 입력
	{
		cout << cnt << " 번째 ";
		K.SooYong(cnt-1);		
	}
	K.Show();	// 수용소의 정보 표시
}

3.3 코드실행화면(실행환경.NET C++ARCHITECT 2003 FW1.0)

4. 마무리 글... (과제 수행에서의 한계점...)

처음 계획은 과제를 UML 도구를 이용하여 완벽하게 해결해 보려 하였다. 그러나, 제한되 기간 내에 UML을 충분히 익혀 구현해 본다는 것은 무리라고 판단이 되었다. ‘강아지 수용소라는 주어진 과제는 최대한 UML 표준과 문법을 따르려 애를 썻지만, 많이 부족하다는 느낌이다. 주어진 문제가 아닌 문제를 간략화 하였지만 그래도 UML 도구를 이용하여 실제 로 객체 지향 프로그램을 구현까지 해보았다는 데에 의미를 두려한다.

5. 참고 문헌 및 웹 사이트

- K교수의 객체지향 이야기(개념, 언어, UML, CASE 도구에 대하여)/김태균 저/배움터
- UML도구프로그램명 : OODesigner

참고 : 컴파일 실행 환경 - .NET C++ ARCHITECT 2003 Framework 1.0

P-UML_레포트_2.hwp
0.01MB
P-UML_레포트_2_표지.hwp
0.06MB
P-객체지향프로래밍연습_UML.7z
0.48MB

반응형

+ Recent posts