반응형

디딤돌 C++ 60

[C++] 71. 최종 실습 - EHNARA 뼈대

[C++] 71. 최종 실습 - EHNARA 뼈대 이번 실습에서는 유즈케이스 별로 시퀀스 다이어그램 설계하고 구현하는 것을 반복할 것입니다. 먼저 이제까지 작업한 것을 구현하고 유즈케이스 별로 시퀀스 다이어그램 작성 맟 구현으로 들어갈게요. EhNara의 뼈대를 만들고 난 후에 기본적인 사용자와 상호 작용의 프로토 타이핑을 할게요. 프로젝트에 Program.cpp 파일과 EhNara 클래스를 추가하세요. EhNara 형식 개체는 프로그램에 유일하며 대부분의 콘솔 응용 프로그램은 프로그램 초기화, 사용자와 상호 작용, 해제화 순으로 진행합니다. class EhNara { 단일체를 표현하기 위해 생성자와 소멸자의 접근 지정은 private으로 설정합니다. 대신 유일한 단일개체를 정적 멤버로 선언할게요. st..

[C++] 69. 최종 실습 - 요구 분석 및 정의

[C++] 69. 최종 실습 - 요구 분석 및 정의 요구 분석 및 정의 단계에서는 이해관계자를 파악하고 이해관계자 별로 프로젝트에 요구하는 사항을 조사하는 것에서 출발합니다. 이번 실습에서의 이해관계자는 프로그램 사용자와 프로그램 개발자 정도로 생각할 수 있습니다. 시나리오를 제외한 특별한 요구 사항은 없으니 시나리오를 바탕으로 유즈케이스 다이어그램을 작성하는 것부터 시작합시다. 유즈케이스 다이어그램을 작성할 때는 액터를 조사하고 액터 별로 유즈케이스를 정의한 후에 관계를 정의합니다. 액터는 개발하는 시스템 주변의 모든 것을 말합니다. 시스템을 사용하는 사용자 뿐만 아니라 시스템을 사용하는 프로그램이나 시스템이 사용하는 외부 시스템도 액터입니다. 이 에이치 프로그램은 최종 사용자 외에 다른 액터가 존재하..

[C++] 68. 최종 실습 - 개발 공정 및 시나리오

[C++] 68. 최종 실습 - 개발 공정 및 시나리오 전산 기술은 하루가 다르게 발전하고 새로운 기술이 나오고 있습니다. 그리고 프로젝트의 규모가 점점 늘어나고 있으며 다른 산업 분야와 접목하는 형태로 발전하고 있습니다. 프로그램의 규모가 커지고 많은 인력이 필요한 형태로 변하면서 효과적인 개발 공정과 많은 이해 관계자에게 프로그램의 구조를 설명하고 개발자 사이에 의사 소통할 수 있는 방법들이 생기고 있습니다. 여기에서는 여러 가지 개발 방법론 중에 많은 이들이 사용하는 CBD 개발 방법론을 적용해서 마지막 실습을 진행할게요. 일반적인 CBD 개발 방법론에서는 요구 분석 및 정의 단계, 아키텍쳐 단계, 설계 단계, 구현 단계, 배포 단계로 나누고 있습니다. 이 중에 아키텍쳐 단계는 프로그램을 컴포넌트 ..

[C++] 65. 연관(ASSOCIATION) 관계

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

[C++] 64. 직접 연관(DIRECTED ASSOCIATION) 관계

[C++] 64. 직접 연관(DIRECTED ASSOCIATION) 관계 직접 연관 관계는 프로그램에서 가장 흔하게 볼 수 있는 관계로 명령을 내리는 개체와 명령을 받아 수행하는 개체의 관계입니다. “고용자는 피 고용자에게 일을 시킬 수 있다.” 처럼 프로그램 세계에서는 매우 자연스러운 관계입니다. 목적 집단에서 목적을 달성하기 위해 상하 관계가 존재하는 것처럼 프로그램도 특정 목적을 수행하기 위한 코드 집합이어서 직접 연관 관계가 필요합니다. 특히 직접 연관 관계는 집합 관계나 구성 관계와 혼합 형태일 때도 많습니다. 예를 들어 회사 내부에 사원들이 있고 회사에서 특정 사원에게 일을 시킨다면 회사와 사원은 집합 관계이면서 직접 연관 관계입니다. 다음은 Company와 Worker 사이에 직접 연관 관계..

[C++] 63. 구성(COMPOSITION) 관계

[C++] 63. 구성(COMPOSITION) 관계 구성 관계는 소유 개체와 피 소유 개체 사이의 관계입니다. 이러한 관계는 집합 관계도 마찬가지입니다. 두 가지 관계 모두 “가지다.”로 표현할 수 있으며 영어로 “Has a”로 표현할 수 있어서 “Has a”관계라고 말합니다. 집합 관계는 소유 개체와 피 소유 개체의 생성과 소멸은 독립적으로 진행합니다. 필통과 연필의 관계처럼 개체의 생성과 소멸은 독립적인 특징을 갖습니다. 구성 관계는 소유 개체를 생성할 때 피 소유 개체를 생성하고 소유 개체를 소멸할 때 피 소유 개체를 함께 소멸합니다. 사람과 눈의 관계처럼 소유 개체를 생성할 때 피 소유 개체도 함께 생성하고 소유 개체를 소멸할 때 피 소유 개체도 함께 소멸합니다. CPP에서 구성 관계를 구현하는 ..

[C++] 57. 예외 처리(C언어 , C++, C# 예외처리 비교)

[C++] 57. 예외 처리 이번에는 C++에서 제공하는 예외 처리를 살펴보기로 해요. 먼저 예외가 무엇인지 알아볼게요. 에러, 버그, 예외는 모두 정상적으로 동작하지 않을 때 사용하는 말들입니다. 이들을 구분하자면 에러는 사용자가 잘못 사용하여 프로그램이 정상적으로 동작하지 않는 것입니다. 그리고 버그는 개발자가 프로그램 논리를 잘못 작성하여 발생하는 것이죠. 예외는 외부 시스템이나 조건들에 의해 더 이상 수행하는 작업을 수행하지 못하는 것을 말합니다. 예를 들어 데이터 베이스 서버를 이용하는 온라인 판매 서비스는 판매 기능을 수행하기 위해 데이터 베이스 서버에 접근할 수 있어야 합니다. 그런데 데이터 베이스 서버가 죽어있거나 방화벽으로 막혀있다면 정상적으로 진행할 수가 없습니다. 이러한 상황을 예외라..

26. 캡슐화 최종 실습 - 구체적 구현

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 캡슐화 최종 실습의 마지막 단계인 구체적 구현을 할 차례네요. 여러분께서는 먼저 구현한 후에 비교해 보세요. 이제 마지막으로 메서드를 구체적으로 구현합시다. 약속한 기능을 구현하면서 필요하면 별도의 메서드를 추가하세요. 여기에서 추가하는 메서드는 다른 형식에서 호출해서 사용하지 않는 메서드이므로 접근 지정을 private으로 지정하세요. 특히 멤버 필드의 값이 특정 범위 내에 있어서 필터링을 요구하면 설정자 메서드를 추가하여 구현하세요. 설정자 메서드에서 멤버 필드 값을 범위 내에서 조절하는 기능을 작성하면 버그를 만들 확률을 줄일 수 있습니다. 여러분께서 각자 구현해 본 후에 비교해 보세요. 여기에서는 지력, 체력, 스트레스, 연속으로 공부한 횟수는 범위가..

25. 캡슐화 최종 실습 - 테스트 코드 작성

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 캡슐화 최종 실습 내용을 잘 작성했는지 확인하는 테스트 코드를 작성해 보기로 해요. 이제 시나리오를 보면서 테스트 코드를 작성하세요. 많은 곳에서 구현한 후에 테스트를 수행합니다. 그리고 테스트 코드도 테스트를 수행하기 바로 전에 작성하죠. 하지만 소프트웨어 테스트는 많은 신경을 써도 충분하지 않아 배포 후에 버그를 발견할 때도 많습니다. 소프트웨어 개발에서 잘못 작성한 것은 빨리 발견할수록 전체 비용을 줄어듭니다. 이러한 이유로 많은 연구에서 설계가 끝나면 구현 작업과 함께 시작할 것을 권하고 있습니다. 그리고 구현한 것을 빠르게 테스트를 할 수 있게 원하는 결과가 나왔는지 빠르게 판단할 수 있는 다양한 기법을 사용하고 있습니다. 여기에서는 테스트를 빠르게..

24. 캡슐화 최종 실습 - 멤버 메서드

안녕하세요. 언제나 휴일, 언휴예요. 이번에는 캡슐화 최종 실습 중에 멤버 메서드를 결정하세요. 여러분께서는 앞의 시나리오를 먼저 확인하여 멤버 필드를 결정한 후에 비교하세요. 이제 시나리오를 보면서 멤버 메서드를 결정하세요. 여기에서는 메서드 이름과 입력 매개 변수 리스트 및 반환 형식까지 결정하세요. 메서드 내부를 구체적으로 결정하는 부분은 테스트 코드 작성 후에 맨 마지막에 할 거예요. 먼저 혼자 해 본 후에 비교해 보세요. 먼저 다른 형식에서 접근 가능하게 접근 지정자 public:을 명시하세요. public: 생성할 때 이름을 입력받으므로 이를 반영하여 생성자 메서드를 결정하세요. Student(string name);//생성자 "공부하다.", "강의받다.", "잠자다.", "휴식하다.", "음..

반응형