C++에서 데이터 숨김이란 무엇입니까? 추상화 및 캡슐화 설명
게시 됨: 2021-05-24목차
데이터 은닉 소개
데이터는 프로그램에서 가장 민감하고 휘발성인 구성 요소로, 조작될 경우 잘못된 출력이 발생하고 데이터 무결성이 손상될 수 있습니다. 여기서 데이터 은닉이 필수적입니다. 기술 용어로 정보 은닉이라고도 하는 데이터 은닉은 최종 사용자로부터 내부 개체 세부 정보를 숨기는 고유한 개체 지향 프로그래밍 메커니즘(OOP)입니다.
데이터 은닉의 기본 목적은 무단 액세스로부터 클래스 내의 데이터를 숨기고 클래스 외부로부터의 불필요한 침투를 방지하는 것입니다. 데이터 은닉은 개체 무결성을 보장하고 해당 프로그램에 대한 의도하지 않거나 의도된 변경을 방지하기 위해 제한된 데이터 액세스를 보장합니다.
간단히 말해서 데이터 은닉은 프로그램 코드의 특정 부분을 가져와서 개체 구성원으로부터 차단합니다. 개체 구성원이 숨겨진 데이터에 액세스하려고 하면 프로그램에서 오류를 반환합니다. 이것은 프로그래머가 숨겨진 잘못된 데이터에 연결하지 않도록 하기 위해 도입된 경고 메커니즘입니다. 사용자 측에서 예측할 수 있는 필요가 없는 내부 구성 요소가 숨겨져 있는 경우가 많습니다.
데이터 은닉, 데이터 추상화 및 데이터 캡슐화
C++의 데이터 은닉은 다른 두 가지 OOP 속성인 추상화 및 캡슐화와 밀접하게 연관되어 있습니다.
데이터 추상화
데이터 추상화는 관련 프로그램 인터페이스만 최종 사용자에게 노출하고 더 복잡하고 복잡한 구현 세부 정보를 숨기는 메커니즘입니다. 더 나은 이해를 위해 실제 예를 살펴보겠습니다. 텔레비전을 고려하십시오. TV를 켜고 끄고, 채널을 변경하고, 볼륨을 조정하고, VCR, DVD 플레이어 및 스피커와 같은 외부 구성 요소를 추가할 수 있습니다. 그러나 당신은 텔레비전의 내부 메커니즘을 모릅니다.
신호를 수신하고, 변환하고, 최종적으로 출력을 표시하는 방법을 알지 못합니다. 따라서 텔레비전은 내부 구현과 외부 영향을 구분하는 적절한 예입니다. 데이터 추상화를 통해 클래스 구현은 부주의한 오류로부터 보호되고 사용자 수준 간섭 없이 변화하는 요구 사항 또는 버그 보고서에 응답하여 발전합니다.
데이터 캡슐화
데이터 캡슐화는 데이터 및 관련 기능을 클래스라는 단일 단위로 묶는 것을 말합니다. 즉, 객체 외부에서 보이지 않는 속성이 있고 이에 대한 읽기 또는 쓰기 액세스를 제공하는 메소드와 번들로 제공하면 섬세한 정보를 숨기고 사물의 내부 상태에 대한 액세스를 규제할 수 있습니다.
따라서 구현하는 방법에 따라 속성을 읽고 변경할 수 있는지 또는 읽기 전용인지 또는 전혀 표시되지 않는지 결정해야 하는 책임이 있습니다.
데이터 은닉과 데이터 캡슐화의 차이점
OOP를 논의할 때 데이터 은닉과 데이터 캡슐화는 종종 같은 의미로 사용되는데, 그 이유는 이 두 개념이 협력하여 민감한 정보의 공통 목적 보조 게이트키퍼를 달성하기 때문입니다. 데이터 캡슐화의 아이디어는 의심할 여지 없이 데이터 은닉과 기능적으로 비교되지만 서로 다른 수준에서 작동하기 때문에 구조적으로 다릅니다.
본질적으로 서로 관련되어 있지만 데이터 은닉과 데이터 캡슐화 사이에는 결정적인 차이가 있습니다.
- 데이터 은닉과 캡슐화의 주요 차이점은 전자는 프로그램의 데이터 보안 강화에 초점을 맞추고 후자는 프로그램의 복잡성을 숨기는 데 중점을 둡니다.
- 데이터 은닉은 클래스 내 개체 멤버의 액세스 가능성에 집중하는 반면 데이터 캡슐화는 데이터에 액세스하는 방법과 다양한 개체가 동작하는 방법에 중점을 둡니다. 캡슐화는 주로 정보 은닉이 아닌 정보 은닉을 통해 이루어집니다. 이것은 프로그래머가 개체 멤버의 구조를 숨기고 모든 메서드의 구현을 숨긴다는 것을 의미합니다.
- 데이터 은닉이 데이터 보안을 보장하기 위해 프로그램에서 데이터 사용을 제한하는 데 중점을 두는 반면, 데이터 캡슐화는 복잡한 데이터를 래핑(또는 캡슐화)하여 사용자에게 더 간단한 보기를 제공하는 데 중점을 둡니다.
- 데이터 은닉에서 데이터는 전용으로 정의되어야 합니다. 데이터 캡슐화에서 데이터는 공개 또는 비공개일 수 있습니다.
- 데이터 은닉은 그 자체로 프로세스이자 기술인 반면, 데이터 캡슐화는 데이터 은닉의 하위 프로세스입니다.
액세스 지정자
C++는 데이터 은닉을 지원하며, 확장하여 클래스라고 하는 사용자 정의 유형 생성을 통해 데이터 추상화 및 데이터 캡슐화를 지원합니다. 이 생성된 클래스의 멤버 범위는 액세스 지정자로 알려진 키워드로 정의됩니다. 일반적으로 클래스의 캡슐화 기능을 구축하는 데 사용되는 private, protected 및 public의 세 가지 유형의 보호 또는 액세스 지정자를 범주 내에서 사용할 수 있습니다.
액세스 지정자는 클래스 외부에서 유형의 변수 및 함수에 액세스하는 방법을 정의하는 데 도움이 됩니다. 일반적으로 클래스 내의 데이터는 우발적인 조작 인스턴스를 제거하기 위해 비공개이며 해당 작업은 공개됩니다. 그러나 등급 내 접근성에는 제한이 없습니다.
개인 변수/함수: 클래스의 일부로 정의된 멤버만 액세스할 수 있습니다.
공용 변수/함수: 프로그램의 어디에서나 액세스할 수 있습니다.
보호된 변수/함수 는 클래스 내에서 비공개이며 파생 클래스에서 원격 액세스에만 사용할 수 있습니다.
데이터 은닉의 적용
데이터 은닉을 더 잘 이해하기 위해 다음 예를 살펴보겠습니다. 당신이 프로그래머라고 가정하고, 'CheckAccount'라는 이름으로 클래스를 선언했다고 가정하고, 여기서 사용자의 은행 계좌 잔고를 나타내는 'Balance'라는 용어로 데이터 멤버를 정의했습니다.
이 특정 예에서 데이터 멤버 'Balance'는 민감한 정보입니다. 이 민감한 정보를 보기 위해 외부 응용 프로그램 액세스를 제공할 수는 있지만 이 외부 응용 프로그램이 회원의 잔액에 저장된 데이터의 속성을 변경하도록 허용하지 않을 것입니다.' 이 결과는 데이터 숨김을 사용하여 얻을 수 있으며, 보다 구체적으로 개인 액세스 지정자를 사용하여 제어합니다.
- 데이터 은닉은 일반적으로 예측할 수 없고 민감한 데이터에 대해 실행됩니다. 이러한 종류의 데이터는 프로그램을 효과적이고 신속하게 실행하는 데 기본입니다. 부당한 액세스로 인해 결과 데이터 변경 데이터는 영구적이며 추가 사용 전에 프로그래머 측에서 완전한 재작업을 요구합니다.
- 데이터 숨김은 의도하지 않은 간과로부터 클래스 구성원을 보호하는 데 도움이 됩니다. 클래스는 일반적으로 신뢰할 수 있는 상태에 있어야 하는 다양한 관련 필드로 구성됩니다. 프로그래머가 이러한 필드를 직접 제어할 수 있다고 가정합니다. 이 경우 중요한 관련 필드를 변경하지 않고 한 영역을 변형하여 클래스를 충돌 상태로 만들 가능성이 있습니다.
데이터 은닉의 이점
데이터 은닉의 이점은 다음과 같이 다양합니다.
- 데이터의 예측 불가능성과 데이터 복잡성을 줄이는 데 사용됩니다.
- 프로그램의 재사용성을 향상시킵니다.
- 소프트웨어 구성 요소 간의 상호 종속성을 제한하여 시스템 복잡성을 줄여 견고성을 높입니다.
- 데이터에 대한 물리적 비축 설계를 숨깁니다. 이것은 인터페이스를 명확하게 정의하는 데 도움이 되고 가독성과 이해도를 향상시킵니다.
- 손상 및 부당한 액세스로부터 데이터 보증을 제공합니다. 즉, 중요한 데이터를 은폐하여 해커에 대한 보안 프로토콜을 강화하는 데 도움이 됩니다. 모든 내부 데이터가 공개되면 해커가 내부 데이터에 쉽게 침투하여 프로그램의 기능을 변경하기 위해 악의적으로 변경될 수 있습니다. 데이터를 숨기면 숨겨진 데이터가 클래스의 외부 구성원 및 따라서 해커에게 보이지 않는 것처럼 보이기 때문에 코드를 해독하기가 훨씬 더 어려워집니다.
- 캡슐화된 클래스는 간단하고 관리하기 쉽고 애플리케이션의 향후 개발을 용이하게 합니다.
데이터 은닉의 단점
데이터 은닉의 유일한 단점은 추가 코딩입니다. 데이터 은닉은 프로그래머가 은닉 데이터에 원하는 효과를 생성하기 위해 더 긴 코드를 작성해야 합니다.
세계 최고의 대학에서 온라인으로 소프트웨어 엔지니어링 과정을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
결론
데이터 은닉은 러시안 룰렛 게임과 유사합니다. 러시안 룰렛에서는 6개의 구멍 중 1개에만 총알이 있습니다. 그 장면이 감지할 수 있는 데이터 위협이라고 상상해 봅시다. 기회를 잡으시겠습니까? 유리하게 작동하는 5가지 시나리오가 있을 수 있지만 위협을 구체적으로 식별할 수 있습니까? 내 대답은 아니오 야. 모든 시나리오는 의심과 두려움이라는 동일한 확률적 부담을 안고 있습니다. 이러한 불확실성에 굴복하는 대신 데이터 위협에 맞서십시오. 데이터 은닉으로 위장하십시오.
Java, OOP 및 전체 스택 소프트웨어 개발에 대해 자세히 알아보려면 작업 전문가를 위해 설계되었으며 500시간 이상의 엄격한 교육을 제공하는 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 이그 제 큐 티브 PG 프로그램을 확인하십시오. 9개 이상의 프로젝트 및 과제, IIIT-B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.
객체 지향 프로그래밍에서 캡슐화란 무엇입니까?
캡슐화는 데이터와 데이터에서 작동하는 코드를 함께 바인딩하는 방법입니다. 데이터 추상화를 외부 세계에 노출하면서 데이터 구현 세부 정보를 숨기는 데 사용되는 메커니즘입니다. 잘 정의된 인터페이스 뒤에 정보를 숨기는 프로세스를 캡슐화라고 합니다. 캡슐화는 객체 지향 프로그래밍의 강력한 개념입니다. 접근자 함수를 생성하여 내부 데이터와 객체의 동작을 외부 세계로부터 숨기는 과정입니다.
객체지향 프로그래밍에서 추상화란?
추상화는 개체 지향 프로그래밍에서 클래스의 인터페이스를 각 개별 개체의 구현 세부 정보에서 분리하는 데 사용되는 기술입니다. 이것은 클래스를 사용하는 코드를 변경하지 않고 코드를 변경할 수 있음을 의미합니다. 객체 지향 프로그래밍(OOP)에서 추상화는 조작할 수 있지만 명시적으로 정의할 수 없는 객체를 나타냅니다. 추상화는 OOP의 중요한 부분입니다. 이는 클래스의 인터페이스를 해당 메소드의 구현과 분리하는 프로세스입니다.
객체 지향 프로그래밍에서 클래스와 객체는 어떻게 상호 작용합니까?
클래스와 객체는 객체 지향(OO) 프로그래밍의 기초입니다. 객체 지향 프로그래밍은 객체와 클래스를 사용하여 실제 세계를 모델링하는 프로그래밍 패러다임입니다. 클래스는 청사진 또는 템플릿입니다. 대상이 무엇인지에 대한 설명 또는 사양입니다. 특정 유형의 개체의 특성, 동작 및 데이터를 정의합니다. 객체는 클래스의 인스턴스 또는 예입니다. 프로그램의 모든 개체는 하나 이상의 클래스로 분류될 수 있습니다. 클래스는 다른 클래스의 속성, 메서드 및 기타 특성을 상속할 수 있습니다. 이것을 상속이라고 합니다.