객체지향 프로그래밍 언어로 기술된 프로그램의 기본 구성 요소는 객체(object)이다.

객체는 다시 데이터와 함수들로 구성되는데 이와 같은 환경에서 프로그램이 하는 일은 그 안에서 기술되어 있는 객체들 간의 관계로 설명된다.

 

객체지향 언어들은 모두 캡슐화(encapsulation), 다형성(polymorphism), 상속성(inheritance)의 세가지 특징을 공통으로 가지고 있다.

 

1.캡슐화란,

데이터와 그것을 다루는 코드를 연관시키는 구조를 말한다. 이렇게 연관된 데이터와 코드를 객체라고 부른다.

객체 안에 있는 데이터와 코드는 공개(public)될 수도 있고, 비공개(private)될 수도 있다.

비공개된 데이터와 코드는 해당 객체 안에서만 액세스가 가능하다.

공개된 데이터와 코드는 외부에서 액세스가 가능하다.

일반적으로, 객체의 공개 부분은 객체의 비공개 부분과 외부와의 인터페이스 역할을 수행한다.

 

2. 다형성이란,

다양한 형태라는 의미를 가지며 하나의 이름을 연관된 두가지 이상의 용도로 사용할 수 있게 하는 성질이다.

객체지향 프로그래밍에서 다형성은 하나의 이름으로 여러 동작들을 저장할 수 있게 해준다.

여러 동작 중에서 특정 동작을 선택하는 것은 주어진 데이터 타입에 의해 결정된다.

보다 일반적인 다형성의 개념은 "하나의 인터페이스에 여러 방법들"로 설명할 수 있다.

이 말은 비슷한 종류의 동작들을 같은 인터페이스로 설계함으로써 복잡성을 줄여주는 이점을 가진다.

 

3. 상속성이란,

하나의 객체가 다른 객체의 특성을 이어 받을 수 있게 해주는 것이다.

하나의 객체는 다른 객체로부터 일반적인 성질들을 상속받고, 이에 자신에게 필요한 특징들을 추가할 수 있다.

'소프트웨어 > C++' 카테고리의 다른 글

[C++] 객체지향의 개념  (0) 2021.12.01
[C++] 연산자  (0) 2020.04.29
[C++] 데이터 타입  (0) 2020.04.25

객체지향(Object-Oriented Programming, OOP)이란,

컴퓨터 프로그램을 명령어의 목록으로 (절차지향적으로) 보지 않고 여러개의 독립단위(객체)들의 모임으로 파악하고자 하는 컴퓨터 프로그래밍의 한 패러다임이다. C++은 1970년대 후반 미국 벨연구소의 비얀 스트라우스트럽(Bjarne Stroustrup)이 당시 유행하던 객체지향 개념을 C에 도입하여 'C with classes'를 개발하게되는데, 이것이 C++이다.

다시 돌아와서, 객체지향은 다음을 구현하는 방법이다.

    1. 객체는 기본적인 구성요소이다.
2. 각 객체는 어떤 클래스(class)의 인스턴스(instance)이다.
3.클래스들은 상속성 관계에 의해 서로 연관되어 있다.

언어가 다음의 조건들을 만족할 때 객체지향 언어라 부른다.

 

1. 언어가 객체를 지원한다.
2. 언어에서 객체는 클래스에 속한다.

3. 언어가 상속성을 지원한다.

객체(Object)는,

연산을 수행하고 지역적인 상태를 갖는 개체(entity)이다. 따라서 객체는 데이터와 프로시저(procedure)의 결합으로 볼 수 있다.

 

인스턴스(Instance)는,

같은 클래스에 속하는 객체로, 하나의 클래스에서 생성된 객체를 말한다. 이때 추상적인 개념인 클래스에서 실제 객체를 생성하는 것을 인스턴스화(instantiation)라고 한다.

 

클래스(Class)는,

속성과 메서드를 공유하는 유사한 성질들의 객체들을 하나로 그룹화한 것이다.

 

Reference

'소프트웨어 > C++' 카테고리의 다른 글

[C++] 객체지향 언어  (0) 2021.12.01
[C++] 연산자  (0) 2020.04.29
[C++] 데이터 타입  (0) 2020.04.25

 

 

 

연산자란 연산 대상이 되는 피연산자에 대한 연산을 수행하는 기호를 뜻한다.

