일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- c언어
- 표준 입출력
- C++
- 언제나 휴일
- 표준 라이브러리 함수
- 네트워크 프로그래밍
- 산책하기 좋은 곳
- 안드로이드 앱 개발
- 유튜브 동영상 강의
- 실습으로 다지는 c#
- Windows Forms
- 졸업 작품 소재
- 동영상 강의
- 클래스 다이어그램
- 소켓 통신
- 알고리즘
- 무료 동영상 강의
- 충남 천안
- 원격 제어 프로그램
- 추천
- c#
- 프로젝트
- 실습
- 강의
- 동영상
- 파이썬
- 소스 코드
- 졸업 작품
- 언제나휴일
- 캡슐화
- Today
- Total
목록C++ (78)
프로그래밍 언어 및 기술 [언제나휴일]
[실습으로 다지는 C#] 구성(Composition) 관계 실습 – 사람, 눈 이번 강의는 구성(Composition) 관계 실습입니다. 소재는 사람과 눈입니다. 구성 관계는 소유 개체를 생성할 때 내부 개체가 같이 만들어지는 특징을 갖고 있습니다. 클래스 다이어그램을 바탕으로 코드를 구현해 보세요. 주의할 점은 Man 생성자에서 Eye 개체를 생성해야 한다는 것입니다. 별다른 알고리즘을 갖고 있는 것이 아니어서 코드 설명은 생략할게요.using System;namespace 구성_관계_실습{ class Eye { double sight; bool opened; public bool Opened { get ..
[실습으로 다지는 C#] 집합(Aggregation) 관계 실습 – 쇼핑 센터, 상품 이번 강의는 집합(Aggregation) 관계를 코드로 표현하는 실습입니다. 실습 소재는 쇼핑 센터와 상품입니다. 집합 관계는 이처럼 컬렉션과 원소 사이의 관계입니다. 상품은 상품 이름, 가격, 회사 이름, 일련 번호를 갖습니다. 일련 번호는 순차적으로 자동 부여하며 상품은 쇼핑 센터에 입고할 수 있게 표현해 봅시다. 먼저 클래스 다이어그램을 작성해 보세요. 이를 코드로 작성합시다. namespace 집합_관계{ public class Product { public string Name { get; private set; } ..
[실습으로 다지는 C#] 클래스 간의 관계 이번 강의에서는 클래스 간의 관계를 알아볼 거예요. 클래스 다이어그램으로 관계를 나타낼 때 7가지의 관계가 있어요.일반화 관계(Generalization)집합 관계(Aggregation)구성 관계(Composition)직접 연관 관계(Direct Associtaion)연관 관계 (Association)의존 관계 (Dependency)실현 관계 (Realization)일반화 관계(Generalization)는 기반 형식과 파생 형식 사이의 관계입니다. “피아니스트는 음악가이다.” 처럼 “이다.”로 표현할 수 있는 형식 사이의 관계입니다. 음악가 종류에는 피아니스트, 드러머, 기타리스트 등이 있죠. 이 때 음악가를 기반 형식이라고 말하고 피아니스트를 파생 형식이라..
[실습으로 다지는 C#] 캡슐화 실습 – 학생 클래스 정의하기이번 강의에서는 캡슐화 실습을 해 봅시다. 캡슐화는 여러 개의 멤버를 하나의 형식으로 묶는 과정을 말합니다. 이번 실습에서는 학생 클래스를 정의하는 실습을 해 보기로 할게요. 실습할 학생 클래스의 멤버는 다음과 같아요.학생 클래스 멤버 필드 아이큐 매력 번호 - 읽기 전용, 순차 부여 이름 가장 최근에 부여한 번호 - 정적 멤버 멤버 메서드 생성자(이름) 공부하다(횟수) 춤추다(횟수) 노래하다(횟수) ToString 재정의 멤버 속성 get은 public, set privateOOP 프로그래..
[실습으로 다지는 C#] 랜덤 값 맞추기 이번 강의에서는 컴퓨터가 생각한 랜덤 값(0~99)을 사용자가 10번 시도 내에 맞추는 프로그램을 만들어 봅시다. 먼저 문제를 해결하기 위한 논리를 생각하고 의사 코드(pseudo code)로 표현해 보세요. 여러분께서 먼저 작성한 후에 비교해 보세요.rnum := 랜덤 값반복(tcnt:1->10) guess := 추측값 입력 조건(guess is equals rnum) 반복문 탈출 조건(guess>rnum) 더 작다고 알려준다. 아니면 더 크다고 알려준다.조건(시도 횟수가 10보다 작거나 같..
[실습으로 다지는 C#] 암스트롱의 수 이번 실습에서는 암스트롱의 수를 판별하는 메서드를 만들어 봅시다. 암스트롱의 수는 ABC = AXAXA + BXBXB + CXCXC인 정수를 말합니다. 예를 들어 153 = 1 = 125 + 27 입니다. 이러한 수를 암스트롱의 수라고 말합니다. 이러한 암스트롱의 수를 판별하는 메서드를 만들기 전에 먼저 메서드 이름과 입력 매개 변수와 리턴 형식을 결정합니다. 언제나 알고리즘은 입력 인자와 수행 결과가 어떠한 것이 올 수 있는지를 판단할 수 있어야 합니다. 메서드 이름은 IsAmstrong으로 정할게요. 그리고 입력 인자는 판별할 정수가 필요하므로 정수형 변수 num으로 결정하고 반환은 판별 결과이므로 bool로 결정합시다.bool IsAmstrong(int num..
[실습으로 다지는 C#] 두 개의 정수 사이의 합계 구하기 이번 강의에서는 두 개의 정수를 입력 받은 후에 두 개의 정수 사이의 합계를 구하는 실습을 해 봅시다. 먼저 어떻게 해야 문제를 해결할 수 있을지 생각한 후에 의사 코드(pseudo code) 형태로 작성해 보세요. 작성한 후에 비교해 보시기 바랍니다.input := 정수를 입력 받는다. 조건(정수로 변환(input,out num1)이 실패) 오류를 출력 후 알고리즘 종료 input := 정수를 입력 받는다. 조건(정수로 변환(input,out num2)이 실패) 오류를 출력 후 알고리즘 종료 조건(num1두 수를 교환(ref num1, ref num2) temp:= num1 num1:= num2 num2:= ..
[실습으로 다지는 C#] 두 개의 정수를 입력받아 작은 수가 큰 수의 약수인지 판별이번 강의에서는 두 개의 정수를 입력받아 작은 수가 큰 수의 약수인지 판별하는 실습을 할 거예요. 이를 위해 먼저 어떠한 알고리즘으로 수행해야 하는지 고민해 보세요. 그리고 난 후에 의사 코드(pseudo code)를 작성해 봅시다. 여러분께서 먼저 작성하고 난 후에 비교해 보세요. input := 정수를 입력 받는다.조건(정수로 변환(input,out num1)이 실패) 오류를 출력 후 알고리즘 종료input := 정수를 입력 받는다.조건(정수로 변환(input,out num2)이 실패) 오류를 출력 후 알고리즘 종료큰 수를 num1에 작은 수를 num2로 설정조건(num1을 num2로 나누었을 때 몫이 0..
[실습으로 다지는 C#] 정수와 소수점 이하 자릿수 결정하기이번 강의에서는 숫자를 출력할 때 정수와 소수점 이하 자릿수를 지정하는 방법을 알아볼거예요. 다음은 자릿수를 지정하는 표현과 예를 간략하게 나타낸 것입니다.다음은 이번 실습에 사용할 변수 선언입니다.double dv = 1234.123456789;int iv = 123;포멧 문자열에 0의 갯수는 정수 자릿수를 의미하며 빈 자리는 0을 출력합니다.//0의 갯수 = 정수 자릿수(빈 자리는 0 출력) Console.WriteLine("{0:000000}", iv); Console.WriteLine("{0:000000}", dv);실행 결과000123001234“D” 형식 지정자 뒤에 정수 표현도 정수 자릿수를 의..
[실습으로 다지는 C#] 숫자 출력 – 형식 지정자 이용하기 이번 실습에서는 형식 지정자를 이용하여 숫자를 출력하는 방법을 알아보기로 할게요. 이미 이전 강의에서는 출력할 때 문자열 출력 포멧을 알아보았죠.{index[,alignment][:formatString]}{인덱스[,배치][:포멧문자열]} 포멧 문자열에는 출력할 내용을 어떠한 형식으로 출력할 것이지 나타내는 표현도 나타낼 수 있습니다. 이를 형식 지정자라 불러요.이번 실습에서는 형식 지정자를 이용하여 숫자를 표현하는 방법을 다룰거예요. 다음은 숫자를 표현할 때 사용하는 형식 지정자와 간략한 예를 나타낸 것입니다.먼저 실습에 사용할 변수를 선언하세요.int iv = 12345;double dv = 12345.6789;double dv2 = 0.2..
[실습으로 다지는 C#] 문자열 출력 포멧프로그래밍 언어를 배울 때 출력문은 언제나 제일 먼저 만납니다Console.WriteLine("Hello, World");이번 실습에서는 문자열 출력 포멧에 관한 사항입니다.문자열 출력 포멧은 Console.WriteLine 메서드는 string.Format 메서드에서 같은 방식으로 표현할 수 있습니다. 이는 둘 다 문자열을 첫 번째 인자로 받기 때문입니다.using System;namespace Demo{ class Program { static void Main(string[] args) { string str = string.Format("Hello, World"); Console.W..
[C++] 최종 실습 – 클래스 추가하기 이제 클래스를 추가하고 클래스 사이의 관계에 따라 헤더 파일을 포함합시다. 여기에서는 헤더 파일에 포함문을 작성하는 것 까지만 할 거예요. 클래스 다이어그램을 보면서 클래스를 추가하세요. 현재 EhNara, Place, Downtown, School, Village 클래스를 추가한 상태죠. 앞에서 작성한 확장 가능한 순차 배열인 SeqArray 템플릿 클래스를 추가하세요. 그리고 상속과 다형성 최종 실습에서 작성한 프로그램에서 Student, MStudent, SStudent, PStudent 클래스를 이용할게요. 소스 파일과 헤더 파일을 복사하여 프로젝트에 추가하세요. 이 외에 Man, IStudy, IRelax, IPlay를 추가하세요. 그리고 이를 기반으로 ..
[C++] 최종 실습 – 확장 가능한 순차 배열 EhNara 프로그램에서는 EhNara 클래스, 학생 공장에서 학생 개체를 보관합니다. 그리고 장소에서는 사람 개체를 보관합니다. 여기에서는 순차적으로 보관할 수 있는 확장 가능한 배열을 템플릿으로 정의합시다. 확장 가능한 배열은 저장소가 꽉 차면 내부에서 저장소의 크기를 늘려 주어 사용하는 개발자가 저장소의 크기에 신경을 쓰지 않고 사용할 수 있는 동적 배열입니다. 여기에서는 순차 보관하는 기능과, 특정 인덱스의 요소를 제거, 특정 알고리즘이 참인 인덱스를 구하는 등의 기능을 제공하는 확장 가능한 배열을 만듭시다. template class SeqArray { 먼저 저장소와 저장소의 크기, 보관 개수를 기억하고 있어야 합니다. data *base; //저..
[C++] 최종 실습 – 프로토 타이핑 이번에는 앞에서 작성한 EhNara 뼈대에 요구 분석 및 정의에서 작성한 유즈케이스 다이어그램을 보며 프로토 타이핑을 작성합시다. GUI(Graphic User Interface) 프로그램에서는 이해관계자의 요구 사항을 제대로 파악한 것인지 확인하기 위해 프로토 타이핑을 작성하곤 합니다. 이해관계자의 요구 사항은 고정적인 것이 아니라 시시 때때로 변할 수 있는데 자주 변하는 부분이 대부분 User Interface에 관한 것이 많습니다. 즉 내부적인 것 보다 외형적인 부분에서 요구 사항이 자주 바뀔 수 있습니다. 이러한 것을 개발 앞 단계에 배치하여 이해관계자의 요구 사항을 반영하기 위해 프로토 타이핑을 합니다. EhNara 프로그램은 GUI 프로그램이 아니라서 이..
[C++] 최종 실습 – 기본 뼈대 이번 실습에서는 유즈케이스 별로 시퀀스 다이어그램 설계하고 구현하는 것을 반복할 것입니다. 먼저 이제까지 작업한 것을 구현하고 유즈케이스 별로 시퀀스 다이어그램 작성 맟 구현으로 들어갈게요. EhNara의 뼈대를 만들고 난 후에 기본적인 사용자와 상호 작용의 프로토 타이핑을 할게요. 프로젝트에 Program.cpp 파일과 EhNara 클래스를 추가하세요. EhNara 형식 개체는 프로그램에 유일하며 대부분의 콘솔 응용 프로그램은 프로그램 초기화, 사용자와 상호 작용, 해제화 순으로 진행합니다. class EhNara { 단일체를 표현하기 위해 생성자와 소멸자의 접근 지정은 private으로 설정합니다. 대신 유일한 단일개체를 정적 멤버로 선언할게요. static EhN..
[C++] 최종 실습 – 설계(클래스 다이어그램) 설계 단계에서는 프로그램에 정의할 형식을 정하고 이들 사이에 관계를 정의하는 것과 유즈케이스 별로 수행 흐름을 정의하는 작업이 있습니다. 프로그램에 정의할 형식을 정하고 이들 사이에 관계를 정의한 것은 클래스 다이어그램으로 표현합니다. 유즈케이스 별로 수행 흐름을 정의하는 것은 여러 가지 다이어그램으로 표현할 수 있는데 여기에서는 시퀀스 다이어그램으로 작성할게요. 먼저 프로그램에 정의할 형식을 정하고 이들 사이에 관계를 정의합시다. 제일 먼저 이 에이치 나라와 학생 공장이 있죠. 그리고 학교, 주거지, 다운타운이 있죠. 그런데 이 세 개의 형식은 학생이 올 수 있고 초점을 받아 사용자와 상호작용을 수행하는 등의 공통점이 있습니다. 논리적으로 보았을 때도 ..
[C++] 최종 실습 – 요구 분석 및 정의 요구 분석 및 정의 단계에서는 이해관계자를 파악하고 이해관계자 별로 프로젝트에 요구하는 사항을 조사하는 것에서 출발합니다. 이번 실습에서의 이해관계자는 프로그램 사용자와 프로그램 개발자 정도로 생각할 수 있습니다. 시나리오를 제외한 특별한 요구 사항은 없으니 시나리오를 바탕으로 유즈케이스 다이어그램을 작성하는 것부터 시작합시다. 유즈케이스 다이어그램을 작성할 때는 액터를 조사하고 액터 별로 유즈케이스를 정의한 후에 관계를 정의합니다. 액터는 개발하는 시스템 주변의 모든 것을 말합니다. 시스템을 사용하는 사용자 뿐만 아니라 시스템을 사용하는 프로그램이나 시스템이 사용하는 외부 시스템도 액터입니다. 이 에이치 프로그램은 최종 사용자 외에 다른 액터가 존재하지 않습..
[C++] 최종 실습 – 개발 공정 및 시나리오 전산 기술은 하루가 다르게 발전하고 새로운 기술이 나오고 있습니다. 그리고 프로젝트의 규모가 점점 늘어나고 있으며 다른 산업 분야와 접목하는 형태로 발전하고 있습니다. 프로그램의 규모가 커지고 많은 인력이 필요한 형태로 변하면서 효과적인 개발 공정과 많은 이해 관계자에게 프로그램의 구조를 설명하고 개발자 사이에 의사 소통할 수 있는 방법들이 생기고 있습니다. 여기에서는 여러 가지 개발 방법론 중에 많은 이들이 사용하는 CBD 개발 방법론을 적용해서 마지막 실습을 진행할게요. 일반적인 CBD 개발 방법론에서는 요구 분석 및 정의 단계, 아키텍쳐 단계, 설계 단계, 구현 단계, 배포 단계로 나누고 있습니다. 이 중에 아키텍쳐 단계는 프로그램을 컴포넌트 형태로 ..
[C++] 실현(REALIZATION) 관계 실현 관계는 기능 구현을 약속한 형식과 이를 구체적으로 구현한 형식 사이에 관계입니다. 기능 구현을 약속한 형식을 인터페이스라고 부릅니다. 따라서 실현 관계는 인터페이스 형식과 약속한 기능을 구체적으로 구현한 형식 사이의 관계입니다. CPP에서는 이 둘 사이의 관계는 파생 문법을 사용합니다. 이에 관한 사항은 이미 앞에서 인터페이스를 소개하면서 다룬 내용입니다. #include using namespace std; #define interface struct interface IStudy { virtual void Study()=0; }; class Student : public IStudy { public: void Study() { cout
[C++] 의존(DEPENDENCY) 관계 의존 관계는 다른 개체의 변화가 발생했을 때 자신에 영향을 받는 개체 사이의 관계입니다. 그리고 특정 개체의 생성을 담당할 때도 의존 관계로 표현합니다. GUI(Graphic User Interface) 프로그램에서 특정 데이터의 정보를 화면에 표시하는 컨트롤과 데이터 사이에는 의존 관계로 표현할 수 있습니다. UI 컨트롤을 통해 사용자가 개체의 속성을 입력하면 의존 관계에 있는 개체의 속성을 변경해야겠죠. 혹은 개체의 속성이 변하면 UI 컨트롤을 통해 변경한 정보를 사용자에 알려주어야 할 것입니다. 이 책에서는 GUI를 다루고 있지 않아 이와 같은 의존 관계는 표현하지 않을 거예요. 소프트웨어 설계에 관한 많은 레퍼런스에서는 UI 컨트롤과 개체 사이의 의존 관..
[C++] 연관(ASSOCIATION) 관계 연관 관계는 명령 개체와 피 명령 개체가 명확하지 않은 관계입니다. 프로그램에서는 연관 관계로 표현하지 말고 직접 연관 관계로 표현하는 것이 안전합니다. 연관 관계는 약사와 의사처럼 “약사와 의사는 환자 치료에 연관이 있다.”와 같이 수평적인 관계입니다. 의사는 환자 치료를 위해 어떠한 약을 처방받아 먹고 있는지 알 수 있어야 합니다. 또한 약사는 약을 조재하기 위해서는 의사의 처방이 필요합니다. 그런데 이와 같은 관계에서 프로그램을 잘못 작성하여 버그가 날 위험이 많습니다. 예를 들어 의사의 “치료하다” 기능에서 약사의 “조재하다”를 호출하게 구현하고 약사의 “조재하다” 기능에서 의사의 “치료하다”를 호출한다면 스택 오버 플로우가 발생할 것입니다. 물론 주의..
[C++] 직접 연관(DIRECTED ASSOCIATION) 관계 직접 연관 관계는 프로그램에서 가장 흔하게 볼 수 있는 관계로 명령을 내리는 개체와 명령을 받아 수행하는 개체의 관계입니다. “고용자는 피 고용자에게 일을 시킬 수 있다.” 처럼 프로그램 세계에서는 매우 자연스러운 관계입니다. 목적 집단에서 목적을 달성하기 위해 상하 관계가 존재하는 것처럼 프로그램도 특정 목적을 수행하기 위한 코드 집합이어서 직접 연관 관계가 필요합니다. 특히 직접 연관 관계는 집합 관계나 구성 관계와 혼합 형태일 때도 많습니다. 예를 들어 회사 내부에 사원들이 있고 회사에서 특정 사원에게 일을 시킨다면 회사와 사원은 집합 관계이면서 직접 연관 관계입니다. 다음은 Company와 Worker 사이에 직접 연관 관계와 집합..
[C++] 구성(COMPOSITION) 관계 구성 관계는 소유 개체와 피 소유 개체 사이의 관계입니다. 이러한 관계는 집합 관계도 마찬가지입니다. 두 가지 관계 모두 “가지다.”로 표현할 수 있으며 영어로 “Has a”로 표현할 수 있어서 “Has a”관계라고 말합니다. 집합 관계는 소유 개체와 피 소유 개체의 생성과 소멸은 독립적으로 진행합니다. 필통과 연필의 관계처럼 개체의 생성과 소멸은 독립적인 특징을 갖습니다. 구성 관계는 소유 개체를 생성할 때 피 소유 개체를 생성하고 소유 개체를 소멸할 때 피 소유 개체를 함께 소멸합니다. 사람과 눈의 관계처럼 소유 개체를 생성할 때 피 소유 개체도 함께 생성하고 소유 개체를 소멸할 때 피 소유 개체도 함께 소멸합니다. CPP에서 구성 관계를 구현하는 방법은 ..
[C++] 집합(AGGREGATION) 관계 집합 관계는 개체를 보관하는 컬렉션과 개체 사이의 관계입니다. “필통은 연필을 보관할 수 있다.” 처럼 컬렉션 필통과 보관할 연필 사이의 관계입니다. 전산에서 자료구조라고 말하는 컬렉션과 컬렉션에 보관할 개체 사이의 관계입니다. 집합 관계와 구성 관계는 “가지고 있다.” 혹은 “가질 수 있다.”로 표현할 수 있고 영어로 “Has a”로 표현할 수 있어서 “Has a”관계라고도 부릅니다. 집합 관계는 컬렉션과 보관할 개체의 생성과 소멸은 독립적입니다. 참고로 구성 관계는 사람과 눈처럼 소유 개체를 생성할 때 피 소유 개체가 만들어지고 소유 개체가 소멸할 때 피 소유 개체도 같이 해제하는 특징을 갖습니다. 다음은 집합 관계에 있는 Pencil과 PencilCase..
[C++] 템플릿 클래스 이번에는 템플릿 클래스를 알아볼게요. 템플릿 클래스는 멤버 필드의 형식이나 일부 멤버 메서드의 인수의 형식만 다르고 메서드 내부의 논리 전개가 같을 때 사용합니다. 템플릿 클래스도 템플릿 함수처럼 실제 클래스를 만들기 위한 틀일 뿐입니다. 템플릿 클래스를 정의할 때도 템플릿 형식 인자를 표현하는 tempate 부분이 필요합니다. template class 클래스명 { }; 사용하는 코드에서 템플릿 형식 인자를 구체적으로 결정하며 이에 맞게 컴파일러가 실제 클래스의 코드를 템플릿 클래스를 참고하여 만듭니다. 이러한 특징으로 템플릿 클래스의 멤버 메서드 구현 코드도 헤더 파일에 작성하세요. 클래스명 변수; 다음은 템플릿 클래스 문법을 파악하기 위한 간단한 예를 두 가지 형태로 보여 ..
[C++] 플릿(TEMPLATE) 개요 및 전역 템플릿 함수 58. 템플릿(TEMPLATE) 개요 이번에는 C++에서 제공하는 템플릿을 살펴보기로 해요. C++언어에서 템플릿은 다양한 프로그램에서 공통적으로 사용할 수 있는 라이브러리 형태의 형식이나 기능을 정의할 때 사용합니다. 대표적으로 표준 템플릿 라이브러리(STL, Standard Template Library)를 들 수가 있습니다. 템플릿(Template)의 사전적 의미는 틀, 모형자입니다. 무엇인가를 만들기 위한 틀을 템플릿이라 부르는 것이죠. C++언어에서 템플릿은 실제 코드를 만들기 위한 가짜 코드를 말합니다. 템플릿으로 형식이나 기능을 정의해도 실제 컴파일한 기계어 코드에는 반영하지 않습니다. 대신 템플릿으로 정의한 것을 사용하는 부분이 ..
[C++] 예외 처리 이번에는 C++에서 제공하는 예외 처리를 살펴보기로 해요. 먼저 예외가 무엇인지 알아볼게요. 에러, 버그, 예외는 모두 정상적으로 동작하지 않을 때 사용하는 말들입니다. 이들을 구분하자면 에러는 사용자가 잘못 사용하여 프로그램이 정상적으로 동작하지 않는 것입니다. 그리고 버그는 개발자가 프로그램 논리를 잘못 작성하여 발생하는 것이죠. 예외는 외부 시스템이나 조건들에 의해 더 이상 수행하는 작업을 수행하지 못하는 것을 말합니다. 예를 들어 데이터 베이스 서버를 이용하는 온라인 판매 서비스는 판매 기능을 수행하기 위해 데이터 베이스 서버에 접근할 수 있어야 합니다. 그런데 데이터 베이스 서버가 죽어있거나 방화벽으로 막혀있다면 정상적으로 진행할 수가 없습니다. 이러한 상황을 예외라고 부릅..
[c++] string 클래스 흉내내기 55. string 클래스 흉내내기1 이번에는 연산자 중복 정의 문법으로 string 클래스와 비슷하게 사용할 수 있는 클래스를 만들어 보아요. 먼저 여기에서 구현할 범위를 정하기 위해 string 클래스를 사용하는 기본적인 사항을 확인하고 넘어갈게요. string 형식은 기본 생성 및 문자열을 입력 인자로 받는 생성을 할 수 있어요. string s; string s2="hello"; string 형식은 비교 연산(==, !=, >, >=,
[C++] 개체 출력자 이번에는 개체 출력자가 무엇인지 알아보기로 해요. C++에서 기본 형식의 값을 스트림에 출력할 때는 ostream 형식 개체와 왼쪽 쉬프트(
[C++] iostream 흉내내기 이번에는 cin과 cout으로 출력 및 입력할 때 쉬프트 연산을 사용하는 원리를 살펴보기 위해 iostream 클래스를 흉내내 보기로 할게요. 여기에서 설명하는 것은 원리를 살펴보기 위한 것이지 iostream 클래스의 내부를 정확하게 표현하기 위한 것이 아닙니다. 실제 iostream 클래스는 여기에서 설명하는 것보다 훨씬 정교하고 신뢰성있게 정의하고 있어요. C언어에서 printf 함수로 출력하거나 scanf 함수로 입력받을 때는 포멧 사용자를 사용했었죠. 하지만 C++에서 cin과 cout을 사용할 때는 포멧 사용자 없이 쉬프트 연산을 사용했어요. 어떠한 포멧으로 출력 혹은 입력해야 하는지 표현하지 않아도 알아서 입출력해 주었죠. 이러한 것이 가능한 이유는 클래스..