객체 지향 프로그래밍 (Object Oriented Programming)
객체, 클래스, 인스턴스 개념
객체
- 실제로 존재하는 것. 사물 또는 개념, 구현할 대상
- 클래스에 선언된 모양 그대로 생성된 실체
- 객체는 모든 인스턴스를 대표하는 포괄적 의미를 갖는다.
- oop관점에서 클래스 타입으로 선언되었을 때 객체라고 부른다.
클래스
- 객체를 정의해 놓은 것 (설계도, 틀)
- 객체를 생성하는데 사용
인스턴스
- 설계도를 바탕으로 구현된 구체적인 실체
- 객체를 소프트웨어에 실제화하면 그것을 인스턴스라고 부른다.
- oop관점에서 객체가 메모리에 할당되어 실제로 사용될 때 인스턴스라고 부른다.
- 인스턴스는 어떤 원본(추상적인 개념)으로부터 생성된 복제본을 의미한다.
객체지향의 네 가지 특징
추상화
- 추상화는 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법
- 추상화는 모델링이라고 표현한다. 어떤 실체들에서 관심있는 공통적인 특성을 뽑아내어 하나의 분류로 만드는 것이다.
캡슐화
- 비슷한 속성과 메소드를 하나의 클래스로 묶는 것.
- 객체의 내용 중 숨기고 싶은 부분을 외부에서 접근하지 못하도록 할 수 있다.(정보 은닉이 가능)
- 접근제어(public, private, protected)와 같은 내용에 의해 구현된다.
- 접근 권한을 통해 제공되며 원하지 않는 외부의 접근으로부터 내부의 데이터, 함수를 보호
상속
- 클래스의 멤버와 함수를 다른 클래스에 물려주거나 물려받는 것.
- 코드의 재사용을 증대시킬 수 있다. (코드의 중복을 없앤다.)
다형성
- 서로 다른 클래스의 객체가 같은 메시지를 받았을 때, 각자의 방식으로 동작하는 능력.
- 형태가 같지만 다른 기능을 하는 것을 의미
- 오버라이딩으로 구현 가능
참조
https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html
https://victorydntmd.tistory.com/117
https://gmlwjd9405.github.io/2018/07/05/oop-features.html