반응형
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) 추상화의 종류
종 류 | 상 세 내 용 |
기능 | - 절차언어 : 함수와 같은 서브 프로그램을 정의 - 객체지향 : 메소드를 정의 |
자료 | - 절차언어 : 추상 자료형을 정의 - 객체지향 : 객체가 속하는 클래스를 설정 |
제어 | - 제어행위에 대한 효과 등을 정의 하는 것 |
반응형
'TechNote > 소프트웨어 공학(SW)' 카테고리의 다른 글
014. 디자인 패턴 (0) | 2022.10.01 |
---|---|
013. 관점 지향 프로그래밍 (Aspect Oriented Programming) (0) | 2022.10.01 |
011. 소프트웨어 역공학 (0) | 2022.10.01 |
010. 3R (Reverse Engineering, Re Engineering, Re Use) (0) | 2022.10.01 |
009. 모듈화 (0) | 2022.10.01 |
댓글