본문 바로가기
TechNote/소프트웨어 공학(SW)

012. 객체 지향

by 도지웅 2022. 10. 1.
반응형

1. 객체지향의 개념

가. 객체지향(Object)의 정의

  • 프로그램에서 사용하기 위하여 데이터와 연산을 캡슐화와 정보은닉으로 묶는 방법
  • 데이터는 속성(Attribute)으로 연산은 메서드(Method)로 구현됨

나. 객체지향(Object Oriented)의 정의

  • 실세계의 개체(Entity)를 속성(Attribute)과 메서드(Method)가 결합된 형태의 객체(Object)로 표현하는 개념에 바탕을 두는 소프트웨어 설계 및 개발 방법

다. 객체지향의 등장 배경

구조적 기법의 문제점 객체지향
- 데이터와 프로세스의 분리
- 이해와 유지보수의 어려움
- 프로세스 중심 접근 방법으로 재사용성의 한계
- 외부환경 변화에 대처가 어려움
- 대규모 시스템 개발 및 유지보수 비효율적
-데이터와 프로세스의 캡슐화
- 자연스럽고 이해가 용이
- 재사용성, 융통성, 확장성
- 요구사항 변경에 유연한 대응
- 프로토타이핑, 시뮬레이션에 용이

 

2. 객체지향의 주요 특징

가. 캡슐화(Encapsulation)

   1) 캡슐화의 정의

  • 데이터와 연산을 합께 묶음으로서 데이터를 보호하려는 방법
  • 정보은닉의 확장 개념으로 객체의 내부적인 사항과 객체들 간의 외부적인 사항을 분리하여 사용자에게 상세한 구현을 감추고 필요한  사항만 보이게 하는 원칙을 의미

   2) 캡슐화의 주요 특징

  • 소프트웨어 유지보수 생산성이 증대
  • 재사용성이 높은 소프트웨어 모듈의 개발
  • 정보은닉으로 내부 자료에 대한 일관성 유지
  • 객체 간의 통신을 인터페이스를 이용하여 모듈 간의 종속성을 최소화함

나. 상속성(Inheritance)

   1) 상속성의 정의

  • 상위 클래스의 속성과 메서드를 하위 클래스에서 재정의 없이 물려받아 사용하는 개념

   2) 상속성의 주요 특징

  • 재사용성 향상, 객체지향의 조직화 방법임
  • 중복이 제거되며, 유지보수 효율성이 증대됨
  • Domain의 표현 방법이 자연스러움
  • 프로그램의 확장성 우수

   3) 상속성의 종류

종 류 상 세 내 용
단일 상속 - 부모와 자식 클래스간의 관계가 수퍼 클래스와 서브 클래스로 유지되는 관계
다중 상속 - 하나의 클래스가 하나 이상의 수퍼 클래스로부터 상속을 받는 것
- 복잡성을 증대 시키는 요인이 됨
반복 상속 - 같은 조부모 클래스로부터 상속 받은 두 부모 클래스로부터 상속 받는 것
- 최종 자식 클래스는 조부모 클래스의 모든 것을 두 번 상속 받음
선택 상속 - 서버 클래스는 수퍼 클래스로부터 메소드의 일부만 상속
- Public과 Protected에 해당하는 속성과 메소드는 상속 받으나 Private에 해당하는 속성과 메소드는 상속 받지 않음

 

다. 다형성(Polymorphism)

   1) 다형성의 정의

          - 동일한 메시지에 대해서 복수 개의 클래스가 반응하는 것으로 객체지향의 핵심 기본 중의 하나임

   2) 다형성의 종류

단 계 상 세 내 용
형 강제 변환 - 서로 다른 형으로 한 변수의 형을 강제로 바꾸어 사용
연산자 다중 정의 - 특정 형의 데이터에 대해서 정의된 연산을 다중적으로 정의

라. 추상화(Abstraction)

   1) 추상화의 정의

          - 불필요한 부분을 생략하고 객체의 속성과 가장 중요한 것에만 중점을 두어 개략화 시킨 시스템 기술서

   2) 추상화의 주요 특징

          - 객체가 어떠한 기능을 수행할 것인가에 초점을 맞추어 기술

          - 공통된 성질을 추출하여 슈퍼 클래스를 설정

   3) 추상화의 종류

종 류 상 세 내 용
기능 - 절차언어 : 함수와 같은 서브 프로그램을 정의
- 객체지향 : 메소드를 정의
자료 - 절차언어 : 추상 자료형을 정의
- 객체지향 : 객체가 속하는 클래스를 설정
제어 - 제어행위에 대한 효과 등을 정의 하는 것

 

반응형

댓글