객체 지향이란?
-소프트웨어 개발
1970년대 이전 |
1970대 이후 |
체계적인 계획이나 설계 없이 필요할 때마다 한 개씩 개발 낮은 생산성 시스템 성능저하, 통합의 어려움 | 구조적 개발 방법이 등장 소프트웨어를 단위 모듈로 분할해서 내려가며 전체 프로그램의 구 조를 세부로 나눈 다음 각 부분을 구현 및 통합을 통해 시스템 개발 프로그램의 논리와 데이터를 분리해서 개발 요구사항 추가와 변화 등으로 인한 유지 보수의 어려움 |
-객체 지향
1980년대 중반 이후 시스템 규모가 커지고 복잡해지면서 구조 적 개발 방법의 한계를 극복할 수 있는 대안으로 인식되기 시작 현실 세계에 존재하는 실체 및 개념들을 객체라는 독립된 단위 로 구성, 이 객체들의 상호작용을 통해 전체 시스템이 운영되는 개념 인간이 사고하는 방식대로 소프트웨어를 개발 |
객체 지향 설계의 개념
class
-Data + Method
objects
-클래스의 인스턴스
Gun mygun;
mygun=new Gun();
mygun.size=10;
객체 지향 설계의 개념
강건성 |
예상치 못한 입력을 다룰 수 있는 능력 |
적응성 |
환경의 변화의 따라서 진화할 수 있는 능력 이식성과 연결된다. |
재사용성 |
다양한 애플리케이션의 다른 시스템의 컴포넌트로 재사용될 수 있는 능력 |
객체 지향 설계의 원칙 -추상화
- 명세와 구현을 분리하는 것
- 어떤 영역에서 필요로 하는 속성이나 행위를 추출하는 작업
- 추상화 개념을 사용하지 않은 경우에는 각각의 개체를 구분
객체 지향 설계의 원칙 -캡슐화
- 정보은닉
- 외부 세계로부터 자세한 구현을 은폐하는 것
응집도 |
결합도 |
한 모듈 내부의 처리 요소들 간의 기능적 연관도 -클래스나 모듈 안의 요소들이 얼마나 밀접하게 관련되어 있는지를 나타냄 |
한 모듈과 다른 모듈 간의 상호 의존도 또는 연관 관계 -어떤 기능을 실행하는데 다른 클래스나 모듈들에 얼마나 의존적이지를 나 타냄 |
-정보 은닉의 필요성
소프트웨어는 결합이 많을수록 많은 문제가 발생
한 클래스가 변경이 발생하면 변경된 클래스의 비밀에 의존하는 다른 클래스들도 변경해야 할 가능성이 커진다.
객체 지향 설계의 원칙 -일반화
일반화 관계는 객체지향 프로그래밍 관점에서는 상속 관계라 지 칭한다.
일반화(상속)을 속성이나 기능의 재사용 관점에서만 보 는 것은 극히 제한된 관점
일반화 시키는 방법
1. 자식 클래스에 부모 클래스의 인스턴스를 참조하는 속성을 만든다. (this 로 초기화)
2. 서브 클래스에 정의된 각 메서드에 1번 필드를 참조하도록 변경.
3. 서브 클래스에서 일반화 관계를 제거하고 위임 필드에 super의 객체를 생성해 대입.
4. 서브 클래스에서 사용된 슈퍼 클래스의 메서드에도 위임 메서드를 추가
5. 컴파일하고 달 작동하는지 확인
댓글과 공감은 필자에게 큰 힘이 됩니다. ↓↓↓로그인 필요 없습니다↓↓↓ 광고 클릭 |
'프로그래밍 > 디자인패턴' 카테고리의 다른 글
(디자인패턴) 모델링/UML (0) | 2018.12.07 |
---|