본문 바로가기
[ Program ]/c#스터디

29.접근제한자, 네임스페이스 , 클래스

by 관이119 2021. 10. 9.

프로그램을 하면 혼자 다하는게 아니라 여러사람이 함께 하게 된다.

그런데 한명이 작업중에 다른사람이 같이 작업하는건 상당히 난감한일이 된다.

같은 부분을 어떤사람은 이렇게 만들고 다른사람은 다르게 만들수도있다.

그래서 함수만으로는 분업이 힘들거라 생각한 똑똑한 사람들이 그 윗단계로 나눌수 있는 덩어리들도 만들어뒀다.

그게 클래스이다.

자세한 내용은 나중에 다시 하고 함수처럼 특정행동을 할수 있는 더 큰 단위로 클래스가 있다 라고만 알고 넘어가자.

네임스페이스 역시 같은 의미이다.

네임스페이스는 자바에서는 패키지라고부르고 사용한다.

그림1

 

별로 어렵게 생각할거없이 그림1과 같은 구조이다.

주의 할점은 상위그룹내에 하위 그룹의 명칭은 유일해야한다는 것이다.

aa 라는 클래스가 있다면 그내부에 bb() 라는 함수가 두개 존재할수는 없다는 의미다. 

그림2

 

위와 같이 에러가나면서 컴파일이 되지않는다.

만약 이름이 testf2 나 이런식으로 다른이름으로 변경되면 사용할수 있다.

 

네임스페이스는 우리도 모르게 계속 쓰고있는데 소스가장윗부분을 보면 using System; 같은것이 여러개 있을것이다.

이내용이 해당 네임스페이스를 사용한다는 뜻이다.

사용한다는 말은 내가만들지 않았지만 using 으로 해당 네임스페이스 이름을 적어주면 네임스페이스 내에 있는 클래스,함수를 현재코딩하면서 가져다 쓸수있다는 의미이다.

docs.microsoft.com/ko-kr/dotnet/api/system?view=net-5.0

 

System 네임스페이스

일반적으로 사용되는 값과 참조 데이터 형식, 이벤트와 이벤트 처리기, 인터페이스, 특성, 예외 처리 등을 정의하는 핵심 클래스 및 기본 클래스가 포함되어 있습니다. Contains fundamental classes and b

docs.microsoft.com

위 경로에 들어가보면 클래스,구조체,인터페이스등 여러가지내용들이 나와있는데 저내용들이 모두 System 네임스페이스 내에 들어있는 내용들이다.

 

우리가 계속 사용하던 MessageBox.Show 를 통해서 좀더 확인해보자.

그림3

 

그림3과 같이 show 함수에서 마우스 우클릭후 정의로이동(F12) 를 해주면 그림4와 같은 화면이 나온다.

 

그림4

 

그림4에서 보면 우리가 사용하던 show 는 함수이고 MessageBox 는 클래스이고 System.Window.Forms 라는 네임스페이스내에 들어있다는것을 알수있다.

결국 MessageBox.Show 를 사용하기위해서는 using System.Window.Forms; 을 해줘야 사용할 수 있는데 다시 form1 코드로 돌아가서 위쪽부분을 보면 해당 using 코드가 있다는 것을 알 수 있다.

 

 

다음으로 앞장에서 무조건 public 이라고 쓰라고 한 접근제한자에 대해 알아보자.

www.csharpstudy.com/CSharp/CSharp-access-modifier.aspx

 

C# 접근 제한자 - C# 프로그래밍 배우기 (Learn C# Programming)

C# 접근 제한자 (Access Modifier) 접근 제한자는 외부로부터 타입(클래스, 구조체, 인터페이스, 델리게이트 등) 혹은 그 타입 멤버들(메서드, 속성, 이벤트, 필드 등)로의 접근을 제한할 때 사용하는

www.csharpstudy.com

잘이해는 안되겠지만 일단 위쪽 경로를 한번 읽어보자.

참고로 assembly 는 exe 파일마다 각각 다르다고 생각하면된다.

 

쉽게 생각하면 public - 전체공개 , private - 비공개 , protected -친구공개로 생각하면 되겠다.

현재는 테스트하는것들은 전부 public 으로 해주고 뒤에 클래스에서 다시 한번 확인해보자.

 

 

***숙제 :  접근제한자에대해 쉽게 설명되있는곳이 있는지 개별적으로 찾아보자

'[ Program ] > c#스터디' 카테고리의 다른 글

31.업데이트내역 프로그램만들기 / splite  (0) 2021.10.09
30.함수2  (0) 2021.10.09
28.함수1  (0) 2021.10.09
27.Object  (0) 2021.10.09
26.구구단출력기 만들기  (0) 2021.10.09

댓글