정말정말정말 객체지향으로 따지자면, 키로그람 클래스, 그람 클래스, 파운드 클래스가 있고, 메소드 오버라이딩을 통해서 키로그람 객체를 받는 ToGram메소드와 파운드 객체를 받는 ToGram함수가 있어야 한다고 봄
익명(182.208)2020-08-04 18:13
그러면 애초에 사실 ToGram이라는 함수가 존재할 필요없이 그람 클래스의 키로그람 객체를 받는 생성자와 파운드 객체를 받는 생성자를 만들어서 쓰고 있겠지?
익명(182.208)2020-08-04 18:14
파운드를 그람으로 바꾸는 함수를 따로 만들어야 한다고 생각
익명(182.208)2020-08-04 18:15
그냥 오버로딩하면 안 됨?
익명(222.112)2020-08-04 18:16
본래 요구조건을 넘어서는 예외가 생겨서 기존 코드를 일반화 해야 한다는 건데, 그렇게 보면 최대한 일반화/추상화를 해보면 대략 "무게를 나타내는 수치는 특정 단위로 표기할 수 있고 임의의 단위로 변환할 수 있어야 한다" 정도 이야기가 되겠지.
구현이 어떻게 되는지는 언어/패러다임에 따라 다를테고, 예컨대 자바라면 Weight 클래스에 unit: Unit, value: Double 정도로 속성 넣고 convert(Unit): Weight 정도 동작으로 표현해도 되지 않나 싶다.
fender(mysticfall)2020-08-04 18:28
답글
혹시 이렇게만 써놓으면 막 if else 쓸까봐 노파심에 첨언... Unit.fromGram(Double): Double 같은 거 만들면 아마 조건문 안필요할 거다.
fender(mysticfall)2020-08-04 18:44
스칼라 같음 아마 Weight를 단위 별로 상속해서 만들고 WeightConverter 같은 거 따로 유형별로 만들어서 암묵 변환 처리할 듯.
fender(mysticfall)2020-08-04 18:32
동적타입 함슬람이라면 걍 함수 하나 더 만듬. 이건 재활용할 함수가 아님..
츄럴(118.38)2020-08-04 19:00
C++이면 benri 한번 참고해봐
익명(223.39)2020-08-04 19:04
뉴비는 오버로딩이 맞는거 같습니다 - dc App
익명(223.62)2020-08-05 15:00
OOP라면 ValueWithUnit.ConvertTo(UnitType) 해서 합칠거같고 함수로 짠다면 따로 함수 만들고, 저 두개 함수를 타입에 따라 호출하는 함수를 하나 더 짜서 보통은 그쪽을 호출하게 하겠음. 진짜 근데 이게 예시가 아니라 Unit문제를 푸는거고 Unit이 많으면 ToSIUnit()을 만드는게 맞겠지.
정말정말정말 객체지향으로 따지자면, 키로그람 클래스, 그람 클래스, 파운드 클래스가 있고, 메소드 오버라이딩을 통해서 키로그람 객체를 받는 ToGram메소드와 파운드 객체를 받는 ToGram함수가 있어야 한다고 봄
그러면 애초에 사실 ToGram이라는 함수가 존재할 필요없이 그람 클래스의 키로그람 객체를 받는 생성자와 파운드 객체를 받는 생성자를 만들어서 쓰고 있겠지?
파운드를 그람으로 바꾸는 함수를 따로 만들어야 한다고 생각
그냥 오버로딩하면 안 됨?
본래 요구조건을 넘어서는 예외가 생겨서 기존 코드를 일반화 해야 한다는 건데, 그렇게 보면 최대한 일반화/추상화를 해보면 대략 "무게를 나타내는 수치는 특정 단위로 표기할 수 있고 임의의 단위로 변환할 수 있어야 한다" 정도 이야기가 되겠지. 구현이 어떻게 되는지는 언어/패러다임에 따라 다를테고, 예컨대 자바라면 Weight 클래스에 unit: Unit, value: Double 정도로 속성 넣고 convert(Unit): Weight 정도 동작으로 표현해도 되지 않나 싶다.
혹시 이렇게만 써놓으면 막 if else 쓸까봐 노파심에 첨언... Unit.fromGram(Double): Double 같은 거 만들면 아마 조건문 안필요할 거다.
스칼라 같음 아마 Weight를 단위 별로 상속해서 만들고 WeightConverter 같은 거 따로 유형별로 만들어서 암묵 변환 처리할 듯.
동적타입 함슬람이라면 걍 함수 하나 더 만듬. 이건 재활용할 함수가 아님..
C++이면 benri 한번 참고해봐
뉴비는 오버로딩이 맞는거 같습니다 - dc App
OOP라면 ValueWithUnit.ConvertTo(UnitType) 해서 합칠거같고 함수로 짠다면 따로 함수 만들고, 저 두개 함수를 타입에 따라 호출하는 함수를 하나 더 짜서 보통은 그쪽을 호출하게 하겠음. 진짜 근데 이게 예시가 아니라 Unit문제를 푸는거고 Unit이 많으면 ToSIUnit()을 만드는게 맞겠지.