노드심화 3-2

·2022년 12월 27일
0

study

목록 보기
31/81
post-thumbnail

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

프로그래밍 패러다임

프로그래밍 패러다임은 무엇을 해야 할지를 말하기보다는 무엇을 해서는 안 되는지를 말해준다.

프로그래밍 패러다임에는 대표적으로 3가지가 존재합니다.

  1. 구조적 프로그래밍 (Structured Programming)
    구조적 프로그래밍제어 흐름직접적인 전환에 대한 규칙을 제시합니다.

    • 시스템 전체의 구조를 하향식으로 분석, 개발 진행.
    • 구조적 프로그래밍은 프로그래밍이라는 기술이 시작되면서 가장 처음으로 적용된 패러다임입니다.
  2. 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)
    객체 지향 프로그래밍제어흐름간접적인 전환에 대한 규칙을 제시합니다.

    • 객체 지향 프로그래밍은 프로그램의 처리단위가 객체인 프로그래밍 방법입니다.
    • 객체 지향 프로그래밍은 “현실 세계를 모델링”하는 대표적인 프로그래밍 패러다임입니다.
  3. 함수형 프로그래밍 (Functional Programming)
    함수형 프로그래밍할당문에 대한 규칙을 제시합니다.

    • 함수형 프로그래밍함수를 중심적으로 개발을 진행합니다.
    • 함수형 프로그래밍은 3가지의 패러다임 중 가장 처음 만들어졌지만 최근들어 겨우 도입되기 시작하는 패러다임 입니다.

객체 지향 프로그래밍

데이터와 프로세스가 동일한 모듈 내부에 위치하도록 프로그래밍하는 방식

  • 객체 지향 프로그래밍코드를 추상화해 직관적으로 사고할 수 있기 때문에, 대표적인 프로그래밍 방법론으로 적용되고 있습니다.
  • 객체 지향 프로그래밍에서는 자동차, 동물, 사람 등과 같은 현실 세계의 객체를 유연하게 표현할 수 있습니다.
  • 객체는 어떠한 특성을 가지고 있으며 특정 기능을 수행할 수 있습니다.
    => 자동차는 객체이고 출발, 정지, 운행 및 제동과 같은 기능을 수행할 수 있습니다.

객체 지향 프로그래밍을 사용해야하는 이유?

수정시간 단축

객체지향 프로그래밍은 데이터와 프로세스를 하나의 단위로 처리하는 특성을 가지고 있기 때문에 코드를 수정해야할 때 어떤 코드에서 문제가 발생했는지 개발자들이 직관적으로 인지할 수 있으며 여러곳에 분산된 모든 코드를 수정해야하는 것이 아닌 해당 로직을 수행하는 코드만 수정하더라도 문제가 해결될 수 있습니다.

객체 지향 프로그래밍의 장점

의존성 통제, 일관성유지, 수정시간 단축

  • 객체지향 프로그래밍의존성을 효율적으로 통제할 수 있는 다양한 방법을 제공함으로써 요구사항 변경에 좀 더 수월하게 대응할 수 있는 가능성을 높여줍니다.

  • 동작을 기준으로 프로그래밍을 진행하는 것보다 데이터를 중심으로 프로그래밍을 하게되면 코드의 덩치가 커지더라도 일관성을 유지하기 좋습니다.

  • 객체지향 코드는 이해하기 쉽고, 객체 내부의 변경이 객체 외부에 파급되지 않도록 제어할 수 있기 때문에 변경하기 수월합니다.

객체 지향 설계

  • 좋은 설계요구하는 기능온전히 수행하면서 추후의 변경을 매끄럽게 수용할 수 있는 설계입니다.

  • 변경 가능한 코드이해하기 쉬운 코드입니다. 만약 코드를 변경해야 하는데 그 코드를 이해할 수 없다면 변경에 유용하더라도 코드를 수정하겠다는 마음이 선뜻 들지는 않을 것입니다.

  • 변경하기 쉬운 설계는 한 번에 하나의 클래스만 변경할 수 있는 설계입니다.

  • 훌륭한 객체지향 설계의 핵심은 캡슐화를 이용해 의존성을 적절히 관리함으로써 객체 사이의 결합도를 낮추는 것이다.

profile
개발자 꿈나무

0개의 댓글