반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 2022 굿노트 다이어리
- 먼슬리 속지
- 청년주택 신청방법
- 굿노트
- 먼슬리
- hosts 설정
- 굿노트 위클리
- 굿노트 다이어리
- VMware
- 애플워치7 스타라이트
- 애플워치 줄질
- ubuntu
- 아이패드
- 아이패드 굿노트
- c++
- 굿노트 속지 공유
- 강릉 새벽기차
- 애플워치 스포츠루프
- 인계동 파스타
- 굿노트 다이어리 공유
- 강릉 당일치기 코스
- mac os hosts
- GIT
- 굿노트 속지
- 역세권 청년주택 신청기준
- 맥북 호스트 설정
- 굿노트 템플릿
- 남영역 청년주택
- 애플워치 스타라이트
- 굿노트 먼슬리
Archives
- Today
- Total
하루하루
[C++] 객체 지향 프로그래밍 (OOP, Object-Oriented Programmig) 본문
반응형
C++은 절차 지향적이며, 구조적 프로그래밍 언어이다. 또한 객체 지향 프로그래밍 언어이다.
객체 지향 프로그래밍의 특징은 크게 5가지, 상속성, 추상화, 캡슐화, 다형성, 정보은닉으로 이루어져있다.
객체 지향 프로그래밍에선 모든 데이터를 객체(Object)로 취급한다.
Objects (객체)
- 자신의 정보를 나타낼 수 있는 변수들과, 이를 가지고 작업 할 수 있는 함수들로 이루어졌다.
- 각각 인스턴스 변수, 인스턴스 메소드라고 부른다.
Class (클래스)
- 사용자 정의 데이터 형식으로 정의할 수도 있고, 함수도 포함한다. 클래스는 기본적으로 객체의 설계도이다. 객체가 가질 데이터 변수와 클래스 객체에서 수행 할 수 있는 작업을 선언하고 정의한다.
- 클래스를 이용해 만들어진 객체를 인스턴스라고 부른다.
Inheritance (상속)
- 상속은 작성된 코드를 반복해서 재사용하는 방법이다. 상속 된 클래스를 Base(기반) 클래스라고 하며, 상속되는 클래스를 Derived(파생) 클래스라고 한다. 부모 및 자식 클래스라고도 한다.
- 따라서 기반 클래스를 상속받는 파생 클래스는 기반 클래스에 정의 된 모든 함수를 사용할 수 있으므로 코드를 재사용 할 수 있다.
- 파생 클래스는 상속받은 속성이나 함수 외에 새로운 속성, 함수를 추가하여 사용할 수 있다.
Abstraction (추상화)
- 추상화는 공통의 속성이나 기능을 묶어 이름을 붙이는 것, 객체 지향적 관점에서 클래스를 정의하는 것을 말한다.
- 불필요한 부분은 생략하고 다른 객체들과 구분되는 핵심적인 특징들에 집중하여, 복잡도를 관리할 수 있다.
Encapsulation (캡슐화)
- 구현되는 부분을 외부에 드러나지 않도록 캡슐로 감싸고, 이용방법만을 드러낸다.
- 데이터 구조(속성)와 데이터를 처리하는 함수를 결합시켜 묶는다. 데이터를 외부에서 직접 접근을 못하게, 함수를 통해서만 접근할 수 있도록 하는 것이 캡슐화이다.
Polymorphism (다형성)
- 다형성은 객체가 연산을 수행할 때 각 객체가 가지고 있는 고유한 방법으로 응답하는 것을 의미한다.
- 상위클래스에서 상속받은 것을 하위 클래스에서 다시 정의하는 것을 메소드 오버라이딩(Method Overriding) 이라고 한다.
- 클래스 내부에 동일한 이름의 메소드를 여러개 정의하고, 매개변수의 타입에 따라 구분하는 것을 메소드 오버로딩(Method Overloading) 이라고 한다.
반응형
'IT > c++' 카테고리의 다른 글
[CMake] Ubuntu에 CMake 설치 및 업데이트 (0) | 2020.01.17 |
---|---|
[VS code] 우분투 16.04 LTS 에서 VScode 설치하기 (2) | 2020.01.06 |
[C++] 상속(Inheritance) (0) | 2019.10.16 |
[C++] 접근 제어자 (0) | 2019.10.08 |
[C++] 클래스와 객체 (0) | 2019.10.07 |