프로그래밍 패러다임
- 프로그램을 어떤 절차와 구조로 만들 것인지에 대한 스타일이나 접근 방법을 나타냄
- 방식이 다른것
비구조적 프로그래밍
- 코드를 구조화하지 않고 작성하는 방법
- goto문으로 흐름 이동
- 어셈블리어, 초창기 포트란
절차적 프로그래밍
- 소스코드를 여러 부분으로 나눠 프로시저(함수)를 이용해 구조화, 모듈화 하여 재사용 가능.
- C, 코볼, 포트란
- 하향식
- 한계
- 프로시저가 가진 논리적 다창 구조를 프로그래밍 내부에서 표현하는데 한계가 있음
- 불필요한 프로시저를 호출하거나 전역 변수를 수정할 수있어 프로그램 동장에 치명적 영향을 줄 수 있음
객체지향 프로그래밍
- 객체라는 논리적 단위를 먼저 정의하고 조합해 프로그램을 만드는 상향식 방법.
- 데이터(속성)와 함수(기능)를 가진 객체 중심
- C++, Java Python
- 상향식 : 레고 블록처럼 쌓아 올림
- has-a 관계: 포함관계
- is-a 관계: 계층관계 / 상속
- 특징
- 추상화 : 불필요한 요소는 배제하고 공통된 특징만 추출하는 것
- 캡슐화 : 복잡한 내부 기능을 묶어 외부에서 불필요한 정보를 감추는 것. 외부에는 필요한 함수만 노출
- 상속성 : 부모 객체의 특성을 이어받아 새로운 특성을 추가하는 것. 계층 관계를 코드로 표현
- 다형성 : 상속 관계의 객체에서 같은 기능(함수)이 다르게 동작하는 특성. 하위 객체가 상위 객체를 대신 가능