PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2010/02/19 14:09:58
Name 특수알고리즘
Subject C# 속성(Property) 질문입니다.
안녕하세요 존경하는 PGR님들 오늘 부산은 쌀쌀하네요. 모두 막바지 감기조심하시길~

C#에서 속성(Property)이라는 것을 배우고 있는데요.

첫번째. 왜 보통 일반적으로 get{} set{} 으로 get 읽기 매소드가 코드상 먼저 타이핑하는지 정말 궁금합니다.
제가 생각하기로 클래스 내에있는 접근제한된 데이터필드를 사용할때 읽기만할때도있지만 보통 대입시켜서 쓰고나서 읽자나요?
그러면 쓰고 읽기순서읜 set{} get{} 이 되야 되지않나요.. 왜 책이나..아니면 기타 다른소스들보면 전부 get set 순서로 하는지 이해가안되네요 물론 바꿔도 에러없이 잘돌아가구요.

두번째. 결국 클래스안의 데이터필드들은 속성을 사용하려면 public으로 한후 안에 정의해서 데이터를 수정 및 쓸수있게 만드는데
그럴빠에 왜 굳이 데이터들을 private해서 제한해놓는지 이해가 잘가지않습니다. 제한하는이유가 아무나 쉽게 접근또는 수정하는것을 막기위함인데 결국 속성을 통해 얼마든지 접근 또는 수정을 할수있게 만들거면서 ..차라리 첨부터 데이터필드 선언할때 public으로쓰고 속성은 선언 안하면 되지않느냐 이겁니다.

하하 완전 초보라 이런 질문 드리게되었습니다. 전 정말 이해가 안되거든요.. 것도 쓸데없는 기능이면 모르겠는데 속성이 꽤 중요한 역할도하고 효율적으로 쓰일수있다는말이 책에 적혀있길래..구체적으로 왜그런지 틀이안잡히는군요 도와주세요~

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
Je ne sais quoi
10/02/19 14:17
수정 아이콘
C#은 모르지만 두 번째 질문은 OOP의 기본 원리입니다. OOP의 목표가 재사용성의 강화인 것은 아실꺼고, 그러면 클래스를 재사용한다는 것도 아실겁니다. 클래스를 상속한 서브 클래스들은 수퍼 클래스의 멤버 변수들(데이터 필드라고 쓰신 것)과 함수들을 사용할 수 있는데, 속성에 따라서 private으로 해놓은 값은 직접 사용할 수가 없습니다. 그래서 public인 get, set 함수를 통해 설정을 하게 되는데, 그러면 여기서 다시 말씀하신 원래 질문으로 돌아가게 됩니다. 어차피 public method를 통해서 쓸 수 있는데 뭐하러 멤버 변수들은 private으로 해 놓는가?
그것은 상속을 해서 서브클래스를 만들고 사용하다 보면 아시게 됩니다 ^^;;; 상속에 대해서 어느 정도 아시는지 몰라 딱 끊어서 설명하기는 힘든데, 일단 하나의 클래스만 가지고 할 때는 솔직히 별 차이 없지만, 상속을 해서 사용하다 보면 차이가 생기게 된다고 말씀드리고 싶네요.
사실 절차적인 인간이라 절차적인 프로그래밍만 해서 OOP는 잘 모르기도 하니... 저보다 더 잘 아시는 분이 설명해주시길 바라고 저는 이만...
WizardMo진종
10/02/19 14:21
수정 아이콘
첫번째껀
글쎄요;;; 저도 궁금한 부분이군요 이건;;; 그냥 '약속' 아닐까요. 헝가리안 표기법 처럼요. get,set순서 바꿔서 한번해보세요.

두번째껀
음;;; 이건 c#의 문제가 아니라 객체지향의 문제입니다. 객체 지향 자체가 데이터에 대한 직접 제안을 막고 있거든요.
왜 막느냐고 하면 딱히 보안을 위해서라고 생각하시면 될껍니다,,,,

