체인의정석

객체지향 프로그래밍 하기2 본문

개발

객체지향 프로그래밍 하기2

체인의정석 2021. 7. 16. 12:28
728x90
반응형

다음과 같이 fromJson이라는 함수가 각 하위 클래스 객체에 모두 존재한다면 상위 클래스에서는 하위 클래스의 함수를 불러와서 사용하는 방식으로 코드를 작성해야 한다.

 

상위 클래스에서는 하위 클래스에 접근하거나 수정하는 행위 등을 하지 않아야 객체지향적 프로그래밍에 적합하다고 볼 수 있다.

 

하위 객체에서 각각 생성한 fromJson을 상위 객체에서 가져와서 사용한다. 

 

또한 map을 사용하였는데 이렇게 map을 사용할 때는 return을 같이 넣어주어야 한다.

map은 배열에 있는 요소들에 특정 공식을 대입하여 각각의 요소들을 바꾸어 주는 역할을 한다.

froEach와 push를 합친 것으로 볼 수 있다.

 

위에서 let으로 변수를 선언해 놓고 아레에서 조건에 따라 map을 사용한 이유는 조건 문 안에 들어간 순간 스코프가 안에서만 적용되기 때문에 결과를 도출하여도 인식이 안되기 때문이다. 따라서 let을 사용하여 이러한 결과를 상위 스코프에서 저장 시킨 후 한번에 리턴하여 사용하였다. 여기서는 함수에서 바로 이러한 let 변수들을 사용하여 하나의 객체를 리턴하였기 때문에 이런식으로 사용하였지만 평소에는 사용에 주의를 기울여야 한다.

  static fromJson(json) {
    const name = json.name.map((n) => {
      return NaturalPersonName.fromJson(n);
    });
    let geographicAddress;
    let customerIdentification;
    let nationalIdentification;
    let dateAndPlaceOfBirth;
    let countryOfRegistration;

    if (json.geographicAddress) {
      geographicAddress = json.geographicAddress.map((g) => {
        return Address.fromJson(g);
      });
    }
    if (json.customerIdentification) {
      customerIdentification = json;
    }
    if (json.nationalIdentification) {
      nationalIdentification = NationalIdentification.fromJson(json.nationalIdentification);
    }
    if (json.dateAndPlaceOfBirth) {
      dateAndPlaceOfBirth = DateAndPlaceOfBirth.fromJson(json.dateAndPlaceOfBirth);
    }
    if (json.countryOfRegistration) {
      countryOfRegistration = json;
    }

    return new NaturalPerson({
      name,
      geographicAddress,
      customerIdentification,
      nationalIdentification,
      dateAndPlaceOfBirth,
      countryOfRegistration,
    });
  }
728x90
반응형
Comments