절차지향 프로그래밍
물이 흐르듯 위에서 아래로 즉 모든 코드가 유기적으로 연결되어 있는 방식 (C언어)
객체지향 프로그래밍
프로그램을 다수의 객체를 만들고, 객체끼리 서로 상호작용하도록 만드는 방식 (자바, C++, 파이썬 등)
절차지향 장점
- 컴퓨터의 처리구조와 유사해 실행속도가 빠름 ( 처리 속도 중심 )
절차지향 단점
- 유지보수가 어려움 ( 모든 요소가 연결되어 있기 때문에 하나가 고장났을 때 전체가 고장난다. )
- 디버깅이 어려움 ( 특정 기능에 문제가 있을 때 찾기 힘듬 )
- 실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일한 결과를 보장하기 어려움
( 자동차 제조를 예로 들자면, 자동차는 엔진, 차체, 핸들, 의자, 바퀴 순으로 차례대로 만들어져야 함. 서로 분리되어도 안 되고, 순서가 틀려도 안 됨)
객체지향 장점
- 코드의 재활용이 편리함 ( 상속 및 오버라이딩 등 여러 방식으로 재활용 가능 )
- 디버깅이 쉬움 ( 고장났을 때 고장난 기능만 수리하면 정상 작동 가능하다. )
- 자연스러운 모델링 ( 현실 세계를 추상화 하기 때문 )
객체지향 단점
- 처리속도가 절차지향보다 느림
- 설계에 많은 시간소요가 들어감 ( 모든 객체의 역할과 기능을 이해해야 함)