[TIL][Java][2023-12-08] 객체 지향 프로그래밍

2023. 12. 8. 20:54TIL/Java

객체 지향 프로그래밍

 

프로그래밍에서 필요한 데이터를 추상화시켜 상태행위를 가진 객체로 만들고,

객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.

 

 

객체란?

 

의미 적으로 뭉쳐있는 존재, 실제로 존재하는 것.

물리적으로 존재하는 물체나 강의, 운동 등의 개념적인 것 또한 식별이 강하기에 객체라 볼 수 있다.

 

 

객체 간의 협력

 

현실에서 사람이라는 객체와 자동차라는 객체가 서로 행위를 통하여 상호작용하듯이
소프트웨어의 객체들끼리도 행위를 정의하는 메서드를 통해 상호작용을 한다.

 

 

 

객체 간의 관계

 

  • 사용 관계
  • 포함 관계
  • 상속 관계

 

 

 

객체지향 프로그래밍의 특징

 

  • 캡슐화
    • 데이터를 숨기고 해당 데이터를 다루는 방법을 묶어놓는 것.
    • 외부에서는 해당 데이터에 직접 접근할 수 없고, 메서드를 통해서만 접근할 수 있다.
      ex. 운전자는 자동차를 운전하기 위해 간단한 컨트롤만 사용, 엔진 내부의 복잡한 부품을 직접 다루지 않음.
    • 이를 통해 코드를 더 잘 관리할 수 있고, 유지보수성과 재사용성을 향상시킬 수 있다.

 

  • 상속
    • 한 클래스가 다른 클래스의 특성과 기능을 물려받는 것.
    • 상속을 사용하면 이미 존재하는 클래스의 속성과 메서드를 새로운 클래스에서 재사용할 수 있다.
    • 이를 통해 코드의 재사용성을 높일 수 있다.
    • 이를 통해 코드의 구조를 보다 체계적으로 유지할 수 있어서 유지보수가 쉬워지며 유사한 클래스들의
      관계를 명확하게 표현할 수 있다.

 

  • 다형성
    • 같은 이름의 메서드가 다양한 형태로 동작할 수 있는 능력을 의미한다
    • 이를 통해 코드를 더 유연하고 확장 가능하게 만들어준다.
    • 새로운 클래스가 기존의 클래스와 호환되도록 만들어질 수 있고,
      이는 코드의 재사용성과 유지보수성을 향상시킨다.

 

  • 추상화
    • 중요한 부분만 간추려서 표현하는 것.
      ex. 운전자는 자동차가 어떻게 작동하는지 정확히 알 필요 없고, 어떻게 운전해야 하는지만 알면 된다.
    • 복잡한 시스템을 이해하기 쉽게 만들어준다. 복잡한 데이터나 프로세스를 간소화하여 중요한 부분에만
      집중할 수 있도록 도와준다.