객체지향 (OOP)

[추상화] abstraction

고인돌개발자 2021. 5. 3. 23:46

학습목표 : 단어의 뜻을 통해 객체지향의 추상화를 이해한다.

 

1. 추상화 언어 정의

    - 추상 : 추상 1  : 명사 심리 여러 가지 사물이나 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용.
    - 추상화 : 추상화 2  [추상화]
      명사 미술 사물의 사실적 재현이 아니고 순수한 색채에 의한 표현을 목표로  그림. 일반적으로는 
      대상의 형태를 해체한 입체파 등의 회화도 포함한다.

 

2. abstraction 영어정의

An abstraction isageneralidearatherthanonerelatingtoaparticularobject,person,orsituation.

 

3. 자바에서 추상화는 

   - class 를 통해 지원한다. OOP 의 추상화는 모델링이다.

   - 자바는 class 를 통해 프로그램을 설계한다.

   - 해당 클래스를 통해 탄생하는 무엇인가를 우리는 객체=클래스의 인스턴스라 부른다.

 

4. Class vs Object 

   그랜저는 자동차다
   뽀로로는 펭귄이다

   비둘기는 새다

   홍길동은 사람이다.

   * 클래스는 개념이며 실체가 아니다. 그래서 추상적이다. 그래서 클래스는 추상적이다.
     위의 객체는 대체적으로 나이 or 연수/제조일자가 있다. 즉 실제가 있다. 
     그래서, 클래스라는 집합/분류에서 실제 존재가 나타나는것이다.
     클래스 vs 객체 단순 감별법 
     나이 or 제조일자가 어떻게 되나요? 답할 수 있으면 객체, 없으면 클래스    

 

5. 상속개념 정의

    Java 에서 상속은 Inheritance (재산산속) 과 같은 개념으로 이해되지 않는다.
    Java 에서 상속은 extends (확장)의 개념으로 이해된다.
     

    is a  -> is a kind of
    하위클래스 is a kind of 상위클래스

    ex) 펭귄 is a 동물 (X)    , 펭귄 is a kind of 동물 (O)
         비둘기 is a 조류 (X) , 비둘기 is a kind of 조류 (O)

 

    객체 지향의 상속은 상위 클래스의 특성을 재사용하는 것이다.
    객체 지향의 상속은 상위 클래스의 특성을 확장하는 것이다.

    객체 지향의 상속은 is a kind of 관계를 만족해야 한다.

    

6. 인터페이스 정의 

위키피디아 | 인터페이스(interface)는 자바 프로그래밍 언어에서 클래스들이 구현해야 하는 동작을 지정하는데 사용되는 추상 자료형이다. 이들은 프로토콜과 비슷하다. 인터페이스는 interface라는 키워드를 사용하여 선언하며, 메소드 시그너처와 상수 선언(static과 final이 둘 다 선언되는 변수 선언)만을 포함할 수 있다. 자바 8 미만의 모든 버전을 기준으로 인터페이스의 모든 메소드는 구현체(메소드 바디)를 포함하고 있지 않다.

영영사전

  The interface between two subjects or systems is the area in which they affect each other or have links with each other.

명사 usu n N COMPUTING
If you refer to the user interface of a particular piece of computing software, you are talking about its presentation on screen and how easy it is to operate.

 

  • 구현 클래스 is able to 인터페이스
  • 구현 클래스는 인터페이스를 할 수 있다.
  • 새는 날수 있다.

상위 클래스는 하위 클래스에게 물려줄 특성이 많을 수록 좋을까? 적을수록 좋을까?
 -> 물려줄 특성이 많을 수록 좋다. (LSP 리스코프 치환 원칙)

인터페이스는 구현을 강제할 메서드가 많을수록 좋을까? 적을수록 좋을까?
-> 적을수록 좋다. (ISP 인터페이스 분할 원칙)

 

7. 상속 vs 인터페이스

<상속 vs 인터페이스>

 

참고서적 : 스프링 입문을 위한 자바 객체 지향의 원리와 이해

stractionbstraction