객체지향언어에서 어떤 Data를 다른 Data로 변환할때.
글쓴이: Fe.head / 작성시간: 수, 2005/05/04 - 6:07오후
객체지향언어에서 어떤 Data를 다른 Data로 변환할때
변환 함수는 어떻게 구현하는것이 좋나요?
그러니깐 변환함수를 어디다가 구현하는것이 좋는가 하는겁니다.
예를 들면
class Man { private: int _age; }; class Data { private: char _age[20]; }; int main() { Data data("28"); Man man; .... return 0; }
이런 코드가 있다고 가정한다고 하면
convert함수는 어디에 있어야 적당한가요?
man.convert(data); or data.convert(&man); or 새로운 class Convert를 작성하여 class Convert{...}; Convert con; con.convert(man, data):
여기서는 man에 convert함수를 만드는것이 적당한것 같습니다만.
그러면 Man class 는 Data class 를 알고 있어야 되는것 같은데.
어떤것이 좋을까요?
Forums:
Man과 Data가 서로 어떤 관계인지 모르는 상태에서는 대답하기 어렵습
Man과 Data가 서로 어떤 관계인지 모르는 상태에서는 대답하기 어렵습니다.
copy constructor 또는 helper class로 구현하는게
copy constructor 또는 helper class로 구현하는게 일반적인 것같은데요.
구현하는 사람의 취향에 따라 달라지는 것같습니다. 8)
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
C++이라면, Man 클래스의 operator =을 사용해서[code
C++이라면, Man 클래스의 operator =을 사용해서
man = data;
불필요한 종속성은 줄일 수록 좋습니다.Data와 Man이 항상 같
불필요한 종속성은 줄일 수록 좋습니다.
Data와 Man이 항상 같이 사용될 때가 아니라면 외부로 분리해 주는 것이 종속성을 줄여줍니다.
재사용성 측면에서 보면 Data만이 필요한 경우라도 Man을 가져가야 합니다.
Unit Test를 할 때도 Data를 테스트 할 때 Man을 넣어 주어야 합니다.
----------------------------------------
http://moim.at
http://mkhq.co.kr
class FROM 의 내용을 class TO 에서 받는다고 할때
class FROM 의 내용을 class TO 에서 받는다고 할때
"operator =" 을 사용하는것도 좋은 방법입니다만.
"TO = FROM"
아무래도 "operator =" 은 같은 클래스의 내용복사를 기본가정으로 인식하고 있어서 실제로 코드 읽을때 혼동이 오지 않을까 생각이 드네요.
이보다는 import 라는 이름으로 받는것도 좋을듯 합니다
"TO.import(FROM)"
다른 타입을 자신의 타입에 맞게 가져온다는 의미가 강하게 들릴 수 있기 때문입니다... 만...
하지만, 경우에따라 class FROM과 class TO의 proteced/private 부분을 참조해야 변환을 하는경우도 있을테니...
차라리 convert class를 만드는게 낫지 않을까요 ???
import 아니면 convert class 추천입니다.
^^
WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra
convert 클래스를 만들면, Data와 Man 클래스 모두를 알아야
convert 클래스를 만들면, Data와 Man 클래스 모두를 알아야 하지 않나요? 제 생각에는 클래스 안의 데이타는 속성대로 외부에 알려주고, 가져오는 쪽에서 내 취향에 맞게 변환을 하는 것이 보통이라는 생각입니다.
----
I paint objects as I think them, not as I see them.
atie's minipage
답변 감사드립니다.오늘에서야 답변을 보게 되었네요.[quote
답변 감사드립니다.
오늘에서야 답변을 보게 되었네요.
man과 data의 관계는 거의 같은 사람의 속성을 표현것이라고 생각하시면 되는데 단지 자료전송등의 이유로 int를 char 배열로 바꾼거라 생각 하시면 되는데요
위의 말씀은 convert class를 만들어서 그쪽에서 구현해야 맞다는 말씀 같은데요. 그럼 아래
atie님 글처름 convert class가 Data class와 Man class를 모두 알아야 하는 단점이 있지 않나요?
이말씀은 Data class에 속성을 알려주는 get함수가 있어야 한다는 말씀이신가요?
Man class에서는 set 함수가 있어야 한다는 말씀이신거 맞는거지요?
그리고 마지막으로
만약 Data class와 Man class가
Data --> Man
Man --> Data
로 둘다 변환이 필요하다면 어떻게 하는것이 나을까요?
convert class, 혹은 Data.convert, Man.convert를 구현하는것이 나을까요?
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
[quote="fehead"][quote="atie"]제 생각에는 클래스
Data 클래스에 get 메쏘드가 있어야 하고,
Man 클래스에는 set 메쏘드가 필요없다는 말입니다.
가져오는 쪽(클래스)에 변환 함수가 선언되어 있으므로 가져오는 쪽에서는 set 메쏘드 없이 작업할 수 있습니다.
1.
man.import(), data.import()를 구현할 경우에는 양쪽 클래스에 get 메쏘드가 있어야 합니다.
Convert 클래스를 구현할 경우에는 양쪽 클래스에 get/set 메쏘드 모두가 있어야 합니다.
2.
man.import(), data.import()를 구현할 경우에는 두 클래스를 항상 함께 사용하게 됩니다.
Convert 클래스를 구현할 경우에는 Man 클래스와 Data 클래스를 독립적으로 사용할 수 있게 됩니다.
이 정도 장단점이 있는 것 같습니다.
답변 감사드립니다.^^장단점이 존재 하는군요.보통 한번만
답변 감사드립니다.^^
장단점이 존재 하는군요.
보통 한번만 필요하므로 Man.import 함수로 구현하는것이 저한테는 맞을것 같군요^6
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
댓글 달기