프로그램 구현에 필요한 객체를 파악하고
상태와 행위를 가진 객체
로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법.
프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며 값을 저장 할
변수
와 작업을 수행 할메서드
를 서로 연관된 것들끼리 묶어서 만든 것.
Ex. 레고의 조각이객체
가 될 수 있고 이 조각들을 조립해서 무언가를 만드는 방식이 객체지향 프로그래밍이라고 할 수 있다.
크게
추상화
,캡슐화
,상속
,다형성
의 네가지 특징을 가지고 모듈 재사용으로 확장 및 유지보수가 용이하다.
- 객체에서 공통된 속성과 행위를 추출 하는 것
- 공통의 속성과 행위를 찾아서 타입을 정의하는 과정
- 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단하게 만드는 것
- 데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것(변수와 함수를 하나로 묶는 것)
- 낮은 결합도를 유지할 수 있도록 설계하는 것
- 클래스의 속성과 행위를 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것을 말한다.
- 새로운 클래스가 기존의 클래스의 데이터와 연산을 이용할 수 있게 하는 기능
- 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석 될 수 있는 것
- 어떠한 요소에 여러 개념을 넣어 놓는 것
객체 지향 프로그래밍은 하나의 클래스 내부에 같은 이름의 행위를 여러개 정의하거나 상위 클래스의 행위를 하위 클래스에서 재정의하여 사용할 수 있기 때문에 다형성이라는 특징을 갖게 된다.