Programming/Study

절차지향과 객체지향 프로그래밍 정의와 차이점

재은초 2023. 8. 21. 15:46
반응형

절차지향(Procedural Oriented Programming)

  • 절차 지향(POP)을 대표하는 언어는 C가 있다.
  • 프로그램이 시작하면 프로그래밍 된 순서대로 진행하며, 모든 순서가 종료되면 프로그램 또한 종료된다.

절차지향의 특징

  1. 기능을 우선시하여 프로그래밍하므로 객체 지향 언어에 비해 빠르게 프로그래밍이 가능하다.
  2. 대부분의 함수가 프로그램 내부에서 어디서든 사용 가능한 전역 데이터를 사용하기 때문에 데이터 접근이 용이하다. 하지만 데이터 접근이 유용하다는 뜻은 반대로 보안성이 낮다는 말과 같다.
  3. 절차 지향은 기능 단위로 분리하는 작업을 뜻하는 모듈화가 어렵다. 모듈화가 어렵기에 데이터 및 기능을 추가시 기존에 작성된 프로그램을 수정해야 하며 유지보수가 매우 어렵다.

 

객체지향(Object Oriented Programming)

  • 객체 지향(OOP)을 대표하는 언어로는 JAVA, C++, C#, .NET 등이 있다.
  • 객체 지향은 절차 지향의 단점을 보완하여 개발된 개념으로, 모든 데이터를 객체로 취급한다. 기능 위주의 절차 지향과는 달리 객체라는 개념을 통해 데이터 및 함수를 모듈화하여 프로그램의 유지 보수와 보안성을 강화하였다.
객체를 데이터(변수)와 기능(함수)의 묶음인 클래스로 생각하면 이해하기가 편하다.

객체지향의 특징

  1. 캡슐화(Encapsulation): 데이터와 기능을 하나의 캡슐 형태로 묶는 것으로, 자바에선는 public/private/protected와 같은 접근자를 통해 프로그램 외부에서 접근 가능한 데이터를 지정할 수 있다. 따라서 내부적으로 숨겨야하는 데이터의 접근을 막음으로써 데이터의 보안성이 좋아진다.
  2. 추상화(Abstarction): 객체들의 공통적인 변수와 메소드를 중심으로 묶어 표현하는 것으로, 객체의 기본적인 틀인 뼈대만 미리 만들어놓을 수 있는 기능이다. 추상화된 객체는 상속을 사용하여 구체적인 객체로 만들어 사용할 수 있다.
  3. 상속성(Inheritance): 이미 정의된 상위 클래스의 모든 데이터 및 함수들을 하위 클래스가 그대로 이어 받아 사용할 수 있는 기능이다. 복제한 형태 그대로를 가져오거나 함수들을 재정의하여 코드의 재사용성을 높일 수 있다.
  4. 다형성(Polymorphism): 객체가 다양한 형태로 표현될 수 있다는 개념으로, 추상화된 객체와 같이 틀을 가진 객체가 구체화된 객체로 표현가능하다 라는 뜻이다. 사람은 음식을 먹는다 라는 명제에서 음식은 치킨이나 라면이 될수도 있다. 이 때 여러가지 특징을 나타내는 음식의 특징을 다형성이라고 한다.
반응형