Development of a Obstructive Sleep Apnea Diagnosis System with Acceleration
Posted on
In
Etc.
Prototype 1(Arduino, Computer)
Arduino
1 | void setup() { |
MATLAB (12)
Posted on
In
Etc.
Catia
Posted on
In
Etc.
C++ (8)
Posted on
In
Etc.
Day 12
Constructor of Inheritance
constructor.cpp
1 | #include <iostream> |
Output
1 | size = 32 |
Virtual Function & Overriding
- Virtual function
virtual
키워드로 선언된 멤버 함수- 동적 바인딩 지시어
- 컴파일러에게 함수에 대한 호출 바인딩을 실행 시간까지 미루도록 지시
- Function overriding
- 파생 클래스에서 기본 클래스의 가상 함수와 동일한 이름의 함수 선언
- 기본 클래스 : 가상 함수의 존재감 상실
- 파생 클래스 : 오버라이딩한 함수가 호출되도록 동적 바인딩
- 함수 재정의라고도 부름
- 다형성의 한 종류
- 조건
virtual
으로 함수 선언(파생 클래스는 생략 가능)- upcasting
- 함수 동일
overriding.cpp
1 | #include <iostream> |
Output
1 | GrandDerived |
destructor1.cpp
1 | #include <iostream> |
Output
1 | ~Base |
destructor2.cpp
1 | #include <iostream> |
Output
1 | ~GrandDerived |
Overloading vs. Overrding
- Overloading
- 이름만 같은 함수 중복 작성
- 하나의 클래스
- Overriding
- 모든 것이 완벽히 같은 함수 재작성
- 상속
Quiz
quiz.cpp
1 | #include <iostream> |
Output
1 | 스택에 삽입할 5개의 정수를 입력하라>> 34 52 41 12 78 |
Day 13
Interface
- 인터페이스만 선언하고 구현을 분리하여 작업자마다 다양한 구현 가능
- 사용자는 구현의 내용을 모르지만 인터페이스에 선언된 순수 가상 함수가 구현되어있기 때문에 호출하여 사용하기만 하면 됨
shape.cpp
1 | #include <iostream> |
Output
1 | Circle |
Abstract Class
- 최소한 하나의 순수 가상 함수를 가진 클래스
- 온전한 클래스가 아니므로 객체 생성 불가능
- 추상 클래스의 포인터는 선언 가능
- 순수 가상 함수를 통해 파생 클래스에서 구현할 함수의 형태(원형)을 보여주는 인터페이스 역할
calculator.cpp
1 | #include <iostream> |
Output
1 | 정수 2개를 입력하세요>>4 3 |
Generalization of Function
- Generic 혹은 일반화
- 함수나 클래스를 일반화시키고, 매개변수 타입을 지정하여 틀에서 찍어내듯이 함수나 클래스 코드를 생산하는 기법
- Template
- 함수나 클래스를 일반화하는
C++
도구 template
키워드로 함수나 클래스 선언- Generic type - 일반화를 위한 Data type
- 함수나 클래스를 일반화하는
sum.cpp
1 | #include <iostream> |
Output
1 | 3 |
search.cpp
1 | #include <iostream> |
Output
1 | 100이 배열 x에 포함되어 있다. |
Generalization of Class
- 선언 :
template<class T>
- class의 정의 앞에 선언
- 선언부, 구현부 - 멤버 함수 앞 선언
T class<T>::function(T param);
- 일반화할 변수만
T
로 선언
generic.cpp
1 | #include <iostream> |
Output
1 | 0 10 20 |
gclass.cpp
1 | #include <iostream> |
Output
1 | a = 2 b = 0.5 |
Quiz
quiz.cpp
1 | #include <iostream> |
Output
1 | 빈대떡 넓이는 628 |
Day 14
STL
- STL(Standard Template Library)
- 표준 템플릿 라이브러리
- 많은 제네릭 클래스와 제네릭 함수 포함
- STL의 구성
- 컨테이너 : 템플릿 클래스
- 데이터를 담아두는 자료 구조를 표현한 클래스
- 리스트, 큐, 스택, 맵, 셋, 벡터
- iterator : 컨테이너 원소에 대한 포인터
- 컨테이너의 원소들을 순회하면서 접근하기 위해 만들어진 컨테이너 원소에 대한 포인터
- 알고리즘 : 템플릿 함수
- 컨테이너 원소에 대한 복사, 검색, 삭제, 정렬 등의 기능을 구현한 템플릿 함수
- 컨테이너의 멤버 함수 아님
- 컨테이너 : 템플릿 클래스
STL 컨테이너의 종류
컨테이너 클래스 | 설명 | 헤더 파일 |
---|---|---|
vector | 동적 크기의 배열을 일반화한 클래스 | <vector> |
deque | 앞뒤 모두 입력 가능한 큐 클래스 | <deque> |
list | 빠른 삽입/삭제 가능한 리스트 클래스 | <list> |
set | 정렬된 순서로 값을 저장하는 집합 클래스, 값은 유일 | <set> |
map | (key, value)쌍으로 값을 저장하는 맵 클래스 | <map> |
stack | 스택을 일반화한 클래스 | <stack> |
queue | 큐를 일반화한 클래스 | <queue> |
STL iterator의 종류
iterator의 종류 | iterator에 ++ 연산 후 방향 |
read/write |
---|---|---|
iterator | 다음 원소로 전진 | read/write |
const_iterator | 다음 원소로 전진 | read |
reverse_iterator | 지난 원소로 후진 | read/write |
const_reverse_iterator | 지난 원소로 후진 | read |
STL 알고리즘 함수들
- copy
- merge
- random
- rotate
- equal
- min
- remove
- search
- find
- move
- replace
- sort
- max
- partition
- reverse
- swap
Vector
- 가변 길이 배열을 구현한
Generic
클래스 - 원소의 저장, 삭제, 검색 등 다양한 멤버 함수 지원
- 벡터에 저장된 원소는 인덱스로 접근 가능
vector.cpp
1 | #include <iostream> |
Output
1 | 1 2 3 |
Iterator
- 반복자라고도 부름
*
,++
연산자 사용 가능- 컨테이너의 원소를 가리키는 포인터
iterator.cpp
1 | #include <iostream> |
Output
1 | 5개의 정수를 입력하시오. |
Algorithm
- 탐색(
find
) : 컨테이너 안에서 특정한 자료를 찾음 - 정렬(
sort
) : 자료들을 크기 순으로 정렬param1
: 정렬을 시작한 원소의 주소param2
: 소팅 범위의 마지막 원소 다음 주소
- 반전(
reverse
) : 자료들의 순서 역순 - 삭제(
remove
) : 조건이 만족되는 자료 삭제 - 변환(
transform
) : 컨테이너 요소들을 사용자가 제공하는 변환 함수에 따라 변환
algorithm.cpp
1 | #include <iostream> |
Output
1 | 모든 원소를 출력한다.>>waffle pizza donut pizzaLarge |