취업,면접 대비/cs 전공 공부

<cs 지식> AccessControl, private vs public, private vs file private

studying develop 2020. 10. 6. 02:08

음 이걸 한두번 본 개념도 아니고, 자주 쓰는 개념인데 막상 둘을 정확히 구분하려니까 잘 안된다. private는 그냥 느낌에 외부에서 쓰지 말아라... public은 외부에서 써도 된다... 정도로 느낌이 와닿아서, 그 이상으로 정확한 개념을 알려고 써본다.

 

[baked-corn.tistory.com/80], [zeddios.tistory.com/383] 일단 이런 글도 있다.

 

위 블로그에서 본 이게 제일 와닿고 간단한 요약 정리 같다.

 

https://baked-corn.tistory.com/80

 

이건 애플 공식 문서

 

  • Open access and public access enable entities to be used within any source file from their defining module, and also in a source file from another module that imports the defining module. You typically use open or public access when specifying the public interface to a framework. The difference between open and public access is described below.
    • 오픈, 퍼블릭 어세스는 해당 개체가 정의된 소스 파일이나 심지어 해당 개체를 임포트 하는 다른 외부 소스 파일에서도 해당 개체를 사용할 수 있도록 한다. 우리는 프레임워크에 퍼블릭 인터페이스를 특정할때 주로 오픈,퍼블릭 어세스를 사용한다. 둘의 차이는 공식 문서에서 자세히 설명되어있음.(난 나중에 볼듯..)
  • Internal access enables entities to be used within any source file from their defining module, but not in any source file outside of that module. You typically use internal access when defining an app’s or a framework’s internal structure.
    • 인터널 어세스는 개체를 정의하는 모듈의 아무 소스 파일에서나 사용할수 있다. 하지만 모듈 밖의 아무 소스파일은 아니다. 우리는 앱 또는 프레임 워크의 내부 구조를 정의할때 인터널 어세스를 사용한다. (음 내가 근데 프레임 워크 개념은 그래도 추상적으로 뭔지 알겠는데,,, 이것도 정확히 기술적으로 설명은 못할듯ㅠㅠ, 근데 모듈은 어떤걸로 이해해야 하지. 프레임 워크는 그냥 xcode에서 좌측에 폴더 상위에 프레임워크 단위로 나뉘어져 있던데)
  • File-private access restricts the use of an entity to its own defining source file. Use file-private access to hide the implementation details of a specific piece of functionality when those details are used within an entire file.
    • 파일프라이빗 러세스는 개체의 사용을 자신을 정의한 파일 내에서 만으로 제한한다. 파일프라이빗 어세스를 이용해 특정? 기능에 대한 구현을 숨긴다.
  • Private access restricts the use of an entity to the enclosing declaration, and to extensions of that declaration that are in the same file. Use private access to hide the implementation details of a specific piece of functionality when those details are used only within a single declaration.
    • 프라이빗 어세스는 enclosing declaration(블록인듯)에서만 개체를 사용할 수 있도록 한다. 그리고 동일한 파일내에 있는 declaration의 개체의 정의의 extension(??)에서도 사용할 수 있다.(뭔소리지? extensions of that declaration??). 기능에 대한 디테일들이 단일 정의 내에서만 사용되는(??이건또 뭔소리지 single declaration?)  특정 기능에 대한 구현을 숨길때 사용해라....

 

 

번역해볼랬는데, 못알아 듣겠는 부분이 두군에 있어서 아쉽지만 enclosing declaration이 블록이란걸 동권님 블로그를 통해 알수있었다. ㅎㅎ

 


 

single declaration은 찾아보니까 한줄로 정의하는 방식같다.

[www.geeksforgeeks.org/go-variables/] 보고 추론한거라 확실치는 않음; 근데 갖다 끼워보면 이 의미 아닌거같은데 ㅋㅋ;

 


zedd님의 번역이다.

 

 private접근은 엔티티의 사용을  enclosing 선언과 동일한 파일에 있는 해당 선언의 extension으로 제한합니다. private접근을 사용하면 단일 정의 내에서만 사용되는 특정 기능 조각의 구현 상세 내역을 숨길 수 있습니다.

출처: https://zeddios.tistory.com/383 [ZeddiOS]

 

음 단일 정의가 그냥 한곳에서 정의된거라고 본다면... 뭐 음 해당 블록내에서 단일로 정의되고 거기서만 사용되니까 그런 의미일지도? multiple declaration을 찾아봐도 아래라는데... 

 

single declaration은 그냥 한번에 한줄로 정의한다는 의미 같고...? multiple은 복수개를 동시에 정의한다는 의미같은데 ㅋㅋ; 용어를 stackoverflow에 물어보고 싶지만 포인트 안되서 못물어본다.... 다른데 물어보고 알게되면 다시 적겠다...

 

https://www.studytonight.com/cpp/variables-scope-details.php

 

 

Use private access to hide the implementation details of a specific piece of functionality when those details are used only within a single declaration.