:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/02/19 14:17
C#은 모르지만 두 번째 질문은 OOP의 기본 원리입니다. OOP의 목표가 재사용성의 강화인 것은 아실꺼고, 그러면 클래스를 재사용한다는 것도 아실겁니다. 클래스를 상속한 서브 클래스들은 수퍼 클래스의 멤버 변수들(데이터 필드라고 쓰신 것)과 함수들을 사용할 수 있는데, 속성에 따라서 private으로 해놓은 값은 직접 사용할 수가 없습니다. 그래서 public인 get, set 함수를 통해 설정을 하게 되는데, 그러면 여기서 다시 말씀하신 원래 질문으로 돌아가게 됩니다. 어차피 public method를 통해서 쓸 수 있는데 뭐하러 멤버 변수들은 private으로 해 놓는가?
그것은 상속을 해서 서브클래스를 만들고 사용하다 보면 아시게 됩니다 ^^;;; 상속에 대해서 어느 정도 아시는지 몰라 딱 끊어서 설명하기는 힘든데, 일단 하나의 클래스만 가지고 할 때는 솔직히 별 차이 없지만, 상속을 해서 사용하다 보면 차이가 생기게 된다고 말씀드리고 싶네요. 사실 절차적인 인간이라 절차적인 프로그래밍만 해서 OOP는 잘 모르기도 하니... 저보다 더 잘 아시는 분이 설명해주시길 바라고 저는 이만...
10/02/19 14:21
첫번째껀
글쎄요;;; 저도 궁금한 부분이군요 이건;;; 그냥 '약속' 아닐까요. 헝가리안 표기법 처럼요. get,set순서 바꿔서 한번해보세요. 두번째껀 음;;; 이건 c#의 문제가 아니라 객체지향의 문제입니다. 객체 지향 자체가 데이터에 대한 직접 제안을 막고 있거든요. 왜 막느냐고 하면 딱히 보안을 위해서라고 생각하시면 될껍니다,,,, 예를들어. ab와 av라는 메소드가 있는데 둘다 퍼블릭으로 선언해놨다면 ab를 잘못쳐서 av를 접근하게 되고 이럴경우 하드디스크의 av자료가 다 날아간다고 치자구요. 특수알고리즘님 입장에선 끔찍한 일일 겁니다. 때문에 사용자의 직접제한을 막고 절차 절차를 거쳐서 접근하게 됩니다. 이게 객체의 특징입니다. 뭐 캡슐,은닉 등등 객체라는 입장에서 조금 생각해보시면 될겁니다.
10/02/19 14:37
첫번째는... get은 필요하지만 set은 필요없는 경우는 많아도, get이 필요없고, set만 필요한 경우는 거의 없지요.
그렇기때문에 get을 우선순위로 두는게 일반적입니다. 두번째도 비슷한 맥락인데요, 만약에 어떤 데이터필드를... 다른 private 메소드에서 변경시키고, 외부에서는 읽기만 하고 싶다면, set 메소드를 구현하지 않으면 그만입니다. 생각보다 그런 식으로 사용하는 경우가 많다고 알아두시면 됩니다.
10/02/19 14:42
Je ne sais quoi님// WizardMo진종님// DomDom님// AhnGoon님// 감사합니다. 정말 도움이많이되었습니다. 그것도 이렇게 빠른시간에 ㅠ_ㅠ 정말 감사합니다.
첫번쨰 두번째 이제 잘이해가되네영^^ 감사
|