친구들은 c #의 추상화에 대한 질문을 자유롭게 요청합니다. 캡슐화의 목적은 클래스의 사용자로부터 구현 세부 정보를 숨기는 것입니다 (예 : std::list의 항목 목록을 내부적으로 유지 한 다음 std::vector가 사용자 관리없이 변경할 수 있습니다)가 더 효과적일 것이라고 결정하십시오. 즉, 두 stl 컨테이너와 상호 작용하는 방식은 추상화 덕분이며, 목록과 벡터 모두 유사한 메서드(이터레이터)를 사용하여 동일한 방식으로 트래버스할 수 있습니다. 이 코드 샘플에서는 Loop에서 PaintMyself 함수를 호출하고 이를 위해 기본 클래스 개체를 사용합니다. 컴파일러는 모든 반복및 링크에서 적절한 개체를 동적으로 호출할 메서드 호출을 알지 못합니다. 이제 클래스 사각형을 조금 변경하고 PaintMyself 구현에서 단어 재정의를 새 단어로 바꿉니다. 우리가 빌드 하 고 다시 결과 Rhombus 및 Square에 대 한 호출 그들의 구현, 하지만 사각형 기본 구현 호출 됩니다. 이 문제는 새 연산자 클래스 직사각형이 CBaseShape의 가상 함수를 구현하지 않고 컴파일러가 기본 구현을 호출하는 것 외에 다른 선택의 여지가 없기 때문에 발생합니다. 이를 기반으로 새 와 재정의의 차이를 이해하고 응용 프로그램에서 다형성 사용이있을 때 사용에 매우 주의를 기울여야합니다. 이 예제와 함께이 프로젝트에 첨부 된 소스 파일을 업데이트했으며 재생할 수 있습니다.

모든 메서드의 완전한 구현을 제공하지 않고 주어진 추상화의 구조를 선언하는 수퍼 클래스를 정의하려는 상황이 있습니다. 즉, 때로는 모든 하위 클래스에서 공유되는 일반화된 양식만 정의하는 수퍼 클래스를 만들어 세부 정보를 채우기 위해 각 하위 클래스에 남겨 둡니다. 지금은 전체 개념을 엉망으로. 나는 추상적 인 클래스, 상속, 액세스 지정자 및 모든 에 대해 알고있다. 나는 인터뷰에서 추상화 및 / 또는 캡슐화에 대해 물었을 때 어떻게 대답해야하는지 알고 싶습니다. 예를 들어 “창”을 예로 들어 보겠습니다. 그들은 전통적인 의미에서 정말 창이 아니다, 그들은 단지 화면에 그래픽 사각형입니다. 그러나 그들을 창으로 생각하는 것이 유용합니다. 추상화입니다. 개체 지향 프로그래밍은 개체를 사용하여 소프트웨어가 해결하려는 작업을 모델링하는 방법입니다. 모델은 실제 세계의 단순화 된 모델입니다. 실제 의 일부 인스턴스를 설명하는 클래스를 만들면 이러한 클래스에는 일부 내부 데이터가 있고 일부 상태가 있습니다.

클래스의 개체는 서로 통신하며 자체 및 외부 개체와 일부 데이터 조작을 수행할 수 있습니다. OOP 및 OOD (객체 지향 디자인)에 대한 설명이 너무 많아서 휠을 발명하고 나만의 디자인을 만들고 싶지 않습니다.

Scroll Up