이론 정리/java

패캠 - java/spring 웹 개발 강의 수업 정리(2)

철매존 2021. 6. 28. 22:53
728x90

객체지향의 4대 특징

 

1. 캡슐화

  객체의 속성을 보호하기 위해 사용

  ex) 컴퓨터 본체 안에 부품이 많이 있는데, 실제로 해당 부품에 전기를 공급할 필요 없이 컴퓨터 전원을 누르면 켜짐.

 

  method설계

 - 속성이 선언되었으나, 이의 상태를 변경하는 method가 없다면 잘못 선언된 속성이다.

   즉 자신이 가지고 있는 속성에 대해서는 해당 상태를 변경하는 기능을 제공해야 한다.

 - 실물 객체가 가진 기능을 모두 제공해야 한다.

 - 각각의 Method는 서로 관련이 있어야 한다.

 - 객체 안의 Method는 객체 안의 속성을 처리해야 하며, 다른 객체를 전달받아 해당 다른 객체에 정의된 속성을 직접 처리하면 안된다.  즉 자신의 속성만을 처리해야 한다. (혹시 외부에서 가져온다면 객체의 형태가 아니라 매개변수 형태로 전달할 것)

 

Getter / Setter Method : 외부에서 내부 속성에 직접 접근하는게 아닌, Getter/Setter를 통해 접근하도록 한다.

CRUD Method : 데이터 처리를 위한 기본적인 crud Method제공

Business logic Method : 비즈니스 로직 처리를 위한 Method 제공

객체의 생명 주기 처리 Method : 주로 destroy() disconnect()등 소멸에 관한 Method

객체의 영구성 관리 Method : 영구성 속성에 대한 변경이 필요한 경우 외부에서 접근이 불가능하도록 private로 선언하며, 내부의 다른 Method를 통해 사용되도록 한다.

(Method는 위의 속성들에 동시에 여러 가지에 해당 가능하다.)

 

캡슐화의 장점

 1. 추상화 장점

메소드 동작에 관해 외부에서 이해할 필요 없이, 단순히 호출만으로 기능 실행 가능.

이를 통해 객체 단위로 프로그램 설계가 가능핟.

 

 2. 재사용성 향상

한 객체에 관련된 속성 및 Method는 모두 캡슐화의 형태로 제공됨으로 객체의 모듈성과 응집도가 높아짐. 이를 통해 재사용성이 높아진다.

-> 유지보수 효율성의 향상

무결성 : 보통의 캡슐화 코딩이라고 하면 변수는 private로 선언하고 Method를 public으로 선언하는 형태를 많이 가진다. 이는 객체의 무결성을 위함인데, Getter/Setter를 제외하고는 public method는 입력된 매개변수를 validation한 후에 실행하는 것을 기본으로 한다.

validation을 통해 객체의 값을 바꾸거나 값에 대한 유효성을 가질 수 있다.

 

2. 상속

아래로 내려갈수록 구체화

ex) 유닛이라 하면

유닛(공격력, 방어력, 이름, 속도, 움직임...)

-공중유닛(+날기)

-지상유닛(날기기능 없음)

 

상속의 효과

 - 프로그램 구조에 대한 이해도 향상 : 최상위 클래스를 보고 아래 클래스의 동작을 이해 가능하다.

 - 재사용성 향상 : 상속을 이용하여 새로운 클래스를 만들지 않고 사용 가능하다.

 - 확장성 향상 : 일관된 형ㅊ태의 클래스 객체를 추가할 수 있어 간단하게 확장 가능하다.

 - 유지보수 향상 : 각 객체마다 메소드를 정의하면 수정이 힘든데, 상속을 사용하면 일관된 형태로 작성 가능하다.

 

3. 다형성

하나의 객체가 여러 형태로 변화하는 것

java에서는 다형성을 위해 오버라이딩 사용

예를 들어 이동속도의 경우 공중유닛-날기 가능  -> 뮤탈리스크-속도10 이런 식으로 속도를 변화시키며 사용 가능하다.

 

 

4. 추상화

객체지향에서 추상화는 모델링이다.

구체적으로 공통적인 부분, 또는 특정 특성을 분리하여 재조합 하는 부분이 추상화이다.

앞에서 배운 다형성, 상속 모두 추상화에 속한다.