[CS]객체지향이란?

Intro

상속을 복습하던 중, 객체지향과 객체지향의 특징을 한 번에 정리하려 한다.

객체와 클래스

  1. 클래스란 객체를 정의해둔 것으로, 객체를 생성하는 데 사용된다.

  2. 객체란 클래스를 통해 생성되는 인스턴스이며 실제로 존재하는 것을 SW세계에 구현할 대상이다.

객체지향이란?

객체지향언어란 프로그램을 다수의 객체로 만들고 이들끼리 서로 상호작용하도록 만든 언어이다.

객체지향 언어 특징

1. 캡슐화

  • 캡슐화란, 클래스의 내부 변수와 메소드를 하나로 패키징하는 것을 말한다.
  • 캡슐화를 통해 정보은닉을 가능하게 한다.
    • 정보은닉이란, 객체의 내부 구현을 숨김으로써 객체가 반드시 정해진 메소드를 통해 상호작용하도록 유도한다.
    • 정보은닉은 클래스 속성들을 private로 접근제어자를 설정하고 클래스 밖에서 함부로 건드리지 못하게 하는 것이다.
    • 대신, getter와 setter 메소드를 통해서만 접근이 가능하다.
  • 캡슐화를 통해 높은 응집도, 낮은 결합도를 유지하여 유연함과 유지보수성을 증가시킨다.

2. 다형성

  • 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 특징을 말한다.
  • 오버라이딩과 오버로딩을 예로 들 수 있다.(별도 정리할 예정)

3. 상속

  • 상속이란, 부모클래스의 속성, 메소드를 자식클래스가 이어받는 것을 말한다.
  • 자식클래스는 extends 키워드를 통해 상속받은 부모클래스의 모든 멤버변수 및 메소드를 승계하여 자신의 것처럼 쓸 수 있다.
    • 이 때, 부모클래스에서 private로 선언했다면 사용할 수 없다.
  • 기능의 일부분을 변경해야 할 경우 상속받은 자식클래스에서 해당 기능만 다시 수정하여 사용할 수 있게 한다.
  • 동일한 코드에 대해 유지보수 및 재사용에 용이하다.
  • 자바의 경우 단일상속만 지원하는데, 이 때 다중상속의 장점을 구현하기 위해 ‘인터페이스(interface)’를 사용한다.

4. 추상화

  • 추상화란, 공통된 특징을 묶어 하나의 클래스로 정의하는 것을 말한다.
    • 다른 차종이지만 동일하게 바퀴, 문, 핸들, 창문 등의 요소를 갖고 있다. 이렇게 서로 다른 객체(차종)이지만 공통된 특징과 기능을 지니고 있다는 것을 알 수 있고 이러한 공통점을 모아 하나의 ‘자동차’라는 범주, 즉 ‘클래스’로 묶을 수 있다.