C++에서 사용 가능한 연산자에는 산술 연산자, 관계 연산자, 논리 연산자, 증감 연산자, 대입 연산자, 그리고 비트 연산자가 있다.

 

산술 연산자

산술 연산자는 사칙연산의 연산자들과 나머지 연산자가 있다.

각 연산자의 정의는 다음과 같다.

유형 정의
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 나머지

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    int a = 5;
    int b = 2;

    int sum = a + b; //더하기
    int sub = a - b; //빼기
    int mul = a * b; //곱하기
    int div = a / b; //나누기
    int rem = a % b; //나머지

    cout << "sum: " << sum << endl;
    cout << "sub: " << sub << endl;
    cout << "mul: " << mul << endl;
    cout << "div: " << div << endl;
    cout << "rem: " << rem << endl;
}

결과

 

sum: 7
sub: 3
mul: 10
div: 2
rem: 1

산술연산자가 연이어 사용되는 경우에는 아래와 같이 연산 우선순위를 적용한다.

1. 괄호 안의 연산자가 첫번째 우선순위를 가진다.

2. 곱셈, 나눗셈, 나머지 연산자가 그 다음 우선순위를 가진다.

3. 덧셈, 뺄셈 연산자가 그 다음 우선순위를 가진다.

4. 같은 우선순위의 연산자가 나열된 경우 좌측 연산자부터 먼저 처리한다.

 

관계 연산자

관계 연산자는 두 수를 비교하는 연산자이다.

주로 제어문에서 조건을 검사하기위해 많이 사용되며 true 혹은 false를 출력한다.

각 연산자의 정의는 다음과 같다.

 

유형 정의
== 같다
!= 다르다
> 크다
>= 크거나 같다
< 작다
<= 작거나 같다

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    int a = 5;
    int b = 2;
    
    bool same = a == b; //같다
    bool diff = a != b; //다르다
    bool big = a > b; //크다
    bool big_or_same = a >= b; //크거나 같다
    bool small = a < b; //작다
    bool small_or_same = a <= b; //작거나 같다

    cout << "same: " << boolalpha << same << endl;
    cout << "diff: " << boolalpha << diff << endl;
    cout << "big: " << boolalpha << big << endl;
    cout << "big_or_same: " << boolalpha << big_or_same << endl;
    cout << "small: " << boolalpha << small << endl;
    cout << "small_or_same: " << boolalpha << small_or_same << endl;
}

결과


same: false
diff: true
big: true
big_or_same: true
small: false
small_or_same: false

논리 연산자

논리 연산자는 And, Or, Not의 세가지 종류가 있다.

각 연산자의 정의는 다음과 같다.

유형 정의
&& 그리고 (AND)
|| 혹은 (OR)
! 아닐때 (NOT)

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    bool AND = true && false;
    bool OR = true || false;
    bool excl = !true;

    cout << "AND: " << boolalpha << AND << endl;
    cout << "OR: " << boolalpha << OR << endl;
    cout << "excl: " << boolalpha << excl << endl;
}

결과

 


AND: false
OR: true
excl: false

증감 연산자

증감 연산자는 변수의 값을 증가시키거나 감소시킬때 사용한다.

각 연산자의 정의는 다음과 같다.

유형 정의
++i 연산 전에 i값 1 증가
i++ 연산 후에 i값 1 증가
--i 연산 전에 i값 1 감소
i-- 연산 후에 i값 1 감소

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    int i = 9;
    cout << "i++: " << i++ << endl; //해당 연산 후에 값 증가
    cout << "i: " << i << endl; //연산 이후에 값이 증가함.

    i = 9;
    cout << "++i: " << ++i << endl; //해당 연산 전에 값 증가됨.

    i = 9;
    cout << "i--: " << i-- << endl; //해당 연산 후에 값 감소
    cout << "i: " << i << endl; //연산 이후에 값이 감소함.

    i = 9;
    cout << "--i: " << --i << endl; //해당 연산 전에 값 감소됨.
}

결과

 


i++: 9
i: 10
++i: 10
i--: 9
i: 8
--i: 8

대입 연산자

대입 연산자는 동일한 변수가 연산자의 좌우에 모두 쓰이는 경우 간단하게 쓰기위해 사용하는 연산자를 말한다.

각 연산자의 정의는 다음과 같다.

