[Spring] 객체지향 4대 특성

고지훈·2021년 12월 29일
1

Spring

목록 보기
5/26
post-thumbnail

캡슐화

  • 캡슐화는 객체의 속성을 보호하기 위해 사용
  • 예로, 컴퓨터 본체안에는 많은 부품들로 구성되어 있지만 전원을 켜기 위해서 메인보드에 전기 신호를 직접 주는 것이 아닌, 외부 전원 버튼을 통해 상태 속성을 변경한다.

[메소드 설계]

  • 속성이 선언되었으나, 이의 상태를 변경하는 메소드가 없다면 잘못 선언된 속성이다. 즉, 자신이 갖고 있는 속성에 대해서는 해당 상태를 변경하는 기능을 제공해야한다.
  • 실물 객체가 가진 기능을 제공해야 한다.
  • 각각의 메소드는 서로 관련이 있어야 한다.
  • 객체 안의 메소드는 객체 안의 속성을 처리해야하며, 다른 객체를 전달받아 다른 객체에 정의된 속성을 변경시키면 안된다.
  • 메소드 실행에 필요한 값들은 매개변수의 형태로 전달되어야 한다.
  • 외부에서 내부 속성에 직접 접근하는 것이 아닌 Getter와 Setter메소드를 통해 접근하도록 한다.
  • 데이터 처리를 위한 기본적인 CRUD 메소드를 제공한다.
  • 비지니스 로직 처리를 위한 메소드를 제공한다.
  • 유효성 속성에 대한 변경이 필요한 경우 외부에서는 접근이 불가능하도록 private로 선언하며 내부의 다른 메소드를 통해서 사용되도록 한다.

[장점]

  • 객체지향 패러다임 중 하나인 추상화를 제공한다.
    • 실제로 메소드가 어떻게 동작하는지는 외부에서 이해할 필요 없고 단순 호출만으로 해당 기능을 실행할 수 있고 이를 통해 객체 단위로 프로그램 설계가 가능하다.
  • 재사용성 향상
    • 한 객체에 관련된 속성 및 메소드는 모두 캡슐화 형태로 제공됨으로 객체의 모듈성과 응집도가 높아지고 이를 통해 재 사용성이 높아진다.
    • 유지보수의 효율성이 향상 된다.
  • 무결성
    • 캡슐화 코딩은 변수는 private로 선언하고 메소드는 public으로 선언하는 형태를 많이 가지게 된다.
    • 위처럼 코딩하는 이유는 무결성을 위함이다. public 메소드는 입력된 매개변수를 Validation한 후 실행하는 것을 기본으로 하고, 이를 통해 객체의 값을 바꾸거나 값에 대한 유효성을 가질 수 있다.

상속

  • 객체지향에서 상속은 속성의 상속이 아닌 하위로 내려갈 수록 구체화 되는 것이다.

[장점]

  • 프로그램 구조에 대한 이해도 향상: 최상위 클래스의 구조만 보고 하위 클래스의 동작을 이해할 수 있다.
  • 재사용성 향상: 상속을 이용하여, 해당 클래스에 필요한 속성 및 메소드를 정의하지 않고, 상속받아서 사용할 수 있다.
  • 확장성 향상: 일관된 형태의 클래스 객체를 추가할 수 있어, 간단하게 프로그램 확장이 가능하다.
  • 유지보수성 향상: 각 객체마다, 자신의 메소드를 정의하고 있다면 코드 수정에서 많은 작업이 필요하지만 상속을 사용한 경우 일관된 형태로 작성할 수 있다.

다형성

  • 다형성은 하나의 개체가 여러 개의 형태로 변화하는 것을 말하며 이를 객체지향에서도 사용하고 있다.
  • 다형성을 하기 위해서는 오버라이딩을 통해 가능하다.

추상화

  • 객체지향에서의 추상화는 모델링이다.
  • 구체적으로 공통적인 부분, 특정 특성을 분리해서 재조합하는 부분이 추상화이다.
profile
"계획에 따르기보다 변화에 대응하기를"

0개의 댓글