C++에서 내부 표현이 사용자에게 노출되지 않고 투명하게 변경할 수있는 클래스입니다.내부 표현이 사용자에게 노출되지 않고 투명하게 변경할 수있는 클래스인데이 예제는 무엇입니까?
이것은 파생, 추상화, 다형성, 캡슐화, 상속의 예입니까?
캡슐화라고 생각합니다.
회원 데이터는 비공개이며 사용자에게 노출되지 않지만 회원 기능에 따라 변경 될 수 있습니다.
맞습니까?
C++에서 내부 표현이 사용자에게 노출되지 않고 투명하게 변경할 수있는 클래스입니다.내부 표현이 사용자에게 노출되지 않고 투명하게 변경할 수있는 클래스인데이 예제는 무엇입니까?
이것은 파생, 추상화, 다형성, 캡슐화, 상속의 예입니까?
캡슐화라고 생각합니다.
회원 데이터는 비공개이며 사용자에게 노출되지 않지만 회원 기능에 따라 변경 될 수 있습니다.
맞습니까?
첫 번째 질문 (숙제)은 캡슐화와 추상화의 두 가지 예입니다. 선생님이 무엇을 기대하는지 누가 압니까? 이것에 관해서
:
은 부재 데이터는, 그것이 사용자에게 전용 노출되지 않고, 그것의 멤버 함수에 의해 변경 될 수있다.
이것이 참/거짓 질문 인 경우 축약 그대로 복사 한 경우 대답은 거짓입니다. 클래스의 데이터 멤버는 공개 될 수 있습니다. 문장의 시작 부분에 "if"가 있으면 답변이 true로 바뀝니다.
숙제 질문을 게시하려는 경우 전사 단계에서 모호성과 문법적 실수를 도입 할 필요가 없습니다.
예상되는 대답은 분명히 '캡슐화'입니다.
이것은 파생, 추상화, 다형성, 캡슐화, 상속의 예입니까?
유도 및 상속은 쉽게 배제됩니다. 클래스의 내부 표현을 변경하기 쉽도록 코드를 구조화하는 데 사용할 수는 있지만 질문이 필요하지는 않습니다.
여기서 '추상화'는 추상 클래스를 의미하지는 않지만 더 일반적으로 abstraction입니다. 구현 코드가 투명하게 변경 될 수 있도록 내부 세부 정보를 숨기는 것보다 훨씬 광범위합니다.
다형성 또한 정답이 아니지만 다형성과 캡슐화 사이의 관계는 일부를 선택하는 것을 혼동시킬 수 있습니다.
캡슐화는 코드를 '내부'세부 정보로 나눈 것이며 '외부'코드를 인터페이스로 구분하여 나눕니다. 다형성은 특정 변수를 통해 인터페이스에 액세스 할 때 어떤 구현이 작동하는지 선택하거나 설정하는 특정 메커니즘입니다. 그래서 분명히 다형성은 다형 변수를 구현하는 '외부'코드를 나눌 캡슐화에 달려 있지만 캡슐화는 다형성 문맥에서 사용할 필요가 없습니다.
여기에서 다시 캡슐화 된 정의와 다형성과의 관계가 명확 해지면이 용어들 사이의 캡슐화를 고유하게 식별하는 것이 분명합니다.
회원 데이터는 비공개이며 사용자에게 노출되지 않지만 회원 기능에 의해 변경 될 수 있습니다.
맞습니까?
는 "내부 표현 [...] 투명하게 변경할 수 있습니다"로 데이터 멤버를 액세스하고 질문에 의미가 아니에요 무슨 그 값을 수정하는 멤버 함수의 허락을 언급하는 경우.
외부 코드에 해당하는 소스 코드를 다시 작성하지 않아도 숨겨진 내부 세부 정보에 해당하는 소스 코드를 다시 작성할 수 있다는 의미입니다. 예를 들어 데이터를 캡슐화하는 2 차원 벡터를 설계 한 경우 해당 구현 (구성원 데이터와 멤버 함수 모두)을 자유롭게 다시 작성하여 데카르트 좌표 사용과 ρ-θ 표현 사용간에 전환 할 수 있습니다. '외부'코드는 전혀 변경하지 않아도됩니다.
네, 맞습니다. –
숙제 문제의 저자가 "추상화"를 염두에두고 있었지만 애매한 표현으로 생각됩니다. – Beta
추상화와 다형성은 "내부 표현이 사용자에게 노출되지 않는다"고 가정 할 때 가장 먼저 생각한 것입니다. 개인 데이터와 개인 메소드가 문제의 클래스에서 선언되지 않아 사용자가 볼 수 없게된다는 것을 의미합니다 조금도. 그러나 선언 된 경우 사용자의 코드에 액세스 할 수 없으면 캡슐화가 더 적합합니다. –