객체지향
- 자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음에 이들의 실행순서와 흐름을 짜는 방식
절차지향
- 프로그램의 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수들을 설계하는 방식
OOP VS PP
- 객체지향은 절차를 간소화하는것이지, 결코 절차를 무시하는 것이 아니다.
- 절차지향은 데이터와 함수가 분리되고 통일성이 없지만, 객체지향은 좀 더 모듈화되고 체계적이다.
- 절차지향은 과도한 전역 변수의 사용, 스파게티 소스, 변경과 확장, 프로그램에 대한 이해가 어렵지만 , 객체지향은 코드의 재사용성이 높다.
- 절차지향은 프로그램의 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수들을 설계하는 방식이고. 객체지향은 반대로 자료구조와 이를 중심으로 한 모듈들을 먼저 설계하고 그 다음에 실행 순서와 흐름을 짜는 방식이다.
객체지향의 프로그래밍 개념
캡슐화
- 데이터와 함수들을 객체 안에 넣어서 묶는다. 캡슐화된 객체들은 다른 프로그래머가 사용하기 편리하다. 또한 수많은 테스트와 디버그를 마쳤기 때문에 안심하고 사용할 수가 있다.
정보 은닉
- 객체 간의 모든 통신은 함수 호출을 통해야 하며 객체의 함수를 가지고 상호작용 함으로써 객체 내부 구현의 세부 사항은 외부 세계로부터 감춰진다.
내부 데이터가 숨겨져 있다는 것은 프로그램의 다른 부분에 영향을 미치지 않고 쉽게 변경될 수 있음을 의미한다.
상속과 다형성
- 자식 클래스는 부모 클래스를 물려받으며 확장 가능하며 기존의 코드를 재사용하는 것이 가능하다.
서로 다른 타입에 속하는 객체들이 같은 이름의 멤버 함수에 응답하여서 서로 다른 동작을 보여주는 것이 가능하다.
쉬운 디버깅
- 절차지향 프로그램에서 하나의 변수를 1000개의 함수가 사용하고 있고, 객체 지향 프로그램에서는 100개의 클래스와 각 클래스당 10개의 멤버 함수를 가지고 있다고 가정해보자. 프로그램에 문제가 생겼을 시 클래스 안에 10개의 멤버 함수를 검사하는 편이 1000개의 함수를 검사하는 것보다 훨씬 낫다.
OOP방식과PP 방식 요약
Procedural Programming
- 전통적인 프로그래밍 방식.
- 데이터르 이를 처리하기 위한 기능들이 별도로 분리.
- 프로젝트의 규모가 커질수록 관련된 데이터가 여러곳에 분산된다.
- 구성요소들 간의 결합도가 높아진다.
- 데이터 무결성(데이터 무결성을 보장하는 것은 데이터가 정확하고 일관성 있게 유지되도록 보장하는 것) 보장이 어려워진다.
- 개발 생산성이 크게 저하된다.
Object-Oriented programming
- 관련된 데이터와 오퍼레이션을 그룹화하는 "객체"위주의 프로그래밍 방식.
- 불필요한 결합도를 줄일 수 있다.
- 전체 데이터와 오퍼레이션들이 객체단위로 분할되기 때문에 부담이 적다.
- 데이터 무결성(데이터 무결성을 보장하는 것은 데이터가 정확하고 일관성 있게 유지되도록 보장하는 것) 보장이 용이하다.
- 개발 생산성이 떨어지지 않는다.
참고자료 : https://cocoon1787.tistory.com/44