Skip to content

Latest commit

 

History

History
29 lines (20 loc) · 2.51 KB

what-is-oop.md

File metadata and controls

29 lines (20 loc) · 2.51 KB

객체지향 프로그래밍이란 무엇인가

객체지향 프로그래밍은 현실 세계를 모티브로 하여 프로그래밍을 하는 것입니다.

OOP로 작성된 프로그램은 객체마다 책임을 가지고 있고, 서로 메시지를 주고받으며 협력합니다.

이런 협력을 통해서 프로그램이 동작하는 방식을 지향하는 프로그래밍 방법이 OOP입니다.

객체지향 프로그래밍은 초기 시뮬레이션 프로그램을 만들면서 촉발된 이론으로, 현실 세계의 사물의 특징만을 옮겨놓은 객체들의 모음으로 작성된 프로그램입니다.

객체지향의 핵심은 코드의 재사용성과 유지보수의 증대에 있습니다. 이를 위해서 추상화, 다형성, 캡슐화 등의 원칙들을 적용합니다.

따라서 객체지향적으로 작성된 프로그램이라면 코드는 재사용 되는 방향으로 작성되어야 하고, 유지보수하기 쉬운 형태여야 합니다.

자바 세계에서 유명한 객체지향 프레임워크로는 Spring, JPA가 대표적입니다. 프레임워크에 맞춰 코딩하다보면 객체지향적인 코드가 작성되게 하는 것이 이들 프레임워크의 목표입니다.

객체지향 프로그래밍의 원칙들

  • 상속
    • 어떤 클래스가 다른 클래스를 확장하는 것으로 부모 클래스를 상속한다고 표현합니다.
    • 똑같은 메서드를 부모 클래스와 자식 클래스에서 다르게 정의할수도 있는데 자식 클래스의 메서드가 부모 클래스의 메서드를 오버라이딩 한다고 표현합니다.
    • 상속을 이용하면 코드를 재사용하기 쉬우며, 변경에 유연한 구조로 설계할 수 있습니다.
    • 보통 LSP 원칙 때문에 재정의(오버라이딩)는 신중하게 해야합니다.
  • 다형성
    • 런타임 시점에 메서드를 선택하는 것을 의미합니다.
    • 클라이언트에서는 어떤 메서드를 실행할지 구체적으로 알지 않아도 런타임 시점에서 특정 클레스의 메서드를 호출할 수 있습니다.
  • 캡슐화(Encapsulation): 구현 및 자세한 내용을 클라이언트에게 숨기는 것
    • 객체지향적인 코드는 다른 객체를 직접 조작하는 것이 아니라 메시지를 보내서 그 객체 스스로가 동작할 수 있도록 하는 것이 적절한 코드 입니다.
    • 메서드 시그니처가 변경되지 않는 경우 다른 코드에 영향을 주지 않고 내부 구현을 변경할 수 있다는 장점을 가져다 줍니다.