학습 일자 : 2023.04.06


객체지향 프로그래밍 (OOP : Object Oriented Programming)

프로그램 설계 방법론이자 개념의 일종으로, 객체(Entity) 기본 단위로 구성하는 방식

객체가 서로 상호작용을 하는 방법론

→ 절차지향 : 프로그림의 순차적인 처리를 위주로 설계하는 방법론

→ 프로그램 방법론의 차이일 뿐 절차지향보다 객체지향이 우월한 것은 아님. 필요에 따라 방법론을 선택해서 사용하면 됨

객체지향의 등장 배경

예전에는 복잡한 연산보다는 간단하고 빠른 연산을 요구하는 프로그램이 대부분이었음 (기계 자체가 복잡한 기능을 가지고 있지 않았음.)

→ 물리적인 하드웨어가 빠르게 발전 됨에 따라 소프트웨어의 중요성도 빠르게 올라감. (하드웨어 발전에 상응하는 복잡하고 정확한 계산이 요구되는 소프트웨어 프로그램에 대한 요구의 증가)

→ 기존의 절차 지향 방식으로는 복잡한 구조에 대한 설계가 힘들어짐. (절차 지향의 한계를 느낌)

→ 객체지향 방식이 대안이 됨

객체지향의 장단점

장점

  1. 객체 단위로 관리하기 때문에 디버깅이 유리함 (오류가 발생하면 오류가 발생한 객체만 수정하면 돼)
  2. 상속을 통해 코드의 재사용성이 좋음
  3. 잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로 생산성을 향상

단점

  1. 객체 지향 언어는 절차 지향 언어에 비해 실행 속도가 느림 (객체지향 자체가 느린 것은 아님. 절차지향에 비해 상대적으로 느림)
  2. 설계에 시간이 많이 소비되며 신중해야 함 (설계를 잘못하면 안 한 것보다 못해짐) (절차지향은 순서만 잘 맞으면 되기 때문에 설계 시 고민할 필요가 없음)

객체지향의 특징

관련 특성 및 Entity(객체)의 상호 작용을 클래스로 모델링하여 시스템의 추상적 표현을 정의
객체를 상태와 기능으로 묶는 것을 의미
부모클래스의 모든 기능을 가지는 (=상속 받는) 자식클래스를 설계하는 방법
부모클래스의 함수를 자식클래스에서 재정의하여 자식클래스의 서로 다른 반응을 구현

객체지향의 설계원칙 : SOLID

객체지향 설계에서 지켜야할 5개의 소프트웨어 개발 원칙이다