OOP (한국어)
On 2월 10, 2021 by admin에서 ' 추상화 '의 정의에 대해 혼동 OOP에서 “추상화”의 정의를 이해하려고합니다.
몇 가지 주요 정의를 발견했습니다. 모두 유효합니까? 그들 중 하나가 잘못 되었습니까? 혼란 스럽습니다. (내 말로 정의를 다시 작성했습니다.)
정의 1 :
추상화는 실제 세계에서 일부 객체를 가져 와서 프로그래밍 용어로 변환하는 개념입니다. Human
클래스를 만들고 int health
, int age
, String name
등 속성 및 eat()
등 메소드.
정의 2 :
보다 일반적인 정의입니다. 추상화는
어디에서나 발생하는 개념입니다.
“일을보다 일반적 / 단순 / 추상적으로 만들기” 가 관련됩니다. 몇 가지 예 :
-
상위 계층이 더 단순하거나 더 일반적이고 더 일반적이고 추상적 인 구현을 정의하는 상속 계층 구조 Wh 계층 구조의 하위 클래스가 더 구체적이고 더 자세한 구현을 정의합니다.
-
캡슐화를 사용하여 다른 클래스에서 클래스 구현의 세부 정보를 숨겨서 클래스를 더 많이 만듭니다. “추상적”(더 간단).
정의 3
또 다른 일반적인 정의 : 추상화는 사물의 세부 사항 및 구체적인 구현에서 사물의 유형 (예 : 클래스), 사용 가능한 작업 (즉, 메서드) 등을 사용하여 프로그래밍을 더 간단하고 일반적이며 추상적으로 만듭니다. (이 작업은 소프트웨어 시스템의 모든 컨텍스트에서 발생할 수 있습니다.) 예를 들어 캡슐화 할 때 발생합니다. 캡슐화는 구현의 세부 사항을 숨기고 사물의 유형과 더 일반적이고 추상적 인 정의 만 표시하는 것을 의미하기 때문입니다. Anotehr 예제는 Java에서 List
개체를 사용합니다. 이 개체는 실제로 ArrayList
또는 LinkedList
의 구현 세부 정보를 사용하지만이 정보는보다 일반적인 이름 List
.
정확한 정의가 있습니까? ( 가장 일반적이고 허용되는 정의를 참조합니다.)
댓글
- 추상화는 " 사물 "을 특정 유형의 사물 (Animal = > Dog)을 사용하여 범위를 더 좁힐 수 있습니다 (Dog = > Poodle).
답변
추상화는 객체 지향 프로그래밍 (OOP)의 3 가지 기둥 중 하나입니다. 문자 그대로 특정 관점에서 시스템 또는 컨텍스트에서 엔티티를 인식하는 것을 의미합니다. 우리는 불필요한 세부 사항을 제거하고 고려중인 상황이나 시스템에 필요한 측면에만 초점을 맞 춥니 다.
다음은 좋은 설명입니다.
당신은 다른 관계를 가지고 있습니다. 역할. 학교에 있으면 “학생”입니다. 직장에서 귀하는 “직원”입니다. 정부 기관에있는 경우 “시민”로 볼 수 있습니다. 그래서 그것은 우리가 어떤 맥락에서 엔티티 / 객체를보고 있는지로 귀결됩니다. 따라서 급여 시스템 을 모델링하는 경우 직원 (PRN, 풀 타임 / 파트 타임, 지정) . 과정 등록 시스템 을 모델링하는 경우 귀하의 측면과 특성을 학생 (롤 번호, 연령, 성별, 등록 과정) . 사회 보장 정보 시스템 을 모델링하는 경우 귀하의 세부 정보를 시민 (예 : 생년월일, 성별, 출생 국가 등)
추상화 (필요한 세부 사항에 집중)는 캡슐화 (외부 세계에서 세부 사항 숨기기)와 다릅니다. 캡슐화는 개체의 세부 사항을 숨기고 외부 세계의 개체가 해당 개체 또는 개체와 상호 작용할 수있는 적절한 인터페이스를 제공하는 것을 의미합니다.예를 들어, 누군가 내 이름을 알고 싶다면 내 이름이 무엇인지 알기 위해 내 뇌 세포에 직접 액세스 할 수 없습니다. 대신 그 사람이 내 이름을 물어볼 것입니다. 운전자가 차량의 속도를 높이고 싶다면이를위한 인터페이스 (가속 페달, 기어 등)가 있습니다.
첫 번째 정의는 명확하지 않습니다. Def 2는 좋지만 Abstraction을 Encapsulation 및 Inheritance와 연결하려고 할 때 초보자를 혼동하는 경향이 있습니다. Def 3은 추상화가 무엇인지 정확하게 정의하기 때문에 3 개의 정의 중 가장 좋은 것입니다.
코멘트
- 그렇다면 사양이 아닌 일반화와 같다고 '?
- @samyismyhero 맞아요! 추상화를 위해 객체의 일반적인 속성과 동작을 찾습니다.
- [Animal = > Dog]은 추상화입니다. " 동물 "이 " 개를 만들기 위해 가질 수있는 부분을 정의합니다. " (꼬리, 다리, 털 등). 그런 다음 " Dog " 클래스를 사용하여 푸들, 핏불 등을 정의 할 수 있습니다. 따라서 ' iv id =”49bebd88b6 “대신 " 개 " 클래스를 기반으로 개 품종을 선언합니다. >
동물. "
답변
정의 1은 확실히 추상화가 아닙니다. 모델링 을 더 자세히 설명합니다.
정의 2와 3은 동일한 내용을 설명합니다. 그리고 둘 다 추상화에 대한 꽤 좋은 설명입니다.
댓글
- 그 '가 생각했던 것입니다. !
abstract class Shape
lol!
Answer
각 정의는 좋습니다.
추상화는 목적에 중요한 세부 사항에만 집중하는 것입니다.
첫 번째 경우 (현재) 코드에 실제 사람을 포함 할 수 없습니다. 당신은 당신의 목적에 부합하는 사람의 특정 세부 사항에 초점을 맞 춥니 다. 다른 프로그램에서는 다른 세부 사항에 집중해야 할 수도 있습니다. 이는 사람에 대한 다른 추상화이며, 각각은 컨텍스트에서 똑같이 유효 할 수 있습니다.
두 번째 및 세 번째 정의는이 아이디어를 계속하여 소프트웨어 엔티티에 적용합니다.
p>
답글 남기기