산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C++의 데이터 추상화

데이터 추상화는 외부 세계에 필수적인 정보만 제공하고 배경 세부 정보를 숨기는 것, 즉 세부 정보를 제공하지 않고 프로그램에서 필요한 정보를 표현하는 것을 말합니다.

데이터 추상화는 인터페이스와 구현의 분리에 의존하는 프로그래밍(및 디자인) 기술입니다.

켜고 끌 수 있고, 채널을 변경하고, 볼륨을 조정하고, 스피커, VCR 및 DVD 플레이어와 같은 외부 구성 요소를 추가할 수 있지만 내부 세부 정보를 모르는 TV의 실제 예를 하나 들어보겠습니다. 즉, 무선 또는 케이블을 통해 신호를 수신하는 방법, 신호를 변환하는 방법, 최종적으로 화면에 표시하는 방법을 모릅니다.

따라서 텔레비전은 내부 구현과 외부 인터페이스를 명확하게 구분하며 내부에 대한 지식 없이도 전원 버튼, 채널 체인저 및 볼륨 컨트롤과 같은 인터페이스를 사용하여 재생할 수 있다고 말할 수 있습니다.

C++에서 클래스는 뛰어난 수준의 데이터 추상화를 제공합니다. . 객체의 기능을 사용하고 객체 데이터, 즉 클래스가 내부적으로 구현된 방법을 실제로 알지 못하는 상태를 조작하기에 충분한 공용 메서드를 외부 세계에 제공합니다.

예를 들어, 프로그램은 sort()를 호출할 수 있습니다. 함수가 주어진 값을 정렬하기 위해 실제로 어떤 알고리즘을 사용하는지 모른 채 함수. 실제로 정렬 기능의 기본 구현은 라이브러리 릴리스 간에 변경될 수 있으며 인터페이스가 동일하게 유지되는 한 함수 호출은 계속 작동합니다.

C++에서는 클래스를 사용합니다. ADT(추상 데이터 유형)를 정의합니다. cout를 사용할 수 있습니다. ostream 클래스의 객체 다음과 같이 표준 출력으로 데이터를 스트리밍하려면 -

라이브 데모
#include <iostream>
using namespace std;

int main() {
   cout << "Hello C++" <<endl;
   return 0;
}

여기서 cout 방법을 이해할 필요가 없습니다. 사용자의 화면에 텍스트를 표시합니다. 공개 인터페이스만 알면 되고 'cout'의 기본 구현은 자유롭게 변경할 수 있습니다.

액세스 레이블로 추상화 적용

C++에서는 액세스 레이블을 사용하여 클래스에 대한 추상 인터페이스를 정의합니다. 클래스는 0개 이상의 액세스 레이블을 포함할 수 있습니다. -

액세스 레이블이 표시될 수 있는 빈도에는 제한이 없습니다. 각 액세스 레이블은 후속 멤버 정의의 액세스 수준을 지정합니다. 지정된 액세스 수준은 다음 액세스 레이블을 만나거나 클래스 본문의 닫는 오른쪽 중괄호가 표시될 때까지 유효합니다.

데이터 추상화의 이점

데이터 추상화는 두 가지 중요한 이점을 제공합니다.

클래스의 private 섹션에서만 데이터 멤버를 정의함으로써 클래스 작성자는 데이터를 자유롭게 변경할 수 있습니다. 구현이 변경되면 클래스 코드만 검사하여 변경 사항이 어떤 영향을 미칠 수 있는지 확인해야 합니다. 데이터가 공개된 경우 이전 표현의 데이터 멤버에 직접 액세스하는 모든 함수가 손상될 수 있습니다.

데이터 추상화 예

public 및 private 멤버가 있는 클래스를 구현하는 모든 C++ 프로그램은 데이터 추상화의 예입니다. 다음 예를 고려하십시오 -

라이브 데모
#include <iostream>
using namespace std;

class Adder {
   public:
      // constructor
      Adder(int i = 0) {
         total = i;
      }
      
      // interface to outside world
      void addNum(int number) {
         total += number;
      }
      
      // interface to outside world
      int getTotal() {
         return total;
      };
      
   private:
      // hidden data from outside world
      int total;
};

int main() {
   Adder a;
   
   a.addNum(10);
   a.addNum(20);
   a.addNum(30);

   cout << "Total " << a.getTotal() <<endl;
   return 0;
}

위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -

Total 60

위의 클래스는 숫자를 더하고 합계를 반환합니다. 공개 회원 - addNumgetTotal 외부 세계에 대한 인터페이스이며 사용자는 클래스를 사용하기 위해 이를 알아야 합니다. 비공개 회원 사용자가 알 필요는 없지만 클래스가 제대로 작동하려면 필요합니다.

전략 설계

추상화는 코드를 인터페이스와 구현으로 분리합니다. 따라서 구성 요소를 설계하는 동안 인터페이스를 구현과 독립적으로 유지해야 기본 구현을 변경하더라도 인터페이스가 그대로 유지됩니다.

이 경우 어떤 프로그램이 이러한 인터페이스를 사용하든 영향을 받지 않으며 최신 구현으로 다시 컴파일해야 합니다.


C 언어

  1. C++ 데이터 유형
  2. C++ 연산자
  3. C++ 클래스 및 개체
  4. C++ 클래스 템플릿
  5. C++ Char 데이터 유형(예제 포함)
  6. 자바 - 추상화
  7. 자바 - 데이터 구조
  8. C++의 스토리지 클래스
  9. C++ 데이터 구조
  10. C++의 다형성