데이터 추상화 및 정보 숨김에 어떤 차이가 있습니까? 이 링크에서 모든 답을 찾은 후에는 더 혼란 스럽습니다. Abstraction VS Information Hiding VS Encapsulation 차이점을 찾을 수 없습니다. 우리는 목표 (정보 숨기기)를 목표로 &을 다른 프로세스 (추상화)라고 부를 수 있습니까? 그러나 이것은 나에게는 만족스러운 차이가 아닙니다. 또한 캡슐화는 추상화 프로세스를 구현하는 기술입니다. 바로 여기 있습니까? 정확한 차이점을 설명하십시오.정보 숨김 및 데이터 추상화의 차이점은 무엇입니까?
답변
정보 숨기기은 디자이너가 구체적으로 구현 세부 정보에 대한 액세스를 제한하기로 결정한 경우입니다. 객체 지향 디자인보다 오래된 개념이지만 종종 사용됩니다.
간단한 예는 C로 상수를 정의하는 것입니다., #define NAME_SIZE 15
상수의 코드 (클라이언트)는 값을 알 필요가 없으며 디자이너 (디자이너)가 나중에 값을 변경하기로 결정하면 문제가되지 않습니다. 그들은 당신이 그것을 바꾸기로 결정할 수도 있기 때문에 그것이 정말로 15라는 사실에 대해 가정해서는 안됩니다. 당신이 집계를 처리 할 때 추상화가
는, 예를 들어, 자동차 추상화은 우리가 간단한 방법으로 복잡한 것들을 생각할 수 등 섀시, 자동차, 바퀴, 같은 세부 사항의 추상화입니다.
캡슐화은 추상화를 구성하는 요소의 세부 수준을 결정하는 방법입니다. 좋은 캡슐화는 정보 숨기기를 적용하여 세부 사항의 한계를 적용합니다. 예를 들어, 내 자동차는 모든 부품으로 구성되어 있지만, 운전자에게 내 필요에 맞는 인터페이스 만 제공합니다. 나는 문, 자물쇠, 창문, 조명, 경적, 선 루프, 움직임의 방향, 가속, 감속 등을 제어 할 수 있습니다.이 모든 것들의 "방법"에 대한 세부 사항을 조작하는 것이 궁금 할지라도, 캡슐화는 더 많이 보는 것에서의 나.
운전 기사가 제한된 인터페이스 만 알고 있기 때문에 내 차의 구현이 변경됩니다 (연소 엔진에서 전기 또는 하이브리드로 변경됨). 운전 방법을 변경할 필요가 없습니다. 추상화 나를 그냥 등, 대신 금속, 고무 조각 수백,
숨어있는 정보를 자동차의하지 부분은 choke valve 수 있습니다 어디의 예를 차를 운전하고있어 알 수 있습니다. 우리 부모님은 그들이 운전 해 온 차에서 일하는 데 어떻게 익숙했는지 말해 줬어. 그건 전기 자동차에서 쓸모없는 연소 엔진 세부 사항 이었어.
"정보 숨기기"는 "데이터 추상화"의 중요한 부분이지만 전체 개념은 아닙니다.
그리고 FORTRAN 또는 BASIC에서 "전역 사용 금지"와 같은 절차 코드에서 "정보 숨기기"를 할 수 있지만 기억해야합니다. 그러나 "추상 데이터 유형"은 필요하지 않습니다. ".
Information hiding과 Abstract Data Types은 서로 밀접한 관련이 있지만 서로 다른 개념입니다.
클래스는 일반적으로 클라이언트로부터 구현 세부 정보를 숨 깁니다. 이를 정보 은닉이라고합니다. 인터페이스를 작성하여 우리는 ... 정보 숨어
예 ... 아래 우리는 우리의 헤더 파일에 인터페이스가 입니다 ...
class Coder
{
public:
Coder();
void prints();
private:
int x;
};
을 정보 숨기기 개념을 소환하고 다른 파일에서 기능의 구현 "Coder.cpp는"
Coder::Coder
{
x=10;//any int value you can take;
}
void Coder::prints()
{
cout<<x;
}
오히려 두 개의 파일 (한 헤더 + 하나의 cpp 파일) 우리는 한 곳에서 그것을 할 수 있었다 위에서 일을 tahn ...입니다. 우리는 우리가이 일을 한 경우
class Coder
{
public:
Coder()
{
x=10;//any int value you can take;
}
void prints()
{
cout<<x;
}
private:
int x;
};
우리가 숨어있는 정보를 구현할 수 없었다 ... 생성자와 헤더 파일 자체 인쇄 기능의 해상력을 준 수 ... 그리고 우리의 고객은 우리가 구현 한 방법을 알 우리 기능! 데이터
스택 클래스의
클라이언트는 스택의 구현과 관련 될 필요가 없다 ... 당신이 ... 고려 스택의 예 수 absraction. 클라이언트는 데이터 항목이 스택에 배치 될 때 선입 선출 순서로 회수된다는 것을 알고 있습니다. 클라이언트는 스택이 제공하는 기능이 무엇인지 신경 쓰며 기능이 어떻게 구현되는지는 신경 쓰지 않습니다. 이 개념을 데이터 추상화라고합니다.
데이터 숨기기는 액세스 수정자가 Java 메소드 및 변수의 가시성을 숨기는 데 사용되는 프로세스입니다. 액세스 수정자는 공개, 개인 및 보호입니다.
추상화는이 클래스를 확장 할 클래스의 기본 클래스와 메소드를 구성하는 빈으로 특정 동작을 정의하는 프로세스입니다.
추상화는 (추상화에서와 같이) 세부 사항이 적은 내용을 표현한 것입니다. OO에서는 추상 형식을 내부 표현을하지 않고 조작 할 수 있습니다. 예를 들어, 전화 번호의 추상화로서의 전화 번호는 고객이 국가 코드, 지역 번호 및 실제 번호로 구성된다는 것을 알지 못해도 조작 할 수 있습니다. 추상화는 추상 데이터 유형 (예 : 전화 번호)에 대해 구현 방법을 걱정할 필요없이 말하기를 허용하므로 분석 및 설계 단계에서 가장 유용합니다.
좀 더 익숙한 유형 인 string
은 텍스트의 추상화입니다. string
은 구현 방법을 몰라도 조작 할 수 있습니다. 문자열 추상화는 응용 프로그램 설계에서의 사용에 영향을 미치지 않고 내부를 변경할 수있게합니다.
정보 숨기기 및 캡슐화는 추상 데이터 형식을 구현할 수있는 두 가지 방법입니다. 추상 데이터 유형은 내부 상태 또는 캡슐화를 숨길 필요조차 없습니다. 예를 들어 숫자는 추상화로 int
으로 구현 될 수 있습니다.
실시간 예제를 설명하는 데 많은 노력을 기울일 수 있습니다. 감사. :) –