항해99 4주차 TIL

김근호·2023년 2월 3일
1

객체지향? 절차지향?

  • 객체지향, 절차지향에서처럼 OO지향이란 코딩하는 방식 또는 방법론의 차이이지 특정 언어가 특정지향만 지원한다는 것은 아니다
  • 객체지향 프로그래밍의 반대 개념은 절차지향이 아니다
  • 정확한 표현으로 말하자면 '객체지향 프로그래밍(OOP : Object Oriented Programming)'과 절차적 프로그래밍 (PP : Procedure Programming)이라는 말이 더 정확하다

구분 기준

  • 보통은 아래 기준을 만족하면 객체지향, 만족하지 않으면 절차적 성격이 강해집니다.
    1. 캡슐화, 다형성, 클래스 상속을 지원하는가?
    2. 데이터 접근 제한을 걸 수 있는가?

객체지향 프로그래밍

  • 기능들을 묶어 하나의 객체로 만든다

장점

  • 모듈화, 캡슐화로 인해 유지보수에 용이하다
  • 객체지향적이기 때문에 현실 세계와 유사성에 의해 코드를 이해하기 쉽게 만든다
  • 객체는 그 자체가 하나의 프로그램이기 때문에 다른 프로그램에서 재사용이 가능하다

단점

  • 대부분의 객체 지향 프로그램은 속도가 상대적으로 느려지고 많은 양의 메모리를 사용하는 경향이 있다
  • 현실 세계와 유사성에 의해 코드를 이해하기 쉽게 만드는 만큰 설계 과정에 시간이 많이 투자된다

절차적 프로그래밍

  • '절차적'으로 코드를 구성, 쉽게 말해서 '흐름도(순서도)'라고 생각하자

장점

  • 객체나 클래스를 만들 필요 없이 바로 프로그램을 코딩할 수 있다
  • 필요한 기능을 함수로 만들어 두기 때문에 같은 코드를 복사하지 않고 호출하여 사용할 수 있다
  • 프로그램의 흐름을 쉽게 추적할 수 있다

단점

  • 각 코드가 매우 유기성이 높기 때문에 수정하기가 힘들다.
    => (새로운 데이터나 기능을 추가하기가 어려움)
  • 프로그램 전체에서 코드를 재사용 할 수가 없어 프로젝트 개발 비용과 시간이 늘어날 수 있다
  • 디버그(오류 검사)가 어렵다
profile
앞만 보고 나아가자!

0개의 댓글