[정보처리산업기사] 21강 객체지향(Object-Oriented)

DongHo Im·2022년 1월 21일
0

정보처리산업기사

목록 보기
21/86

1. 객체지향의 개요

현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있는 기법

  • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 사용

  • 구조적 기법의 문제점

    • 유지보수 고려하지 않고 개발 공정에만 집중
    • 개발이 시작된 이후 추가적인 요구사항에 대응하기 어려움
    • 재사용이 어려워 이전에 개발한 소프트웨어와 유사한 소프트웨어를 다시 개발할 때도 시간과 인력이 동일하게 소모
  • 소프트웨어의 재사용 및 확장 용이, 고품질의 소프트웨어를 빠르게 개발, 유지보수 쉬움

  • 복잡한 구조를 단계적 ㆍ계층적으로 표현, 멀티미디어 데이터 및 병렬 처리 지원


2. 객체(Object)

데이터와 데이터를 처리하는 함수를 묶어 놓은(캡슐화한) 하나의 소프트웨어 모듈

  • 데이터

    • 객체가 가지고 있는 정보로 속성이나 상태, 분류 등을 나타냄
    • 속성(Attribute), 상태, 변수, 상수, 자료 구조라고도 함
  • 함수

    • 객체가 수행하는 기능, 객체가 갖는 데이터(속성, 상태)를 처리하는 알고리즘
    • 객체의 상태를 참조, 변경하는 수단이 되는 것으로 메소드(Method, 행위),
      서비스(Service), 동작(Operation), 연산이라고도 함
    • ex) 계산기 객체: 계산기의 색깔 - 데이터 / 연산기능 - 함수

객체의 특성

  • 독립적으로 식별 가능한 이름을 가지고 있음
    • 자동차는 번호판으로 다른 자동차 객체와 구별된다.
  • 객체가 가질 수 있는 조건을 상태(State)라고 함. 일반적으로 상태는 시간에 따라 변함
    • 자동차는 '정지', '이동'등의 상태가 존재하며 고정된 것이 아니라 시간에 따라 변화한다.
  • 객체와 객체는 상호 연관성에 의한 관계가 형성
    • 화재 발생 시 소방차, 구급차, 경찰차는 긴밀하게 협조하여 화재를 진압 및 환자를 이송하며 교통을 정리하는 관계가 형성
  • 객체가 반응할 수 있는 메시지의 집합을 행위라고 함. 객체는 행위의 특징을 나타낼 수 있음
    • 자동차 객체는 '가속 페달을 밟는' 행위를 하며 '가속'하는 특징을 나타내고, '브레이크를 밟는' 행위를 하면 '감속' 하는 특징을 나타낸다.
  • 일정한 기억장소를 가지고 있음
    • 자동차는 주차장에 있거나 도로 위에 있거나, 일정한 물리적 공간을 점유한다.
  • 메소드는 다른 객체로부터 메시지를 받았을 때 정해진 기능 수행

3. 클래스(Class)

공통된 속성과 연산(행위)을 갖는 객체의 집합, 객체의 일반적인 타입(Type)을 의미

  • 클래스에 속한 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀

  • 클래스에 속한 각각의 객체를 인스턴스(Instance)라고 함

  • 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화(Instantiation)라고 함

  • 동일 클래스에 속한 각각의 객체들은 공통된 속성과 행위를 가지고 있으면서, 그 속성에 대한 정보가 서로 달라 동일 기능을 하는 여러 가지 객체를 나타내게 됌

  • 최상위 클래스는 상위 클래스를 갖지 않는 클래스를 의미

  • 슈퍼 클래스(Super Class)는 특정 클래스의 상위(부모) 클래스를 의미

  • 서브 클래스(Sub Class)는 특정 글래스의 하위(자식) 클래스를 의미


4. 캡슐화(Encapsulation)

데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미

  • 캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은폐(정보 은닉)되어 외부에서의 접근이 제한적이기 때문에 외부 모듈의 변경으로 인한 파급 효과 낮음

  • 캡슐화된 객체들은 재사용이 용이함

  • 인터페이스가 단순, 객체 간의 결합도가 낮아짐


5. 상속(Inheritance)

이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스(자식 클래스)가 물려받는 것

  • 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 즉시 자신의 속성으로 사용

  • 하위 클래스는 상속받은 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용할 수 있음

  • 객체와 클래스의 재사용, 즉 소프트웨어의 재사용(Reuse)을 높이는 중요한 개념

  • 다중 상속(Multiple Inheritance): 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것


6. 다형성(Polymorphism)

객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력

  • 객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미의 응답을 함

  • 응용 프로그램 상에서 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 함

ex) '+' 연산자의 경우 숫자 클래스에서는 덧셈, 문자 클래스에서는 문자열 연결 기능으로 사용


7. 연관성(Relationship)

두 개 이상의 객체(클래스)들이 상호 참조하는 관계를 말한다.

1. is member of

  • 연관화: 2개 이상의 객체가 상호 관련되어 있음을 의미함

2. is instance of

  • 분류화: 동일한 형의 특성을 갖는 객체들을 모두 모아 구성하는 것

3. is part of

  • 관련 있는 객체들을 묶어 하나의 상위 객체를 구성하는 것

4. is a

  • 일반화: 공통적인 성질들로 추상화한 상위 객체를 구성하는 것
  • 특수화 / 상세화: 상위 객체를 구체화하여 하위 객체를 구성하는 것
profile
[DATABASE] 비전공자 출신의 개발 도전!

0개의 댓글