[OOP]객체지향 용어 정리(추상화/캡슐화/다형성)

chaewon Im·2022년 2월 14일
0

공부 기록✏️

목록 보기
7/15

클린코드의 객체와 자료구조 챕터를 읽는데, 헷갈리는 용어가 많이 나왔다. 객체지향 프로그래밍 과목을 들었지만 배운지 오래돼서, 정확한 개념이 가물가물 한 용어가 이렇게 3가지 있었다. 내용 이해를 하기 위해 헷갈리면서 동시에 중요한 개념들을 다시 한번 정리했다.


1.추상화

복잡한 자료,모듈,시스템 등에서 핵심적인 개념/기능을 간추려 내어 이름을 붙히는 것을 말한다. 클래스를 정의하는 것을 추상화라고 얘기할 수 있다. 공통적으로 가지는 속성이나 기능을 묶어 이름 붙힌 포괄적인 객체이기 때문이다. 이 때 각각의 세부사항은 제거하여 단순하게 만든다.

ex) 물고기, 사자, 토끼, 뱀 ...

=> 공통적으로 숨을 쉰다, 스스로 움직인다 등의 특징을 가진다. 이들을 묶어 '동물'이라는 개념으로 추상화할 수 있다. 이 때 털이 있는지, 다리가 4개인지, 지느러미가 있는지 등의 세부사항은 제거한다.

추상화의 과정

  • 공통점을 찾아 일반화한다.

    • 숨을 쉰다.
    • 스스로 움직일 수 있다.
  • 특징의 세부 사항을 제거하여 단순하게 한다.

    • 다리가 네 개 있다.
    • 몸에 털이 있다.
      => 제거

2.캡슐화

정보의 은닉을 위해 내부 데이터를 캡슐처럼 감싸서 숨기는 것을 말한다. 외부에서 직접 데이터에 접근하는 것을 막는 것이다.

ex)자동차의 캡슐화

자동차->외부:사람, 내부:엔진 원리 등
사람은 자동차의 인터페이스에 해당하는 핸들, 브레이크, 계기판 등을 통해 자동차를 움직이고 상태를 확인할 수 있다. 이 때 계기판에 나타나는 상태 등은 외부에서 보여져도 되는 데이터이다.그러나 내부에서 동작하는 엔진 작동의 원리 등은 외부에 보여져서는 안되기 때문에, 감싸서 숨겨지도록 만든다.

캡슐화에 성공하면 자연스럽게 정보의 은닉화도 이룰 수 있다.

3.다형성

부모 클래스에서 물려받은 가상 함수를 자식 클래스 내에서 오버라이딩 하여 사용하는 것. 하나의 클래스나 메소드가 다양한 방식으로 동작 가능하다는 것을 의미한다. 같은 메소드의 매개변수에 따라 다르게 동작한다. 즉, 메소드를 동적으로 호출하도록 만드는 것이다.

오버라이딩, 오버로딩, 함수형 인터페이스(자바) 등을 통해 다형성을 구현할 수 있다.

오버라이딩

상위 클래스의 메소드를 하위 클래스에서 재정의 하여 사용하는 것이다. 여기에는 부모 클래스의 메소드를 그대로 전달받아 사용하는 '상속'의 개념이 추가된다. 같은 클래스를 다양하게 사용할 수 있으므로 다형성이다.

오버로딩

매개변수만 다른 여러개의 메소드를 정의한다. (매개변수로 배열을 넣을 때, 문자열을 넣을 때 등등) 여러 종류의 타입을 받아들여 동적으로 호출하므로,다형성이라고 할 수 있다.


<참고 자료>
https://ramees.tistory.com/50
https://88240.tistory.com/228
https://tecoble.techcourse.co.kr/post/2020-10-27-polymorphism/

profile
빙글빙글 FE 개발자

0개의 댓글