전체 글 254

[C++] 62. 집합(AGGREGATION) 관계

[C++] 집합(AGGREGATION) 관계 집합 관계는 개체를 보관하는 컬렉션과 개체 사이의 관계입니다. “필통은 연필을 보관할 수 있다.” 처럼 컬렉션 필통과 보관할 연필 사이의 관계입니다. 전산에서 자료구조라고 말하는 컬렉션과 컬렉션에 보관할 개체 사이의 관계입니다. 집합 관계와 구성 관계는 “가지고 있다.” 혹은 “가질 수 있다.”로 표현할 수 있고 영어로 “Has a”로 표현할 수 있어서 “Has a”관계라고도 부릅니다. 집합 관계는 컬렉션과 보관할 개체의 생성과 소멸은 독립적입니다. 참고로 구성 관계는 사람과 눈처럼 소유 개체를 생성할 때 피 소유 개체가 만들어지고 소유 개체가 소멸할 때 피 소유 개체도 같이 해제하는 특징을 갖습니다. 다음은 집합 관계에 있는 Pencil과 PencilCase..

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

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

[C++] 60. 템플릿 클래스

[C++] 템플릿 클래스 이번에는 템플릿 클래스를 알아볼게요. 템플릿 클래스는 멤버 필드의 형식이나 일부 멤버 메서드의 인수의 형식만 다르고 메서드 내부의 논리 전개가 같을 때 사용합니다. 템플릿 클래스도 템플릿 함수처럼 실제 클래스를 만들기 위한 틀일 뿐입니다. 템플릿 클래스를 정의할 때도 템플릿 형식 인자를 표현하는 tempate 부분이 필요합니다. template class 클래스명 { }; 사용하는 코드에서 템플릿 형식 인자를 구체적으로 결정하며 이에 맞게 컴파일러가 실제 클래스의 코드를 템플릿 클래스를 참고하여 만듭니다. 이러한 특징으로 템플릿 클래스의 멤버 메서드 구현 코드도 헤더 파일에 작성하세요. 클래스명 변수; 다음은 템플릿 클래스 문법을 파악하기 위한 간단한 예를 두 가지 형태로 보여 ..

[C++] 58. 템플릿(TEMPLATE) 개요 59. 전역 템플릿 함수

[C++] 플릿(TEMPLATE) 개요 및 전역 템플릿 함수 58. 템플릿(TEMPLATE) 개요 이번에는 C++에서 제공하는 템플릿을 살펴보기로 해요. C++언어에서 템플릿은 다양한 프로그램에서 공통적으로 사용할 수 있는 라이브러리 형태의 형식이나 기능을 정의할 때 사용합니다. 대표적으로 표준 템플릿 라이브러리(STL, Standard Template Library)를 들 수가 있습니다. 템플릿(Template)의 사전적 의미는 틀, 모형자입니다. 무엇인가를 만들기 위한 틀을 템플릿이라 부르는 것이죠. C++언어에서 템플릿은 실제 코드를 만들기 위한 가짜 코드를 말합니다. 템플릿으로 형식이나 기능을 정의해도 실제 컴파일한 기계어 코드에는 반영하지 않습니다. 대신 템플릿으로 정의한 것을 사용하는 부분이 ..

[C++] 57. 예외 처리

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