4.1 객체 지향 프로그래밍이란?
객체
1) 상태 속성
2) 동작 기능
1)과 2)는 소프트웨어에서 각각 필드와 메소드로 표현할 수 있다.
객체 안의 변수 = 필드
객체 안의 함수 = 메소드
< 프로그래밍 기법의 발전 >
어셈블리 -> 절차지향 -> 객체지향 -> 함수형
절차 지향 프로그래밍
: 명령형 프로그래밍에 속하는 방법이다.

*절차 지향에서 사용되는 설계 방법은 하향식 설계라고도 불린다. 복잡한 문제를 작은 문제들로 분해하는 방법이다.
•문제점
객체 지향 프로그래밍
: 데이터와 함수를 하나의 덩어리로 묶어서 생각하는 방법이다.
•캡슐화
: 데이터와 함수를 하나의 덩어리(객체)로 묶는 것.
< 절차 지향 vs 객체 지향 >
•절차 지향
•객체 지향
< 객체 지향 프로그래밍의 특징 >
1) 캡슐화
2) 정보 은닉
3) 상속
4) 다형성
필드는 데이터,
메소드는 알고리즘
에 해당된다.

*정보은닉이 되어 있다면 클래스 개발자는 언제든지 내부 데이터와 알고리즘을 변경할 수 있다.
유지되어야 할 것은 오직 공개 인터페이스 뿐이다.
상속
: 이미 작성된 클래스를 이어받아서 새로운 클래스를 생성하는 것.
부모-자식 클래스
다형성
: 동일한 이름의 동작이라도, 객체의 실제 타입에 따라서 동작의 내용이 달라질 수 있는 것.
*메소드 오버로딩과 같은 것도 넓은 의미로 다형성에 속한다.
추상화
: 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 기법.
=> 필요한 것만 남겨 놓기