잡다한 배똥월드

728x90

 

 

 

1. 정의

  • 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있는 기법을 말함
  • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되어 사용되고 있음
  • 소프트웨어의 재사용 및 확장이 용이 => 고품질의 소프트웨어를 빠르게 개발 가능, 유지보수 쉬움
  • 복잡한 구조를 단계적 · 계층적으로 표현하고, 멀티미디어 데이터 및 병렬 처리를 지원함
  • 현실 세계를 모형화함 => 사용자와 개발자가 쉽게 이해 가능
  • 주요 구성 요소와 개념 : 객체, 클래스, 캡슐, 상속, 다형성, 연관성

 

 

 

 

2. 객체(Object)

  • 데이터와 데이터를 처리하는 함수를 묶어 놓은 캡슐화한 하나의 소프트웨어 모듈
  • 데이터(= 속성, 상태, 변수, 상수, 자료구조) : 객체가 가지고 있는 정보로 속성이나 상태, 분류 등을 나타냄
  • 함수(= 메소드, 행위, 서비스, 동적, 연산) : 객체가 수행하는 기능. 객체가 갖는 데이터를 처리하는 알고리즘, 객체의 상태를 참조하거나 변경하는 수단이 되는 것
  • 독립적으로 식별 가능한 이름을 가지고 있음
  • 상태(State) : 객체가 가질 수 있는 조건 => 시간에 따라 변함
  • 객체와 객체는 상호 연관성에 의한 관계가 형성됨
  • 객체가 반응할 수 있는 메시지(Message)의 집합을 행위라고 하며, 객체는 행위의 특징을 나타낼 수 있음
  • 객체는 일정한 기억장소를 가지고 있음
  • 객체의 메소드는 다른 객체로부터 메시지를 받았을 때 정해진 기능을 수행함

 

 

 

 

3. 클래스(Class)

  • 공통된 속성과 연산(행위)을 갖는 객체의 집합으로 객체의 일반적인 타입(Type)을 의미
  • 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀
  • 객체지향 프로그램에서 데이터를 추상화하는 단위
  • 인스턴스(Instance) : 클래스에 속한 각각의 객체들
  • 인스턴스화(Instantiation) : 클래스로부터 새로운 객체를 생성하는 것
  • 동일 클래스에 속한 각각의 객체들은 공통된 속성과 행위를 가지고 있으면서 그 속성에 대한 정보가 서로 달라서 동일 기능을 하는 여러 가지 객체를 나타내게 됨
  • 슈퍼 클래스(Super Class) = 특정 클래스의 상위(부모) 클래스
  • 서브 클래스(Sub Class) = 특정 클래스의 하위(자식) 클래스

 

 

 

 

4. 캡슐화(Encapsulation)

  • 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶은 것을 의미
  • 캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은폐(정보 은닉)되어 외부에서의 접근이 제한적이기 때문에 외부 모듈의 변경으로 인한 파급 효과가 적음
  • 캡슐화된 객체들은 재사용이 용이
  • 인터페이스가 단순해지고, 객체 간의 결합도가 낮아짐

 

 

 

 

5. 상속(Inheritance)

  • 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
  • 상속을 이용하면 상위 클래스의 모든 속성과 연산을 다시 정의하지 않고서도 즉시 자신의 속성으로 사용 가능
  • 상속받은 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용 가능
  • 객체와 클래스의 재사용, 즉 소프트웨어의 재사용(Reuse)을 높이는 중요한 개념
  • 다중 상속(Multiple Inheritance) : 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속 받는 것

 

 

 

 

6. 다형성(Polymorphism)

  • 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력을 의미
  • 객체들은 동일한 메소드명을 사용하며 같은 의미의 응답을 함
  • 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것

 

 

 

 

7. 연관성(Relationship)

  • 두 개 이상의 객체(클래스)들이 상호 참조하는 관계를 말함
  • is member of : 연관화(association) : 2개 이상의 객체가 상호 관련되어 있음을 의미
  • is instance of : 분류화(Classfication) : 동일한 형의 특성을 갖는 객체들을 모아 구성하는 것
  • is part of : 집단화(Aggregation) : 관련 있는 객체들을 묶어 하나의 상위 객체를 구성하는 것
  • is a
    1. 일반화(Generalization) : 공통적인 성질들로 추상화한 상위 객체를 구성하는 것
    2. 특수화/상세화(Specialization) : 상위 객체를 구체화하여 하위 객체를 구성하는 것

 

 

 

 

 

728x90

+ Recent posts