유형 정의
+= i += j;  (이 식과 동일: i = i + j)
-= i -= j;  (이 식과 동일: i = i - j)
*= i *= j;  (이 식과 동일: i = i * j)
/= i /= j;  (이 식과 동일: i = i / j)
%= i %= j;  (이 식과 동일: i = i % j)

비트 단위 연산자

비트 연산자는 정수형 데이터의 비트를 직접 제어하는데 사용하는 연산자를 말한다..

각 연산자의 정의는 다음과 같다.

유형 정의 설명
| OR 대응 비트가 하나만 1이어도 1을 출력
^ XOR 대응 비트가 서로 다를 때 1을 출력
<< left shift 지정된 수만큼 비트들을 왼쪽으로 이동시킴
>> right shift 지정된 수만큼 비트들을 오른쪽으로 이동시킴
~ 1의 보수 0비트는 1로, 1비트는 0으로 변환

 

 

 

 

'소프트웨어 > C++' 카테고리의 다른 글

[C++] 객체지향 언어  (0) 2021.12.01
[C++] 객체지향의 개념  (0) 2021.12.01
[C++] 데이터 타입  (0) 2020.04.25

C++에서 사용 가능한 데이터 타입은 정수형, 실수형, 문자형, 그리고 논리형이 있다.

각 데이터 타입은 상수 혹은 변수형태로 표현이 가능하다.

상수는 값이 변경되지 않는 데이터를 말하며 변수는 상황에 따라 변하는 데이터를 말한다.

그럼 기본적인 자료형의 종류를 알아보자

 

정수형

정수형 데이터타입은 크게 세가지로 이루어져있다.

short, int, long타입이다. 각 타입은 하나의 정수를 저장하기 위한 기억공간의 크기로 구분되는데, 통상 int 타입을 기준으로 short 타입은 int 타입의 반이, 그리고 int 타입은 long 타입의 반이 할당된 공간이 주어진다.

 

ex)

int a;

short b;

long c;

 

해당 타입들에는 타입 앞에 unsigned란 예약어를 붙일 수 있다.

unsigned는 말 그대로 부호가 붙지 않은 정수. 즉, 양수만을 저장하는 변수를 선언할 때 사용된다. 이는 각 변수별로 할당된 공간을 양수로써 최대로 활용하고자 함에 있다.

 

각 변수의 데이터 범위 정의는 다음과 같다.

 

유형 크기 데이터 범위
short 2
unsigned short 2
int 4
unsigned int 4
long 8
unsigned long 8

주의해야할 점은 변수를 정의하고 사용할 때는 그 변수에 저장될 값의 범위에 맞게 데이터 타입을 정해주어야한다.

 

실수형

실수형 데이터는 소수점을 가지고 있는 수치 데이터이다. 이 실수형은 두가지로 이루어진다.

float, double 타입이다. float형 데이터는 4바이트, double형 데이터는 8바이트의 공간이 할당된다.

 

각 변수의 데이터 범위 정의는 다음과 같다.

 

유형 크기 데이터 범위
float 4
double 8

 

문자, 문자열형

문자형 데이터는 영문자, 숫자, 특수 문자 등을 표현하는 데이터이다.

문자형 데이터 타입은 한쌍의 단일 따옴표를 이용하여 표기하고 문자열 데이터 타입은 이중 따옴표를 이용하여 표기한다.

유형 크기 데이터 범위
char 1
unsigned char 1
wchar_t 2

 

C++에서는 특수문자를 사용하여 출력 상태를 제어할 수 있다.

특수문자는 다음과 같다.

확장 문자
\n 줄을 바꾼다.
\t 수평 탭으로 일정 간격을 벌린다.
\b 백스페이스.
\r 같은 줄의 맨 앞으로 커서를 옮긴다.
\f 출력 용지를 한 장 넘긴다.
\a 경고음을 낸다.
\/ / 문자를 출력한다.
\' ' 문자를 출력한다.
\" " 문자를 출력한다.
\0 널(Null) 문자.

 

논리형

논리형 데이터 타입은 참, 거짓을 표현하는 데이터이다.

유형 크기 데이터 범위
bool 1

 

 

'소프트웨어 > C++' 카테고리의 다른 글

[C++] 객체지향 언어  (0) 2021.12.01
[C++] 객체지향의 개념  (0) 2021.12.01
[C++] 연산자  (0) 2020.04.29

+ Recent posts