2013-02-17 1 views
-1

오늘은 추상화에 대해 검색하고 있었고, 난이 예제를 가지고 ....이 프로그램은 추상화의 개념을 구현하고도 정교한하시기 바랍니다 어떻게이 인 data abstraction를 호출 할 필요가이 프로그램은 추상화의 개념을 어떻게 구현합니까?

#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; 
} 
+0

당신은 "추상 개념"을 구현한다고 주장하고 그것에 대해 아무 말도하지 않은 프로그램을 발견 했습니까? 어디서 찾았 니? 처음에 언급되지 않았다면 "추상 개념"을 구현한다는 것을 어떻게 알 수 있습니까? –

+0

여기에 소스입니다 [링크] http://www.tutorialspoint.com/cplusplus/cpp_data_abstraction.htm [링크] –

+0

예제 앞에 전체 텍스트 섹션이있는 것 같습니다. 어떤 정보를 놓치거나 이해하지 못합니까? –

답변

1

C++의 추상화는 무엇인가 OOP의 핵심 소스 (C++에만 국한되지 않음). 위키 피 디아에서 인용

:

데이터 추상화는 데이터 형식의 추상 속성과 그 구현의 구체적인 세부 사항 사이에 명확한 분리를 적용합니다. addNumgetTotal : 당신의 예에서는

, Adder 두 인터페이스가 가산기의 데이터 추상화이다. 이 추상화는 개인 데이터 (이 경우 total)를 숨기거나 캡슐화하며 커널 동작 만 노출합니다. 즉, 숫자를 추가하고 현재 합계를 반환합니다.

+0

... 알았어. :) –

0

private members의 영향을받지 않고 작업을 수행하기 위해 public 방법에 액세스하고 있습니다. 이것은 abstraction입니다.

마음이 움직 이도록 지시하는 방법을 모른 채 손을 움직이고 있습니다.

Data Abstraction : 숨기기 불필요한 세부 정보. 귀하의 경우에는 total 계산 방법을 숨 깁니다. 방금 함수를 호출하면 작업이 완료됩니다.

Data Encapsulation : 바인딩 dataobject. 귀하의 경우에는 totalobject a으로 묶었습니다. 따라서 a 허락 없이는 접근 할 수 없습니다.

class Adder { 
    Adder(int i); 
    void AddNum(int num); 
    int getTotal(); 
}; 

구현 멀리 추상화, 숨겨진, 만 프로토 타입은 남아 : 생성자와 기능의

0

생각해은 프로토 타입.

관련 문제