OOP 추상화 일명 막대기 그림만 있으면 됩니다.

솔직히 말해서 사람을 그릴 때 여전히 막대 그림을 99% 사용합니다.

내가 그림을 특히 못해서가 아니라(미술 수업을 한두 번 들었음) 사람을 표현해야 하는 대부분의 다이어그램이나 그림의 경우 사실적인 그림을 만들려고 노력할 가치가 없습니다. 사람. 청중이 그것이 사람이라는 것을 이해하는 한 일반적으로 충분합니다.

2개의 다리, 2개의 팔, 몸통과 머리, 그리고 일반적으로 "사람"이라는 개념을 이해하기에 충분합니다. 성별 등을 지정하기 위해 추가 세부 정보를 추가할 수 있지만 꼭 필요한 경우에만 가능합니다.

물론 머리 모양, 얼굴 모양, 희망, 꿈 등에 대해 걱정할 수 있지만 사물이 사람이라는 것을 시각적으로 이해하는 데 그런 것들이 필요하지 않습니다. 특정 방식으로 배열된 몇 개의 선과 원만 있으면 됩니다.



이제 나는 이것이 예술 블로그가 아니라 객체 지향 프로그래밍에 대한 기술적인 게시물이어야 한다는 것을 알고 있지만 이것은 실제로 OOP의 다음 핵심 개념인 추상화의 완벽한 예입니다!

악마는 디테일에 있다



사전은 추상화를 다음과 같이 정의합니다.

abstraction
[ ab-strak-shuhn ]
noun
the act of considering something as a general quality or characteristic, apart from concrete realities, specific objects, or actual instances.



*이것은 실제로 dictioary.com의 두 번째 정의이지만 유용한 정의입니다.

즉, 개인을 구성하는 모든 세부 사항을 무시하고 공통 속성과 행동에만 집중합니다.

이 시리즈의 처음 두 게시물을 읽으면 이미 친숙하게 들릴 것입니다. 수업에 포함할 내용을 정확하게 파악하는 방법이기 때문입니다!

그러나 추상화는 그보다 훨씬 더 깊습니다. 아니면 더 얕게 말해야 할까요?

우리는 코드를 다루기 때문에 개체를 시각적으로 다루지 않을 것입니다. 따라서 객체가 어떻게 생겼는지에 대한 세부 정보조차 불필요할 수 있습니다.

유일한 세부 사항. 따라서 우리가 걱정해야 할 유일한 속성과 동작은 우리가 실제로 사용할 것입니다!

예를 들어 프로그램에서 사람 개체를 사용한다고 가정해 보겠습니다. 이러한 개인 객체는 아마도 사용자를 나타낼 것이므로 프로그램에서 사용될 수 있는 사람/사용자를 추상화합시다.

우리는 아마도 사람을 보지 않을 것이므로 사람의 외모(다리 수, 크기, 머리 색깔 등)와 관련된 모든 것을 생략할 수 있습니다.

상담 프로그램 같은 것이 아니라면 그 사람의 내적 상태와 관련된 것도 생략할 수 있을 것입니다.

사실, 모든 사람/사용자 개체가 공통적으로 가질 필요가 있는 세부 정보를 생각하는 것이 더 빠를 것입니다.

사람들이 가지고 있는 속성 중 하나는 이름입니다. 그리고 그것은 우리 프로그램에 유용할 수 있으므로 사람들을 구별할 수 있습니다.

class Person
    def initialize(name)
        @name = name
    end
end


또한 우리 프로그램의 모든 사람들은 우리 프로그램에서 무언가를 하기를 원할 것이므로 그들이 필요로 하는 행동 세부 사항입니다.

class Person
    def initialize(name)
        @name = name
    end

    def do_something
        # does something in the program
    end

end


그게 다라고 생각합니다.

막대기 그림과 마찬가지로 필요하다고 판단되면 더 많은 것을 추가할 수 있지만 앱에 관한 한 사람은 "무언가를 수행하는 이름이 있는 것"처럼 단순할 수 있습니다.

이제 추상적입니다!

결론



코딩은 적을수록 좋습니다. 현실 세계에서 모든 쓸모없는 세부 사항을 추상화함으로써 실제로 유용한 것만 모델링할 수 있습니다.

좋은 웹페이지 즐겨찾기