CS Interview

절차지향 프로그래밍 vs 객체지향 프로그래밍 비교

게임이 더 좋아 2021. 8. 25. 16:20
반응형
728x170

 

이것이 도대체 프로그래밍에 관해 무슨 상관이 있나?

라고 생각하기도 하지만

 

 

컴퓨터가 처리하는 방식과 사람이 생각하는 방식의 차이를 공부한다고 생각하면

조금이라도 더 배울 맘이 생긴다라고 생각했다. 

그러므로

알아보자

 


 

절차지향 프로그래밍이란

 

말 그대로 절차에 맞는 프로그래밍으로써

프로그램 전체가 순차적으로 처리되게 만드는 기법이다.

컴퓨터의 작업 처리 방식과 유사하기 때문에 시간측면에서 더욱 효율적이다.

다시 말하면 처리해야 할 절차를 우선적으로 생각하며 데이터를 표현할 방법을 나중에 찾는다.

 

장점으로는

객체나 클래스를 만들 필요 없이 바로 코딩을 하면 작동한다.

같은 코드는 복사하지 않고 바로 호출이 가능하다.

 

단점으로는

전체적으로 하나만 건드려도 전체가 오류가 생길 수 있고

유지 보수가 쉽지 않으며

특히 디버깅이 쉽지 않다.

Top - Down 방식으로 작은 일로 쪼개는 경향성이 있다.

 

 

객체지향 프로그래밍이란

 

인간들이 생각하는 방식으로 프로그램을 모델링하는 기법을 말한다.

여러 가지 기능(모듈)별로 나누어 합쳐서 작동하는 방식이다.

모듈의 일부만 쓰더라도 전체를 가져와야 하기에 사이즈가 커질 수 있지만 장점이 단점보다 커서 사용 중이다.

절차와는 반대로 데이터에 우선적으로 초점을 맞춘다.

다시 말해서 프로그래머는 객체를 서술하는 데 필요한 데이터와 사용자가 그 데이터를 다루는 방법에 대해서 생각하고 사용자가 이해하는 방식대로 객체에 집중하는 것이다. 해당 인터페이스를 설계한 후 인터페이스와 데이터 저장 형태를 구현해나가는 것이다.

 

장점으로는

코드의 재활용이 가능하고 디버깅이 편리하며 유지보수가 쉽다.

처리속도는 절차지향 프로그래밍보다 느린거지 결코 느리진 않다.

 

다만

코딩 단계보다 설계 단계에서 시간을 더 잡아먹는 경향이 있다.

 

아래 글을 참고하자.

 

[컴퓨터(Computer Science)/소프트웨어공학(Software engineering)] - 프로젝트 계획(8) - 모델링(Modeling) + 객체지향 [소프트웨어공학]

 


 

글을 읽다보면 정 반대의 개념이구나 느낄 수 있는데

절차지향과 객체지향은 양 극단에 있는 그런 것들이 아니다.

 

다만 예전엔 그냥 사람이 할 수 있는 것들을 빨리 해주는 수단이 컴퓨터였다면

이제는 사람이 할 수 없는 것도 해주고 복잡한 작업을 수행하기 위해서 객체지향적으로 발전했다고 보면 된다.

 

다시 말하면 어떤 식으로 생각하느냐 차이다.

 

 

 

728x90
반응형
그리드형