OOP에서 '추상화'의 정의를 이해하려고합니다.
나는 몇 가지 주요 정의를 보았습니다. 모두 유효합니까? 그들 중 하나가 잘못 되었습니까? 혼란 스러워요. (나는 내 자신의 말로 정의를 다시 썼다).
정의 1 :
추상화는 실제 세계에서 일부 객체를 가져 와서 프로그래밍 용어로 변환하는 개념입니다. 이러한 생성과 같은 Human
클래스를 제공하고 int health
, int age
, String name
등의 특성, 및 eat()
등등의 방법.
정의 2 :
보다 일반적인 정의. 추상화는 '보다 일반적인 / 단순한 / 추상적 인 것 만들기' 가 관련된 소프트웨어 시스템의 어느 곳 에서나 발생하는 개념입니다 . 몇 가지 예 :
상위 계층이 더 단순하거나 일반적인 상속 계층 구조로,보다 일반적이고 추상적 인 구현을 정의합니다. 계층 구조의 하위 클래스는 더 구체적이고 더 자세한 구현을 정의합니다.
캡슐화를 사용하여 클래스의 구현 세부 사항을 다른 클래스에서 숨기면 클래스를 외부 소프트웨어 세계에 대해 더 '추상적'(더 단순하게) 만듭니다.
정의 3
또 다른 일반적인 정의 : 추상화는 사물의 세부 사항 및 구체적인 구현에서 사물 유형 (예 : 클래스), 사용 가능한 작업 (예 : 메소드) 등으로 초점을 이동하여 프로그래밍을보다 간단하고 일반적으로 만드는 개념입니다. 그리고 더 추상적 인. (이는 소프트웨어 시스템의 어느 곳에서나 어떤 상황에서도 발생할 수 있습니다). 예를 들어 캡슐화는 구현의 세부 사항을 숨기고 사물의 유형과 더 일반적이고 추상적 인 정의 만 표시하기 때문에 캡슐화 할 때 발생합니다. Anotehr 예제는 List
Java 에서 객체를 사용하는 것 입니다. 이 객체는 실제로 ArrayList
a 또는 a 의 구현 세부 사항을 사용 LinkedList
하지만이 정보는보다 일반적인 이름을 사용하여 추상화됩니다 List
.
이러한 정의 중 올바른 것이 있습니까? ( 가장 일반적이고 수용 가능한 정의를 말합니다).