예를들어. ab와 av라는 메소드가 있는데 둘다 퍼블릭으로 선언해놨다면 ab를 잘못쳐서 av를 접근하게 되고 이럴경우 하드디스크의 av자료가 다 날아간다고 치자구요. 특수알고리즘님 입장에선 끔찍한 일일 겁니다. 때문에 사용자의 직접제한을 막고 절차 절차를 거쳐서 접근하게 됩니다. 이게 객체의 특징입니다. 뭐 캡슐,은닉 등등 객체라는 입장에서 조금 생각해보시면 될겁니다.
10/02/19 14:33
수정 아이콘
받아야(get) 저장(set)을..받은게 없는데 저장을 하기 힘들겠죠.
10/02/19 14:37
수정 아이콘
첫번째는... get은 필요하지만 set은 필요없는 경우는 많아도, get이 필요없고, set만 필요한 경우는 거의 없지요.
그렇기때문에 get을 우선순위로 두는게 일반적입니다.

두번째도 비슷한 맥락인데요, 만약에 어떤 데이터필드를... 다른 private 메소드에서 변경시키고, 외부에서는 읽기만 하고 싶다면,
set 메소드를 구현하지 않으면 그만입니다. 생각보다 그런 식으로 사용하는 경우가 많다고 알아두시면 됩니다.
특수알고리즘
10/02/19 14:42
수정 아이콘
Je ne sais quoi님// WizardMo진종님// DomDom님// AhnGoon님// 감사합니다. 정말 도움이많이되었습니다. 그것도 이렇게 빠른시간에 ㅠ_ㅠ 정말 감사합니다.
첫번쨰 두번째 이제 잘이해가되네영^^ 감사
arq.Gstar
10/02/19 18:38
수정 아이콘
DomDom님// set 이 private 으로 선언된 함수에 저장하는거 아닌가요..-_-;
10/02/19 20:39
수정 아이콘
get, set 부분은 OOP 의 개념을 배우셔야 할 듯 하네요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
74658 츄리닝을 샀습니다 [5] 오즈의맙소사3022 10/02/19 3022
74657 똑딱이 디카 추천 부탁드립니다. [3] lotte_giants2124 10/02/19 2124
74656 pmp와 전자사전 질문드립니다. [4] 따듯한담요2068 10/02/19 2068
74655 여자분들은 남자를 볼떄 어디부터 보시나요? [32] 아하아2885 10/02/19 2885
74654 공유기 질문입니다. [5] 다음1540 10/02/19 1540
74653 쉬운 재료공학 문제 해답좀 알려주세요 ㅠㅠ [6] 탈퇴한 회원2932 10/02/19 2932
74651 스타2 관련 질문입니다. [6] 2ndEpi.2138 10/02/19 2138
74649 담주부터 초중학생 영어 과외를 하는데.. [10] 졸린쿠키1849 10/02/19 1849
74648 일본에 꽃다발이랑 케익 보내는 방법이 있을까요? [4] 여자예비역1758 10/02/19 1758
74647 apm/eapm에 대해 질문 좀 드리겠습니다. [5] 카이레스2182 10/02/19 2182
74646 뒷페이지 혈액형글을 읽고 질문좀 드립니다. [13] 타이푼1839 10/02/19 1839
74645 C# 속성(Property) 질문입니다. [7] 특수알고리즘2387 10/02/19 2387
74644 폭행 합의 질문 드립니다 [1] 프린스2134 10/02/19 2134
74643 아이폰 이어폰도 AS가 가능한가요? [4] DEICIDE3213 10/02/19 3213
74642 노트북, 유무선 공유기, 아이폰 종합 질문드립니다. [4] 3해처리땡초글1869 10/02/19 1869
74641 컴퓨터 잘아시는 분들!! 그래픽카드좀 추천해주세요~ [8] 나부랭님1511 10/02/19 1511
74640 술 빠르게 깨는 약 추천 부탁드립니다. [23] 테란완전정복2879 10/02/19 2879
74639 pgr사이트 오류 질문입니다. [7] 낼름낼름1953 10/02/19 1953
74638 광랜 인터넷 다운로드 속도 질문입니다.원래 이렇게 느린건가요? [6] 라푼젤4293 10/02/19 4293
74637 [여행] 정동진 처음 가보는데요.조언 부탁드려요. [7] Trader1930 10/02/19 1930
74636 데스크탑or노트북 [13] 박때근1906 10/02/19 1906
74635 ‘님비(NIMBY)’ 현상을 모르면 무식한건가요? [105] 굿바이레이캬3539 10/02/19 3539
74634 추발경기 정확히 룰이 어찌되나요?? [1] Naraboyz2103 10/02/19 2103
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로