객체지향 프로그래밍이란 (Object-oriented Programming, OOP) 프로그래밍에서 필요한 데이터를 추상화 시켜서 상태와 행위를 가진 객체로 만들어서 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
객체란 값을 저장하는 변수와 작업을 수행하는 메소드를 서로 연관된 것들끼리 묶어서 만든것이다.
객체가 조각이고 조각을 합쳐서 무언가를 만드는 방식이 객체지향 프로그래밍이다.
<장점>
부품화와 재사용성으로 프로그램을 유연하고 변경이 용이하게 만들 수 있다.
코드의 변경을 최소화 하고 유지보수 하는 데 유리하다.
코드의 재사용을 통해 반복적인 코드를 최소화하고 코드를 간결하게 표시할 수 있다.
직관적이다
<4가지 특징>
추상화
객체에서 공통된 속성과 행위를 추출하여 타입을 정의하고 중요한 정보만 포함시켜 프로그램 축소시킴
자동차 브랜드는 많지만 ‘자동차’라는 공통된 특징
캡슐화
데이터 구조와 데이터를 다루는 방법들을 결합시키는 것 (변수와 함수를 하나로 묶는다)
낮은 결합도를 갖도록 설계
속성과 기능을 정의하는 변수와 메소드를 클래스라는 캡슐에 넣어서 분류하는 것으로 재활용이 원활하다는 장점이 있고 캡슐화를 통해서 정보은닉
을 활용 할 수도 있다.
데이터 보호 - 외부로부터 클래스에 정의된 속성과 기능들을 보호
데이터 은닉 - 내부의 동작을 감추고 외부에는 필요한 부분만 노출
상속
클래스에서 상위 속성과 행위를 하위 클래스에 물려주는 것
새로운 클래스가 기존의 클래스의 연산과 행위를 간편하게 이용할 수 있게 된다.
장점 | 단점 |
---|---|
1. 재사용으로 인한 코드가 줄어든다 2. 범용적인 사용이 가능하다 3. 자료와 메서드의 자유로운 사용 및 추가가 가능하다 | 1. 상위 클래스의 변경이 어려워진다 2. 불필요한 클래스가 증가할 수 있다 3. 상속이 잘못 사용될 수 있다 |
다형성
다형성이란 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질
같은 이름의 메서드가 상황에 따라 다른 역할을 수행하는 것
오버라이딩
오버로딩