객체지향프로그래밍(28) - 이론적 배경(1) - 객체지향의 4대 특성

객체 지향의 4대 특성에 대해 이해.

Featured image

🔚 짧게 하는 복습

✅ 1. friend 키워드의 정의와 활용을 안다.

✅ 2. friend 키워드가 어떤 점에서 위험한 지 안다.

혹시 기억이 안 난다면, 다시 돌아가자


오늘부터는 조금 가벼운 마음으로 들어도 될 듯하다.

중요한 내용은 맞지만, 이론적 배경이기 때문에 키보드에서 손을 떼고 천천히 읽어보면 될 듯하다.

이번 시간에 다룰 내용은 객체지향의 4대 특성이다.


캡슐화

다루었던 내용이기에, 가볍게 복기를 해보자.

캡슐화클래스 내 맴버 변수와 메소드를 하나로 묶고, 실제 구현 내용을 내부에 감추어 은닉하는 것을 숨기는 것을 말한다.

어떤 동작이 있는지만 안다면 구현내용과 무관하게 작성할 수 있게 한다.

캡슐화를 쉽게 말하면 사용자가 필요한 부분만 노출하고, 알 필요가 없는 부분을 숨기는 것이다.

이러한 특징이 가지는 장점으로는 보안 강화, 유지보수 용이, 모듈화로 인한 재사용성이 있다.

  1. 보안 강화 : 클래스의 접근 제어를 통해 민감한 정보에 대한 외부 접근을 막을 수 있다.

  2. 유지보수 용이 : 객체의 내부 구현과 무관하게 외부에서는 객체의 메소드만 호출하기에, 내부 구현이 바뀌어도 전체 코드를 바꿔야 하는 일은 일어나지 않는다.

  3. 모듈화와 재사용성 : 모듈이란 특수한 동작을 하는 코드 단위로 대표적인 것으로는 함수클래스가 있다. 클래스 자체가 모듈이 되기 때문에 다른 부분에서 쉽게 재사용될 수 있다.


추상화란?

다음으로 추상화현실 세계의 무엇을 단순화하여 클래스로 모델링하는 과정을 말한다.

당연히 현실 세계의 모든 내용을 클래스로 표현할 수는 없다.

이 과정에서 필요한 행동과 변수만 추려서 클래스로 만드는 과정은 불가피하고, 이를 추상화라고 한다.

추상화의 장점으로는 복잡성을 감소시키고, 제대로 추상화했다면 메소드 간의 중복되는 역할이 없을 테니 메소드 자체의 재사용성 증가, 어떤 메소드만 수정 해야한다면 그 메소드만 수정하면 되기 때문에 유지보수의 용이 등이 있다.


상속이란?

상속이란 하위 클래스(자식 클래스)라는 새로운 클래스를 상위 클래스(부모 클래스)를 이용해 생성하는 방법이다.

이는 상위 클래스의 모든 변수와 메소드를 하위 클래스에서 사용할 수 있는 특징이 있다.

그리고 상위 클래스에서 많이 상속시켜서 하위 클래스를 여러 개 만들어도, 상위 클래스는 변하지 않는 특징이 있다.

가장 큰 장점은 중복된 코드를 피할 수 있다는 점에서 재사용성이 좋다.

그리고 상위 클래스의 기능만 수정하면, 하위 클래스의 모든 기능이 한 번에 수정된다는 점에서 유지보수도 좋다.

하지만 단점도 있는 법, 클래스의 계층 구조를 알아야 하므로 상속이 많아지면 복잡성이 커진다.

그 말은 한눈에 봤을 때 이해하기 힘들어지기에, 가독성이 떨어진다는 말이 된다.

그리고 모든 변수와 메소드를 상속받기에, 쓸데없는 특성을 받아야 하거나 호출 시간이 길어질 수도 있다.

그래서 상속을 할 때는 신중해야 한다.

오히려 유지보수 측면에서 복잡해질 수도 있으므로, 너무 많은 상속은 피하도록 하자.


다형성이란?

하나의 인터페이스가 여러 가지 임무를 수행할 수 있는 것다형성이라고 한다.

가상 함수와 다형성을 이용하면 코드의 유연성을 높이고 재사용성을 높여준다.

그리고 하나의 코드로 읽히기 때문에, 가독성과 유지보수 차원에서도 도움이 된다.

보통은 함수 및 연산자 오버로딩, 오버라이딩, 동적 바인딩 등으로 구현된다.


4대 특성의 공통적 장단점

결국은 4대 특성의 공통점으로는 실제 세계의 반영유지보수에 의의가 있다.

최대한 그 실제 세계의 모습을 추상화해서 간단하게 나타내고, 그 객체들의 관계가 is-a 구조가 있다면 상속으로 나타낸다.(주로 has-a는 집합이나 합성으로 나타낸다.)

그리고 그 프로그래밍에서 필요한 속성이 추가될 때마다, 전체를 건들기보다는 필요한 부분만 노출 (캡슐화), 확장하는 유지보수의 이득을 노리려고 다형성을 나타낸다.

반면에 공통적인 단점이 있다면, 그 상속, 다형성이나 추상화가 너무 심해지면 시간적 혹은 공간적 손해가 나타날 수 있다.

또, 어떤 메소드가 어떤 역할을 하는지 읽기 힘들어져, 가독성이 떨어지게 된다.


📖 오늘의 핵심(다 알기 전까지는 넘어가지 말자❗)

✅ 1. 4대 특성 중 캡슐화와 그 장단점을 안다.

✅ 2. 4대 특성 중 추상화와 그 장단점을 안다.

✅ 3. 4대 특성 중 상속과 그 장단점을 안다.

✅ 4. 4대 특성 중 다형성과 그 장단점을 안다.