Object-Oriented Programming

Jan 4, 2019


  • ‘객체’라는 여러 개의 독립된 단위들의 모임을 중점으로 하는 프로그래밍 패러다임.
    • 기존의 절차 지향 프로그래밍의 단점을 보완하기 위해 데이터와 함수를 하나의 덩어리(객체)로 묶어서 생각하게 되었다.
    • 절차 지향 프로그래밍의 단점 : 함수 작성에만 신경 쓰게 되고 전역 변수가 과도하게 사용되어 데이터가 함수와 분리된다. 그로 인해 프로그램의 이해가 어려워지고 차후에 변경하거나 확장하기 어려워진다.
  • 장점 : 프로그램이 유연하다. 이는 변경하기 용이하다는 말과 상통한다. 간편한 소프트웨어 개발 및 보수, 보다 직관적인 코드 분석이 가능.
    • 소프트웨어 공학의 관점에서 볼 때 S/W의 질을 향상하기 위해 강한 응집력(Strong Cohesion)과 약한 결합력(Weak Coupling)을 지향해야 하는데, OOP의 경우 클래스에 하나의 문제 해결을 위한 데이터를 모아 놓은 데이터형을 사용함으로써 응집력을 강화하고, 클래스간에 독립적으로 디자인함으로써 결합력을 약하게 할 수 있다.
  • 특징 : 캡슐화(<=정보은닉), 추상화, (다중)상속, 다형성, 동적 바인딩