세상에 이상을 더하다.

지금, Rooti와 함께라면.

Rooti는 상상을 만드는 공방입니다.

Lecture/Java

은밀하게.. 정보 은닉과 접근 제어자

nanun_u.l_0 2023. 1. 25. 18:36
왜 필요한가?

 

학생의 신분으로 뭘 알겠나? 솔직히 필자도 정보 은닉의 중요성을 하나도

알지 못한다. 그러나 너무나 당연한 건 게임, 애플리케이션등과 같은 프로그램들

그리고 여러 사이트들은 보안이 중요하다는 것이다. 메모리에 올라가 있는 여러

변수들이 외부에서 너무나도 쉽게 읽히고 바뀐다면 많은 문제가 생기는 게 당연하다.

물론 어떻게 다른 변수에 접근하는지 그 방법은 나도 아직 잘 모르지만, 안전하게 

보안을 철저히 해 두는것이 좋지 않은가...

 

접근 제어자

 

자바에는 크게 세 개의 접근제어자로 나눌 수 있고 아무런 제어자를 안 적을 수도 있다.

 

접근 제어자 설명
public 외부 클래스 어디에서나 접근 가능
protected 같은 패키지 내부와 상속 관계의 클래스에서만 접근 가능,
그 외 클래스에서는 접근 불가
아무것도 안적음! default로 같은 패키지 내부에서만 접근 가능
private 같은 클래스 내부에서'만' 접근 가능

 

Get( ), Set( ) 메서드

 

각 변수들 각자의 은닉성이 보장되어야 하니 그들에 접근할 수 있는 다른 방법이 필요했다.

Get( ) 그리고 Set( ) 함수들은 그 이름에서 알 수 있듯이 변수 값을 반환해 주는 Get 메서드

그리고 변수 값을 지정하는 Set( ) 함수로 접근이 가능하도록 한다.

메서드 자체의 은닉성은 보장되지 않아도 되는건가? 나도 잘 모르겠다 히히.

 

게임개발 시 주의할 점 ( 유니티 C# )

 

게임개발을 하며 스크립트를 작성할때 변수 혹은 메서드의 접근 제어자를 결정할 때

잘 생각해야 하는 것이 만약 private으로 선언해 버리면 외부 클래스에서 접근이 불가능해

오브젝트 사이의 상호작용이 어려워질 수 있다.

그런데, [SerializeField]를 활용하면 유니티에서 private으로 선언된 변수를 스크립트상에서는

접근이 불가능하지만 UnityEditor상에서는 접근이 가능하도록 할 수 있다.

이는 직렬화를 통해서 private 영역을 유니티가 UnityEditor에서는 보일 수 있도록 하는 것이다.

반응형