CS

[CS] 절차지향, 객체지향

pearhyunjin 2024. 1. 29. 20:05

절차지향

순차적인 처리를 중요시 여겨 Top Down 방식으로 프로그램 전체가 연결되도록 만드는 프로그래밍 기법.

컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것 보다 처리 속도가 빠르다. 

 

객체지향

실제 세계를 모델링하여 소프트웨어를 개발하는 방법으로 데이터와 절차를 하나의 덩어리로 묶어서 생각한다.

하드웨어의 빠른 발전을 통해 컴퓨팅 환경은 급속도로 증가했니만 소프트웨어 개발 시간이 그 속도를 따라가지 못하게 되어 소프트웨어의 개발 시간을 단축하면서 하드웨어의 성능을 유지할 수 있도록 하기위해 객체지향이 발전했다.

 


차이점

절차지향은 순차 중심으로 실행되고, 객체지향은 객체간의 관계와 조직을 중심으로 실행된다.

절차지향은 데이터 중심 함수 구현이고, 객체지샹은 기능 중심 메서드 구현이다.

즉, 절차지향 프로그래밍은 프로그램의 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수들을 설계하는 방식이며 객체지향 프로그래밍은 자료구조와 이를 중심으로 한 모듈을 먼저 설계한 이후 실행순서와 흐름을 설계한다.

  절차 지향 객체 지향
접근 방식 Top-Down Botton-Up
구성 요소 함수 객체
접근 제어 없음 public, protected, private
다형성 불가능 메서드, 생성자, 연산자 등 오버로딩
상속 불가능 가능
실행 속도 빠름 비교적 느림
메모리 비용 비교적 적음 비교적 큼
유지보수성 프로그램 커질수록 어려움 좋음
디버깅 어려움 쉬움
데이터 모델링 상대적 어려움 상대적 쉬움
데이터 공유 모든 함수끼리 공유 객체간 멤버 함수로만 공유
보안성 낮음 높음

 

 


더 나은 설계?

더 나은 설계란 없다. 각 성격의 차이일 뿐.객체는 변수와 함수를 추상화 과정을 통해 좀 더 모듈화한 도구에 불과하다. 그렇기에 무조건 적으로 객체 지향이 더 나은 것은 아니며, 객체지향 설계가 마이너스 요소가 되는 경우도 존재한다.객체지향에서는 프로젝트가 커지면 복잡해 지는 부분도 존재하고, 컴퓨터의 관점이 아니기 때문에 상대적으로 느린 경우도 있다.

 


* https://incheol-jung.gitbook.io/docs/q-and-a/architecture/undefined

* https://velog.io/@goblin820/%EC%A0%88%EC%B0%A8%EC%A7%80%ED%96%A5-%EB%B0%8F-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D