추상화 (Abstraction) 와 상속 (Inheritance)

Seonhee Kim·2023년 4월 25일

study

목록 보기
3/18

추상화

사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것. 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념

개념설명

  • 세상에 있는것을 본따 클래스를 만들고 그 클래스의 상태와 행동을 부여한 객체를 만든다. 그러나 세상 모든것을 다 각각의 클래스에 담아 객체를 만드는것은 불가능하다.
  • so -> 추상적으로 큰틀의 클래스 구현, 공통 요소, 필수 요소가 들어갔으면 하는 바램에 만든것이 추상클래스.
  • 이 공통요소, 특징을 추출하는 과정 === 추상화
* 추상화 예시

1. 벤츠, 아우디, 티코 등등 우리가 생각하는 여러 종류의 자동차가 있다. 
이것을 다 클래스화하고 변수와 메서드 등을 개별적으로 만드는 것은 무모한 짓이다. 
(즉,확장성 때문에 추상화할 필요가 있다.)

2. 방금 나열한 자동차들의 공통적인 요소나 특징을 추출하는 과정인 추상화를 거쳐 요소를 끄집어 내면 바퀴, 핸들, 차문, 유리창 등 필수적인 부품이 있다.

3. 차라면 필수적으로 필요한 메서드 추출 : 바퀴는 굴러가고, 핸들은 돌아가고 차문은 열려야한다  etc

	이러한 과정이 추상화하는 과정이다. 
	이렇게 추상적으로 끄집어 낸 개념들을 큰 틀에서 클래스로 만든것이 추상클래스

------------------------------------------------------

이를 객체와 클래스의 관점에서 보면,

객체 : 실제 그 모습 , (아우디, 미니쿠퍼 쿠페 etc)
클래스 : 객체들이 어떤 특징들이 있어야 한다고 정의하는 추상화된 개념 (car)

추상화를 하는 이유

추상화를 통해 잘 설계가 되었다면, 여러개의 클래스를 정의했을때 중복 코드가 현저히 줄어든다.

  • 잘 만들어진 슈퍼클래스 덕분에 코드 재사용성이 증가
  • 코드 간결해짐 -> 생산성 증가, 가독성 증가, 에러 감소, 유지 보수시 시간 단축

상속

하위클래스를 정의하는데 상위 클래스를 사용한 것 <->추상화

부모 클래스의 멤버 변수와 메소드를 자식 클래스가 재사용하는 개념.
상위클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념
기존 클래스에 기능을 가져와 재사용 + 새로운 클래스에 새로운 기능 추가 가능

상속 예시

고양이 클래스와 강아지 클래스 / 고양이와 강아지는 모두 포유류에 해당한다.
포유류는 여러 속성들이 정의되어 있는데 고양이와 강아지는 포유류의 이런 속성들을 갖고 있다.
하지만 아주 많은 속성이 다르기 때문에 좀 더 디테일하게 고양이, 강아지로 종을 나눈것이다.

포유류라는 클래스는 고양이와 강아지 클래스에 속성들을 물려준다. = 상속 
포유류와 고양이 포유류와 강아지 클래스는 상속 관계에 있다고 한다.
profile
안녕하세요 ~_~

0개의 댓글