정보 은닉
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
정보 은닉은 소프트웨어 설계 원칙으로, 모듈의 내부 구현 세부 사항을 숨기고 외부에서 접근할 수 있는 인터페이스를 제공하여 시스템의 유연성, 유지 보수성, 재사용성을 높이는 것을 목표로 한다. 1972년 데이비드 파르나스에 의해 처음 개념이 설명되었으며, 캡슐화와 밀접한 관련이 있다. 캡슐화는 정보 은닉을 실현하는 기술 중 하나로, 객체 지향 프로그래밍, 데이터베이스, 자동차 설계 등 다양한 분야에서 적용된다. 정보 은닉은 소프트웨어 개발 위험을 줄이고 시스템 복잡성을 감소시키며, 변경에 유연하게 대응할 수 있도록 돕는다.
더 읽어볼만한 페이지
- 프로그래밍 원칙 - 블랙박스
블랙 박스는 자극 입력과 출력 반응의 관점에서 시스템을 추상화하여 외부적으로 관찰하는 이론으로, 전자 회로 이론, 사이버네틱스, 시스템 이론 등 다양한 분야에서 활용되며 예측 모델 구축 및 유효성 검증, 그리고 항공기 비행 기록 장치나 함수 교육 도구 등 실생활에도 응용된다. - 프로그래밍 원칙 - 개방-폐쇄 원칙
개방-폐쇄 원칙은 소프트웨어 공학에서 모듈의 확장은 용이하게 하고 수정은 최소화하여 코드 변경의 파급 효과를 줄이는 설계 원칙으로, 확장에 개방, 수정에 폐쇄라는 두 속성을 가지며 객체 지향 프로그래밍의 중요 원칙으로 여겨진다. - 객체 지향 프로그래밍 - Is-a
Is-a 관계는 객체 지향 프로그래밍에서 한 유형이 다른 유형의 하위 유형임을 나타내는 관계로, 상속, 서브타이핑, 리스코프 치환 원칙과 관련되며, C++, Python, Java 등에서 표현된다. - 객체 지향 프로그래밍 - 객체 (컴퓨터 과학)
객체는 객체 지향 프로그래밍에서 데이터와 조작을 묶어 메시지를 수신하고, 프로그램의 개념을 표현하며 가시성과 재사용성을 높이는 실체이다.
정보 은닉 |
---|
2. 역사
정보 은닉 개념은 1972년 데이비드 파르나스가 처음 제시했다.[3][4] 그 이전에도 모듈 프로그래밍은 여러 상업 사이트에서, 특히 I/O 서브 시스템 및 소프트웨어 라이브러리에서 사용되었지만, 정보 은닉이라는 용어가 사용되지는 않았다. 1970년 리처드 고티에와 스티븐 폰트는 ''시스템 프로그램 설계''에서 모듈성에 대해 논했지만, 정보 은닉이라는 용어를 사용하지는 않았다. 모듈 프로그래밍은 코드 재사용과 비슷한 이유로 사용되었다.
2. 1. 초기 개념
정보 은닉 개념은 1972년 데이비드 파르나스가 처음으로 제시했다.[3][4] 모듈 프로그래밍은 그 이전에도 여러 상업 사이트에서, 특히 I/O 서브 시스템 및 소프트웨어 라이브러리에서 사용되었지만, 정보 은닉이라는 용어가 사용되지는 않았다. 1970년 리처드 고티에와 스티븐 폰트는 ''시스템 프로그램 설계''에서 모듈성에 대해 논했지만, 정보 은닉이라는 용어를 사용하지는 않았다. 모듈 프로그래밍은 코드 재사용과 비슷한 이유로 사용되었다.2. 2. 모듈 프로그래밍과의 관계
데이비드 파르나스는 1972년에 정보 은닉 개념을 처음으로 설명했다.[3][4] 그 이전, 모듈 프로그래밍은 여러 상업 사이트에서, 특히 I/O 서브 시스템 및 소프트웨어 라이브러리에서 수년 동안 사용되었다. 1970년 리처드 고티에와 스티븐 폰트는 ''시스템 프로그램 설계''에서 모듈성에 대해 논의했지만, '정보 은닉'이라는 용어를 사용하지는 않았다. 그러나 코드 재사용뿐만 아니라 비슷한 이유로 사용되었다.3. 캡슐화와의 관계
캡슐화라는 용어는 정보 은닉과 같은 의미로 사용되기도 하지만, 둘 사이에는 차이점이 있다.[5] 정보 은닉은 원칙이고 캡슐화는 기술이라고 볼 수 있다. 소프트웨어 모듈은 정보를 모듈이나 인터페이스를 제공하는 다른 구성으로 캡슐화하여 정보를 숨긴다.[1]
그레이디 부치는 객체 지향 설계에 관한 저서에서 캡슐화를 "구조와 동작을 구성하는 추상화 요소들을 구획하는 과정; 캡슐화는 추상화의 계약 인터페이스와 구현을 분리하는 역할을 한다"라고 정의했다.[2]
이러한 의미에서 캡슐화는 객체 지향 프로그래밍에서 적용되는 방식보다 더 일반적이다. 예를 들어, 관계형 데이터베이스는 유일한 공용 인터페이스가 SQL과 같은 질의어라는 점에서 캡슐화되어 있다. 이 질의어를 통해 모든 내부 메커니즘과 데이터베이스 관리 시스템의 데이터 구조가 숨겨진다. 이처럼 캡슐화는 모든 세분화 수준에서 우수한 소프트웨어 아키텍처의 핵심 원칙이다.
인터페이스 뒤에 소프트웨어를 캡슐화하면 실제 세계 객체의 동작 및 상호 작용을 모방하는 객체를 구성할 수 있다. 예를 들어, 간단한 디지털 알람 시계는 일반인(비전문가)이 사용하고 이해할 수 있는 실제 객체이다. 일반인은 알람 시계가 무엇을 하는지, 시계 내부의 모든 부분을 이해할 필요 없이 제공된 인터페이스(버튼 및 화면)를 통해 어떻게 사용하는지 이해할 수 있다. 마찬가지로, 시계가 다른 모델로 교체되더라도 인터페이스가 동일하게 작동한다면 일반인은 동일한 방식으로 계속 사용할 수 있다.
객체 지향 프로그래밍 언어의 보다 구체적인 설정에서, 이 개념은 정보 은닉 메커니즘, 번들링 메커니즘 또는 이 둘의 조합을 의미한다. (자세한 내용은 캡슐화 (객체 지향 프로그래밍) 참조.)
3. 1. 정보 은닉: 원칙
캡슐화라는 용어는 정보 은닉과 같은 의미로 사용되기도 하지만, 둘 사이에는 차이점이 있다. 정보 은닉은 원칙이고 캡슐화는 기술이라고 볼 수 있다. 소프트웨어 모듈은 정보를 모듈이나 인터페이스를 제공하는 다른 구성 요소로 캡슐화하여 정보를 숨긴다.[5]정보 은닉의 일반적인 예시는 데이터의 물리적 저장 레이아웃을 숨기는 것이다. 이렇게 하면 데이터가 변경되어도 전체 프로그램 중 작은 부분만 변경하면 된다. 예를 들어, 3차원 점 (x, y, z)을 표현하기 위해 3개의 부동소수점 스칼라 변수를 사용하는 프로그램에서, 정보 은닉을 염두에 두고 설계된 모듈을 통해 표현이 크기가 3인 단일 배열 변수로 변경하여도 프로그램의 나머지 부분은 변경의 영향을 받지 않도록 보호 할 수 있다.
객체 지향 프로그래밍에서 정보 은닉(유형 중첩을 통한)은 불확실한 구현(설계 결정)에 대한 코드의 의존성을 잘 정의된 인터페이스로 전환하여 소프트웨어 개발 위험을 줄인다. 인터페이스를 사용하는 클라이언트는 인터페이스를 통해서만 작업을 수행하므로, 구현이 변경되더라도 클라이언트는 변경할 필요가 없다.
3. 2. 캡슐화: 기술
'캡슐화'라는 용어는 정보 은닉과 같은 의미로 사용되기도 하지만, 둘 사이에는 차이점이 있다. 정보 은닉은 원칙이고, 캡슐화는 그 원칙을 구현하는 기술이라고 볼 수 있다. 소프트웨어 모듈은 정보를 캡슐화하여 모듈이나 인터페이스를 제공하는 다른 구성 요소로부터 정보를 숨긴다.[5]정보 은닉의 일반적인 예시는 데이터의 물리적 저장 레이아웃을 숨기는 것이다. 이렇게 하면 데이터 레이아웃이 변경되어도 전체 프로그램 중 일부만 변경하면 된다. 예를 들어, 3차원 점 (x, y, z)을 표현하기 위해 3개의 부동 소수점 스칼라 변수를 사용하던 프로그램에서, 정보 은닉을 활용하여 크기가 3인 단일 배열 변수로 표현을 변경할 수 있다. 이렇게 하면 프로그램의 나머지 부분은 변경의 영향을 받지 않도록 보호된다.
객체 지향 프로그래밍에서 정보 은닉은 불확실한 구현(설계 결정)에 대한 코드의 의존성을 잘 정의된 인터페이스로 전환하여 소프트웨어 개발 위험을 줄인다. 인터페이스를 사용하는 클라이언트는 인터페이스를 통해서만 작업을 수행하므로, 구현이 변경되어도 클라이언트는 변경할 필요가 없다.[1]
3. 3. 객체 지향 프로그래밍에서의 캡슐화
객체 지향 프로그래밍에서 정보 은닉은 불확실한 구현(설계 결정)에 대한 코드의 의존성을 잘 정의된 인터페이스로 전환하여 소프트웨어 개발 위험을 줄인다.[1] 인터페이스를 이용하는 개발자는 인터페이스를 통해서만 작업을 수행하므로 구현이 변경되더라도 개발자가 수정할 필요가 없다.그레이디 부치는 객체 지향 설계에 관한 저서에서 캡슐화를 "구조와 동작을 구성하는 추상화 요소들을 구획하는 과정; 캡슐화는 추상화의 계약 인터페이스와 구현을 분리하는 역할을 한다"라고 정의했다.[2]
캡슐화의 목적은 변화의 가능성을 달성하는 것이다. 즉, 구성 요소의 내부 메커니즘은 다른 구성 요소에 영향을 미치지 않고 개선될 수 있으며, 동일한 공용 인터페이스를 지원하는 다른 구성 요소로 대체될 수도 있다. 캡슐화는 또한 사용자가 구성 요소의 내부 데이터를 유효하지 않거나 일관성이 없는 상태로 설정하는 것을 방지함으로써 구성 요소의 무결성을 보호한다. 캡슐화의 또 다른 장점은 소프트웨어 구성 요소 간의 상호 의존성을 제한하여 시스템 복잡성을 줄이고, 따라서 견고성을 높인다는 것이다.[2]
4. 정보 은닉의 이점
객체 지향 프로그래밍에서 정보 은닉은 불확실한 구현(설계 결정)에 대한 코드의 의존성을 잘 정의된 인터페이스로 전환하여 소프트웨어 개발 위험을 줄인다.[5] 인터페이스를 사용하는 클라이언트는 인터페이스를 통해서만 작업을 수행하므로 구현이 변경되더라도 클라이언트는 변경할 필요가 없다.
정보 은닉은 데이터의 물리적 저장 레이아웃을 숨겨 데이터가 변경될 경우 변경 사항이 전체 프로그램의 작은 하위 집합으로 제한되도록 한다. 예를 들어, 3차원 점 (x, y, z)을 표현하기 위해 세 개의 부동 소수점 스칼라 변수를 사용하다가, 크기가 3인 단일 배열 변수로 표현을 변경하는 경우, 정보 은닉을 고려하여 설계된 모듈은 프로그램의 나머지 부분을 이러한 변경으로부터 보호한다.
그레이디 부치는 객체 지향 설계에 관한 저서에서 캡슐화의 목적을 변화 가능성 달성이라고 정의했다.[2] 즉, 구성 요소의 내부 메커니즘은 다른 구성 요소에 영향을 미치지 않고 개선될 수 있으며, 동일한 공용 인터페이스를 지원하는 다른 구성 요소로 대체될 수도 있다.
4. 1. 유지보수성 향상
객체 지향 프로그래밍에서 정보 은닉은 불확실한 구현(설계 결정)에 대한 코드의 의존성을 잘 정의된 인터페이스로 전환하여 소프트웨어 개발 위험을 줄인다.[5] 인터페이스를 사용하는 클라이언트는 인터페이스를 통해서만 작업을 수행하므로, 구현이 변경되더라도 클라이언트는 변경할 필요가 없다.[1]정보 은닉은 장비, 소프트웨어, 하드웨어의 모든 부분을 기능 모듈로 나누는 효과적인 기준이 된다. 예를 들어 자동차는 복잡한 장비인데, 자동차 설계, 제조, 유지보수를 쉽게 만들기 위해 복잡한 장비는 설계 결정을 숨기는 특정 인터페이스를 가진 모듈로 나뉜다. 이러한 방식으로 자동차를 설계함으로써, 자동차 제조업체는 경제적으로 제조할 수 있는 차량을 유지하면서 다양한 옵션을 제공할 수 있다.
자동차 제조업체는 고급형 버전과 일반형 버전을 가질 수 있다. 고급형 버전은 일반형 버전보다 더 강력한 엔진이 장착되어 있는데, 각각 다른 엔진을 설계하는 엔지니어는 두 엔진 모두에 동일한 인터페이스를 제공한다. 두 엔진 모두 두 버전에서 동일한 자동차의 엔진 베이에 들어가며, 동일한 변속기, 동일한 엔진 마운트 및 동일한 제어 장치에 맞는다. 엔진의 차이점은 더 강력한 고급형 버전이 더 큰 배기량을 가지고 있으며, 더 큰 배기량 엔진에 필요한 연료-공기 혼합물을 제공하도록 프로그래밍된 연료 분사 시스템이 있다는 것이다.
더 강력한 엔진 외에도, 고급형 버전은 CD 플레이어가 있는 더 좋은 라디오, 더 편안한 좌석, 더 넓은 타이어를 가진 더 좋은 서스펜션 시스템 및 다른 페인트 색상과 같은 다른 옵션을 제공할 수도 있다. 이러한 모든 변경 사항에도 일반형 버전과 고급형 버전 사이의 자동차 대부분은 동일하다. CD 플레이어가 있는 라디오는 고급형 모델의 표준 라디오(역시 모듈)를 대체하는 모듈이며, 더 편안한 좌석은 표준 좌석과 동일한 좌석 마운트에 설치된다. 좌석이 가죽인지 플라스틱인지, 허리 지지대를 제공하는지 여부는 중요하지 않다.
엔지니어는 작업을 팀에 할당된 작업 조각으로 나누어 자동차를 설계한다. 각 팀은 특정 표준 또는 인터페이스에 따라 자체 구성 요소를 설계하여 구성 요소 설계의 유연성을 확보하는 동시에 모든 구성 요소가 함께 작동하도록 보장한다.
자동차 제조업체는 부분적으로 비용 절감 조치로 여러 다른 모델에 동일한 핵심 구조를 사용한다. 이러한 "플랫폼"은 정보 은닉의 또 다른 예시를 제공하는데, 바닥 설계를 세단에 사용할지 해치백에 사용할지 알지 못하더라도 바닥 설계를 구축할 수 있기 때문이다.
이 예에서 볼 수 있듯이, 정보 은닉은 유연성을 제공한다. 이러한 유연성을 통해 프로그래머는 사용자의 요구에 더 잘 맞도록 컴퓨터 프로그램을 변경하는 동안 일반적인 진화 과정에서 컴퓨터 프로그램의 기능을 수정할 수 있다. 컴퓨터 프로그램이 잘 설계되어 정보 은닉의 원칙을 사용하여 소스 코드 솔루션을 모듈로 분해하면, 일반적으로 변경 사항이 전역적 변화가 아닌 지역적 변화이므로 진화적 변화가 훨씬 쉬워진다.
자동차는 운전자와 상호 작용하는 방식에서도 정보은닉의 또 다른 예를 제공한다. 자동차는 사람들이 훈련을 받고 면허를 받는 표준 인터페이스(페달, 핸들, 변속기, 신호, 게이지 등)를 제공한다. 따라서 사람들은 자동차 운전만 배우면 되고, 새로운 모델을 운전할 때마다 완전히 다른 운전 방식을 배울 필요가 없다.
4. 2. 시스템 복잡성 감소
객체 지향 프로그래밍에서 정보 은닉은 불확실한 구현(설계 결정)에 대한 코드의 의존성을 잘 정의된 인터페이스로 전환하여 소프트웨어 개발 위험을 줄인다.[1] 인터페이스를 사용하는 클라이언트는 인터페이스를 통해서만 작업을 수행하므로, 구현이 변경되더라도 클라이언트는 변경할 필요가 없다.캡슐화는 소프트웨어 구성 요소 간의 상호 의존성을 제한하여 시스템 복잡성을 줄이는 장점이 있다.[2] 이는 시스템의 견고성을 높이는 데 기여한다.
4. 3. 재사용성 증대
객체 지향 프로그래밍에서 정보 은닉은 불확실한 구현(설계 결정)에 대한 코드의 의존성을 잘 정의된 인터페이스로 전환하여 소프트웨어 개발 위험을 줄인다. 인터페이스를 사용하는 클라이언트는 인터페이스를 통해서만 작업을 수행하므로, 구현이 변경되더라도 클라이언트는 변경할 필요가 없다.[5] 이는 모듈의 독립성을 높여 재사용성을 향상시킨다.4. 4. 유연성 확보
객체 지향 프로그래밍에서 정보 은닉은 불확실한 구현(설계 결정)에 대한 코드의 의존성을 잘 정의된 인터페이스로 전환하여 소프트웨어 개발 위험을 줄인다. 인터페이스를 사용하는 클라이언트는 인터페이스를 통해서만 작업을 수행하므로 구현이 변경되더라도 클라이언트는 변경할 필요가 없다.[5]정보 은닉은 장비, 소프트웨어 또는 하드웨어의 모든 부분을 기능 모듈로 나누는 효과적인 기준이 된다. 예를 들어, 자동차는 복잡한 장비인데, 자동차의 설계, 제조 및 유지 관리를 합리적으로 만들기 위해, 복잡한 장비는 설계 결정을 숨기는 특정 인터페이스를 가진 모듈로 나뉜다. 이러한 방식으로 자동차를 설계함으로써, 자동차 제조업체는 경제적으로 제조할 수 있는 차량을 유지하면서 다양한 옵션을 제공할 수 있다.
자동차 제조업체는 부분적으로 비용 절감 조치로 여러 다른 모델에 동일한 핵심 구조를 자주 사용한다. 이러한 "플랫폼"은 정보 은닉의 또 다른 예시를 제공하는데, 바닥 설계를 세단에 사용할지 해치백에 사용할지 알지 못하더라도 바닥 설계를 구축할 수 있기 때문이다.
이 예에서 볼 수 있듯이, 정보 은닉은 유연성을 제공한다. 이러한 유연성을 통해 프로그래머는 사용자의 요구에 더 잘 맞도록 컴퓨터 프로그램을 변경하는 동안 일반적인 진화 과정에서 컴퓨터 프로그램의 기능을 수정할 수 있다. 컴퓨터 프로그램이 잘 설계되어 정보 은닉의 원칙을 사용하여 소스 코드 솔루션을 모듈로 분해하면, 일반적으로 변경 사항이 전역적 변화가 아닌 지역적 변화이므로 진화적 변화가 훨씬 쉬워진다.
자동차는 운전자와 상호 작용하는 방식에서도 정보은닉의 또 다른 예를 제공한다. 자동차는 사람들이 훈련을 받고 면허를 받는 표준 인터페이스(페달, 핸들, 변속기, 신호, 게이지 등)를 제공한다. 따라서 사람들은 자동차 운전만 배우면 되고, 새로운 모델을 운전할 때마다 완전히 다른 운전 방식을 배울 필요가 없다.[1]
5. 정보 은닉의 실제 적용 사례
정보 은닉은 소프트웨어 개발뿐만 아니라 다양한 분야에서 활용되는 중요한 원칙이다.
자동차는 운전자에게 표준화된 인터페이스(페달, 핸들, 변속기 등)를 제공하여 운전 방법을 배운 사람은 누구나 쉽게 다른 모델의 자동차를 운전할 수 있도록 한다. 이는 자동차 내부의 복잡한 작동 방식을 숨기고, 운전자에게는 필수적인 조작 방법만을 제공함으로써 가능해진다.[5]
정보 은닉은 프로그래머가 사용자의 요구에 더 잘 맞도록 컴퓨터 프로그램을 변경하는 동안 일반적인 진화 과정에서 컴퓨터 프로그램의 기능을 수정할 수 있도록 유연성을 제공한다. 컴퓨터 프로그램이 정보 은닉의 원칙을 사용하여 소스 코드를 모듈로 분해하면, 변경 사항이 전역적 변화가 아닌 지역적 변화이므로 수정이 더 쉬워진다.[5]
5. 1. 자동차 설계
자동차는 복잡한 장비이지만, 설계, 제조, 유지 관리를 쉽게 하기 위해 기능 모듈로 나뉜다. 자동차 제조업체는 설계 결정을 숨기는 특정 인터페이스를 가진 모듈로 나누어 자동차를 설계함으로써, 다양한 옵션을 제공하면서도 경제적으로 차량을 제조할 수 있다.[5]예를 들어, 자동차 제조업체는 표준 모델과 고급 모델을 만들 수 있다. 고급 모델은 더 강력한 엔진을 장착할 수 있지만, 두 모델의 엔진은 모두 동일한 인터페이스를 제공하도록 설계된다. 즉, 두 엔진 모두 동일한 자동차의 엔진 베이에 맞고, 동일한 변속기, 엔진 마운트, 제어 장치에 적합하다. 엔진의 차이점은 더 큰 배기량과 연료 분사 시스템의 차이 정도이다.[5]
구분 | 표준 모델 | 고급 모델 |
---|---|---|
일반 엔진 | 더 강력한 엔진 (더 큰 배기량) | ||
일반 엔진에 맞게 프로그래밍됨 | 더 큰 배기량 엔진에 맞게 프로그래밍됨 | ||
기본 옵션 | CD 플레이어, 고급 라디오, 더 편안한 시트, 더 넓은 타이어, 특별한 페인트 색상 등 |
고급 모델은 더 강력한 엔진 외에도 CD 플레이어가 있는 더 좋은 라디오, 더 편안한 시트, 더 넓은 타이어를 가진 더 나은 서스펜션 시스템, 다른 페인트 색상과 같은 다양한 옵션을 제공할 수 있다. 이러한 변경 사항에도 불구하고, 표준 모델과 고급 모델의 자동차 대부분은 동일하게 유지된다. CD 플레이어가 있는 라디오는 표준 라디오(역시 모듈)를 대체하는 모듈이며, 더 편안한 시트는 표준 시트와 동일한 시트 마운트에 설치된다.[5]
엔지니어는 각 팀에게 특정 표준 또는 인터페이스에 따라 자체 구성 요소를 설계하도록 작업을 할당하여 구성 요소 설계의 유연성을 확보하는 동시에 모든 구성 요소가 함께 작동하도록 보장한다.[5]
자동차 제조업체는 비용 절감을 위해 여러 다른 모델에 동일한 핵심 구조("플랫폼")를 사용하기도 한다. 이는 바닥 설계를 세단에 사용할지 해치백에 사용할지 알지 못하더라도 바닥 설계를 구축할 수 있게 해주므로 정보 은닉의 또 다른 예시가 된다.[5]
5. 2. 소프트웨어 개발
객체 지향 프로그래밍에서 정보 은닉은 불확실한 구현(설계 결정)에 대한 코드의 의존성을 잘 정의된 인터페이스로 전환하여 소프트웨어 개발 위험을 줄인다.[1] 인터페이스를 사용하는 클라이언트는 인터페이스를 통해서만 작업을 수행하므로, 구현이 변경되더라도 클라이언트는 변경할 필요가 없다.예를 들어, 관계형 데이터베이스는 유일한 공용 인터페이스가 SQL과 같은 질의어이며, 모든 내부 메커니즘과 데이터베이스 관리 시스템의 데이터 구조를 숨긴다는 점에서 캡슐화되어 있다.[2]
정보 은닉의 일반적인 예시는 데이터의 물리적 저장 레이아웃을 숨기는 것이다. 이렇게 하면 레이아웃이 변경될 경우 변경 사항이 전체 프로그램의 작은 하위 집합으로 제한된다. 예를 들어, 3차원 점 (x, y, z)이 프로그램에서 세 개의 부동 소수점 스칼라 변수로 표현되고 나중에 표현이 크기가 3인 단일 배열 변수로 변경되는 경우, 정보 은닉을 염두에 두고 설계된 모듈은 프로그램의 나머지 부분을 이러한 변경으로부터 보호한다.[5]
6. 한국 정보통신(IT) 산업과 정보 은닉
한국 IT 산업에서 정보 은닉은 여러 분야에서 활용되고 있지만, 아직 해결해야 할 과제도 많다.
참조
[1]
웹사이트
Encapsulation is not information hiding
https://www.infoworl[...]
2001-05-18
[2]
서적
Object-Oriented Analysis and Design with Applications
Addison-Wesley
2007
[3]
논문
On the Criteria To Be Used in Decomposing Systems into Modules
1972
[4]
서적
Programming Language Pragmatics
https://www.cs.roche[...]
Morgan Kaufmann Publishers
[5]
웹인용
Encapsulation is not information hiding
https://www.infoworl[...]
2020-07-20
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com