Home

[OOP] 객체지향 사고 프로세스 Chapter_1. 객체지향 개념 소개

객체지향 사고 프로세스

객체지향 사고 프로세스

맷 와이스펠드 지음 / 박진수 옮김

JPUB

목차

객체지향 설계

  • 웹 기반 기술을 개발하기에는 객체지향 기술이 적합하다.

    • 왜?? 이유가 안나와 있다.
  • 객체지향 언어는 캡슐화, 상속, 다형성, 합성 로 정의되어 왔다. 이러한 측면들이 구현되지 않았다면 일반적으로 객체지향 언어가 아닌것으로 간주한다.
  • 객체지향 프로그래밍과 구조적 프로그래밍은 경쟁적인 관계가 아니다. 둘다 아울러서 잘 사용해야 하는 것이다.

객체

  • 객체속성(attribute)과 행위(method)로 구분된다.

    • 속성은 머리 색, 키, 무게 등과 같은 일종의 데이터를 의미한다.
    • 행위는 걷기, 말하기, 호흡 등과 같은 일종의 행위를 의미한다.
  • 객체데이터행위라는 양면을 포함하는 엔터티(entity)다.
  • 객체지향 설계에서 속성과 행위는 한 가지 객체 안에 모두 포함되는 반면에, 절차적 설계나 구조적 설계에서는 속성과 행위가 일반적으로 분리된다.
  • 객체에는 속성을 나타내는 엔터티가 들어 있으며, 행위를 나타내는 메소드가 들어 있다. 하지만 가장 중요한 것은 객체의 멤버에 대한 접근을 제어 할 수 있다는 것이다. 이를 캡슐화라고 하는데, 즉 객체의 데이터에 대한 접근을 제어 할 수 있다는 것이다.
  • 일반적으로 큰 객체를 만들어 많은 작업을 하기보다는 작은 객체를 만들어 특정 작업만 감당하게 하는게 좋다.
  • 객체는 다른 객체의 내부 데이터를 조작해서는 안 된다.

    • gettersetter라는 개념으로 인해서 데이터 은닉이라는 개념이 성립할 수 있다. gettersetter로 객체 데이터에 대한 접근 권한을 제어하는 것이다.

Class

  • 클래스는 객체를 만드는 템플릿 이라는 개념으로 생각하자.
  • 객체가 생성되면 이를 인스턴스화되었다 라고 말할 수 있다. Class가 없다면 객체를 인스턴화 할 수 없다.
  • 좋은 클래스 설계는 좋은 설계의 첫걸음이다.

캡슐화

  • 객체에는 데이터와 행위가 모두 포함되며, 이러한 데이터와 행위 중에 우리가 원하는 것들을 골라 그 밖의 객체로부터 은닉하는 것을 의미한다.
  • 객체 속에 속성뿐만 아니라 행위도 함께 들어 있다는 사실에 기반하여 정의할 수 있는 개념이다.
  • 데이터 은닉은 캡슐화의 주요 부분이다.

인터페이스

  • 클래스 사용자가 클래스와 상호 작용하는 방식을 완전히 설명해야 하는데 일반적으로 이를 메소드를 통해서 구현한다.

상속

  • 상속을 통해 클래스는 그 밖의 클래스들이 지닌 속성과 메서드를 물려 받을 수 있다.
  • 슈퍼 클래스는 부모 클래스라고도 부르고 때때로 기저 클래스라고도 부른다. 상속을 받는 클래스는 이 클래스의 속성과 행위를 물려 받는다.
  • 서브 클래스는 자식 클래스라고도 부르고 파생클래스 라고도 부른다. 이는 슈퍼클래스의 확장체이다.
  • 상속을 많이 하면 할수록 상속 트리가 커질 수 있다. 이 때문에 여러 단계에 걸쳐서 추상화를 해야 하는 경우 많은 개발자들은 상속을 사용하지 않는 경우도 있다.
  • 단일 상속은 하나의 부모클래스만 상속 받을수 있는 것을 말하며, 다중 상속은 여러개의 부모를 들 수 있는 것을 말한다.
  • 상속은 is-a 관계로 말할 수 있을때 사용해야 한다.

다형성

  • 다양한 형상을 의미하는 그리스 단어이다.
  • 비슷한 객체가 다른 방식으로 동일한 메세지에 응답을 할 수 있음을 의미한다.
  • 메소드 오버라이딩(재정의)를 통해서 Class만의 메소드를 구현할 수 있어야 한다는 것이다.

합성

  • 합성은 객체안에 객체가 들어가 있는것을 생각하면 간단한데, 어떤 객체를 다른 객체를 사용해 구축하거나 합성하는 것을 말한다.
  • 합성은 has-a 관계로 말할 수 있을때 사용해야 한다.

위 정리글은 객체지향 사고 프로세스에서 인용한 것입니다.

[ISBN 979-11-90665-21-6]

Loading script...