C++ Programming

[ C++ ] 객체지향 프로그래밍 C++

psy_er 2021. 11. 4. 00:41
728x90

[ C++ ] 객체지향 프로그래밍 C++

 

C++C보다 더 엄격한 type-checking을 수행한다.

최대한 상호작용하여 객체지향적으로 프로그래밍하자.

 

 

객체 : 연관된 정보들의 묶음. 데이터와 알고리즘을 하나에 넣는 것이다.

이 문제를 풀기 위해서 어떤 객체가 필요한가 가 중요하다. 실생활과 밀접하다.

 

문제를 크게 보아 상향식 설계로 작은 단위의 필요한 객체들을 만들고 더 큰 단위의 객체를 생성한다. , 낮은 수준의 객체를 이용하여 더 높은 수준의 객체를 작성하는 것이다.

 

 

객체지향적으로 객체를 이용하면 외부의 작업에 의해서가 아니라 내부적으로 밥을 지을 수 있어야 한다.. 객체와 객체가 서로 상호작용한다. 많은 함수 호출 메커니즘이 필요하다.

 

개념 정의

 

네임스페이스 (JAVA 패키지) : 식별자가 가시적인 영역을 한정한다. 같은 이름의 식별자를 사용할 수 있다.

함수 오버 로딩: 이름이 같은 함수의 매개변수로 식별하여 호출할 수 있다.

디폴트 매개 변수 : 초기값

레퍼런스 : 기존 l-value에 별명을 사용. 주소를 갖는 것이 아니라 변수와 동일하게 사용.

pointer : 간접 참조가 어렵다. 주소를 갖는 것이다. 레퍼런스로 대체할 수 있다.

new/delete 연산자 : 동적 메모리 할당/해제를 위한 연산자.

클래스 : 변수와 함수의 묶음, 타입명과 같이 사용 가능

템플릿 : 자료형에 의존하지 않고 일반화시킨 함수나 클래스

 

 

컴파일 (문법 오류) : 하이 레벨 언어(. cpp)를(. cpp) 기계어(. obj)로(. obj) 바꾸는 것이다.

링커 (오타) : 목적 파일(. obj) 목적 파일(. obj)에 라이브러리를 추가해 실행파일(. exe)로(. exe) 만든다. lnk~어쩌고 어쩌고

 

 

컴파일/링크 두 단계로 구성된 이유?

다수의 소스 파일로 구성된 프로그램에서 변경되지 않는 소스 코드의 재컴파일을 방지하여 컴파일 효율성을 높이기 위해서

 

 

입출력 스트림

#include <iostream> // 입출력 스트림이다.
using namespace std; 
using std::cin; using std::cout; using std::end;
int main(){
	cout << endl; // 시프트 연산과 같은 연산자 = 연산자 오버로딩
	cin >> 
	return 0;
}

나의 실행 프로그램은 반드시 하나의 main() main() 함수만을 가져야 한다..

 

JAVA에서는 01bool을 나타낼 수 없지만, C++에서는 가능하다.

JAVA에서는 boolen으로 true, false만 사용한다.

 

네임스페이스 (std) : 표준적으로 활용할 수 있는 이름 공간

 

C 헤더를 표준

헤더 이름 앞에 ‘c’ 추가, 뒤의 ‘. h’ 제거‘ <string.h><cstring>으로 변경

 

문자열을 표현하기 위해 <string> 해더를 포함시키자.

공백을 포함시키려면 getline()을 사용하자.

 

char address [100];

cin.getline(address, 100, ‘\n’); 최대 99개의 문자를 읽어 저장한다.

 

공백을 포함해도 개행 문자까지 읽어야 하기 때문에 공백 포함 문자열 입력 가능.

 

 

#include <string> // string 객체를 생성하는 것이다.

-두 문자열이 같은지 직접 비교할 수 있다.

 

#include <cstring> // 문자열을 사용하는 것.

-strlen(), 문자열의 길이를 반환한다.

-strcmp() 두 문자열이 같으면 0을 반환한다,

-strcpy() 하나의 문자열을 다른 문자열에 복사한다.

 

 

728x90