추상화와 캡슐화의 차이점
추상화와 캡슐화의 주요 차이점
- 추상화는 가장 필요한 세부 정보를 제공하여 유용한 데이터만을 보여주는 반면, 캡슐화는 필요한 정보에 대한 코드와 데이터를 포장합니다.
- 추상화는 주로 무엇을 해야 하는지에 초점을 맞추는 반면, 캡슐화는 그것이 어떻게 이루어져야 하는지에 초점을 맞춥니다.
- 추상화는 보다 추상적인 그림을 제공하여 복잡성을 숨기는 반면, 캡슐화는 내부 작업을 숨겨 나중에 변경할 수 있도록 합니다.
- 추상화는 프로그램을 여러 개의 독립적인 부분으로 분할하는 데 도움이 되는 반면, 캡슐화는 새로운 요구 사항에 따라 쉽게 변경할 수 있습니다.
- 캡슐화와 추상화를 비교하면 추상화는 설계 수준의 문제를 해결하는 반면 캡슐화는 구현 수준의 문제를 해결합니다.
- 추상화는 코드에서 발견되는 무관한 세부 사항을 숨기는 반면, 캡슐화는 개발자가 전체 코드를 쉽게 구성하는 데 도움이 됩니다.
추상화의 정의
추상화는 객체의 관련 데이터에만 초점을 맞춘 OOP 개념입니다. 배경 세부 사항을 숨기고 복잡성을 줄이고 효율성을 높이기 위해 필수적인 데이터 포인트를 강조합니다. 일반적으로 해당 특정 프로세스에 가장 관련성이 높은 정보만 유지합니다. 추출 방법은 주로 실제 기능보다는 아이디어에 중점을 둡니다.
캡슐화의 정의
캡슐화는 복잡한 시스템을 최종 사용자에게 더 쉽게 처리할 수 있도록 하는 방법입니다. 사용자는 시스템의 내부 세부 사항과 복잡성에 대해 걱정할 필요가 없습니다. 캡슐화 데이터와 데이터를 처리하는 코드를 단일 엔터티로 래핑하는 프로세스입니다. 래퍼 외부에서 정의된 코드의 임의 액세스를 막는 보호 래퍼로 간주할 수 있습니다.
추상화와 캡슐화의 차이점
추상화와 캡슐화의 주요 차이점은 다음과 같습니다.
매개 변수 | 추출 | 캡슐화 |
---|---|---|
사용 | 추상화는 설계 단계에서 발생하는 문제와 문제를 해결합니다. | 캡슐화는 구현 단계에서 발생하는 문제와 문제를 해결합니다. |
초점 | 추상화를 사용하면 객체가 수행하는 방식 대신 객체가 수행하는 작업에 집중할 수 있습니다. | 캡슐화를 사용하면 코드와 데이터를 단일 단위로 숨겨 외부 세계로부터 데이터를 보호할 수 있습니다. |
실시 | 인터페이스와 추상 클래스를 사용하여 추상화를 사용할 수 있습니다. | 액세스 수정자(공개, 보호 및 비공개)를 사용하여 캡슐화를 구현할 수 있습니다. |
초점 | 무엇을 해야 하는지에 주로 집중하세요. | 주로 어떻게 해야 할지에 초점을 맞추세요. |
어플리케이션 | 디자인 수준 중. | 구현 수준 중. |
왜 추상화가 필요한가요?
객체 지향 프로그래밍에 추상화가 필요한 주요 이유는 다음과 같습니다.
- 도메인 모델의 표현을 단순화하는 데 도움이 됩니다.
- 추상화는 코드에서 발견되는 무관한 세부 사항을 숨깁니다.
- 추상화는 프로그램을 여러 개의 독립적인 개념으로 분할하는 데 도움이 됩니다.
- 다양한 상황에서 ADT(Abstract Data Type) 객체를 사용할 때 최고의 유연성을 제공합니다.
캡슐화가 필요한 이유는 무엇입니까?
캡슐화의 주요 장점은 다음과 같습니다.
- 이는 애플리케이션의 유지 관리성을 향상시킵니다.
- 사용자가 시스템을 매우 쉽게 사용할 수 있는 유연성을 제공합니다.
- 개발자가 코드를 더 잘 구성하는 데 도움이 됩니다.
- 다른 클래스가 수행하는 작업에만 관심이 있고 수행 방법에는 관심이 없으므로 전반적인 코딩 프로세스가 더 쉬워집니다.
- 이 방법은 개발자가 보다 '객관적'이고 결과 지향적이 되도록 도와줍니다.
- 캡슐화된 코드는 매우 유연하고 새로운 요구 사항에 따라 쉽게 변경할 수 있습니다.
- 캡슐화를 사용하면 단위 테스트가 쉬워집니다.
- 모든 부분이 한 곳에 캡슐화되므로 모듈의 결합을 줄이고 모듈 내부의 응집력을 높일 수 있습니다.
- 캡슐화를 사용하면 코드의 다른 부분에 영향을 주지 않고 코드의 일부를 변경할 수 있습니다.
- 애플리케이션의 코드 가독성을 향상시킵니다.
- 보안 강화 및 애플리케이션 유지 관리가 쉬워집니다.
- 캡슐화 인터페이스는 잘 정의된 상호 작용만 허용합니다.
추상화의 예
은행 애플리케이션을 만들고 고객에 대한 모든 정보를 수집하라는 요청을 받았다고 가정해 보겠습니다. 고객에 대한 다음 정보를 얻을 가능성이 있습니다.
그러나 뱅킹 애플리케이션을 생성하는 데 위의 모든 정보가 필요한 것은 아닙니다.
따라서 해당 풀에서 뱅킹 애플리케이션에 유용한 정보만 선택하면 됩니다. 이름, 주소, 세금 정보 등과 같은 데이터는 은행 애플리케이션에 적합합니다.
더 큰 풀에서 고객 정보를 가져오거나 제거하거나 선택했으므로 프로세스를 추상화라고 합니다.
그러나 일단 추출된 동일한 정보는 다양한 애플리케이션에 사용될 수 있습니다. 예를 들어 병원 애플리케이션, 취업 포털 애플리케이션, 정부 데이터베이스 등에 동일한 데이터를 거의 또는 전혀 수정하지 않고 사용할 수 있습니다. 따라서 이는 귀하의 마스터 데이터가 됩니다. 이것이 추상화의 장점이다.
캡슐화의 예
모바일 장치의 예를 들어보겠습니다. 모바일 장치를 사용하면 사진 촬영, 메시지 보내기, 비디오/오디오 녹음, 웹 액세스 등 다양한 기능을 수행할 수 있습니다.
위에 언급된 기능은 대부분 스마트폰의 기능입니다. 그러나 이 프로그램을 사용하기 전에 해당 기능의 내부 작동 세부 사항을 이해할 필요는 없습니다. 예를 들어, 카메라가 감마 보정을 계산하거나 이미지에서 사람의 얼굴을 식별하는 방법을 알 필요가 없습니다. 소프트웨어 인터페이스만 배우면 됩니다. 이것이 캡슐화입니다.