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
위의 클래스는 숫자를 더하고 합계를 반환합니다. 공개 회원 - addNum 및 getTotal 외부 세계에 대한 인터페이스이며 사용자는 클래스를 사용하기 위해 이를 알아야 합니다. 비공개 회원 총 사용자가 알 필요는 없지만 클래스가 제대로 작동하려면 필요합니다.
추상화는 코드를 인터페이스와 구현으로 분리합니다. 따라서 구성 요소를 설계하는 동안 인터페이스를 구현과 독립적으로 유지해야 기본 구현을 변경하더라도 인터페이스가 그대로 유지됩니다.
이 경우 어떤 프로그램이 이러한 인터페이스를 사용하든 영향을 받지 않으며 최신 구현으로 다시 컴파일해야 합니다.
C 언어
Python 데이터 클래스는 @dataclass이 있는 일반 Python 클래스입니다. 장식가. 데이터를 보관하기 위해 특별히 만들어졌습니다. Python 버전 3.7부터 Python은 dataclass이라는 내장 모듈을 통해 데이터 클래스를 제공합니다. . 이 기사에서 살펴볼 일반 Python 클래스에 비해 몇 가지 장점이 있습니다. 또한 예제 코드와 데이터 클래스로 수행할 수 있는 몇 가지 일반적인 작업을 살펴보겠습니다. 목차 데이터 클래스 사용의 이점 Python 데이터 클래스 예시 기본값 데이터 클래스를 JSON으로 변환
이 기사에서는 PLCnext Controller에 이미 설치된 SQLite 데이터베이스 엔진을 사용하여 GDS(Global Data Space)를 통해 제공되는 데이터를 저장하는 방법에 대해 설명합니다. 데이터베이스는 프로세스 데이터를 표준화된 방식으로 저장할 수 있도록 하며 SFTP를 사용하여 다른 시스템으로 내보낼 수 있습니다. plcncli 도구 버전이 컨트롤러의 펌웨어 버전과 일치하는지 확인하십시오. Eclipse C++ 프로젝트 생성 다음 속성을 사용하여 PLCnext Info Center의 지침에 따라 Eclipse에