본문 바로가기
프로그래밍/디자인패턴

(디자인패턴) 객체지향 /추상화,일반화

by Cloud_Park 2018. 12. 7.

객체 지향이란? 


-소프트웨어 개발

 1970년대 이전

1970대 이후 

 체계적인 계획이나 설계 없이 필요할 때마다 한 개씩 개발 


낮은 생산성


  시스템 성능저하, 통합의 어려움

 구조적 개발 방법이 등장


소프트웨어를 단위 모듈로 분할해서 내려가며 전체 프로그램의 구 조를 세부로 나눈 다음 각 부분을 구현 및 통합을 통해 시스템 개발 


프로그램의 논리와 데이터를 분리해서 개발 


요구사항 추가와 변화 등으로 인한 유지 보수의 어려움



-객체 지향

 1980년대 중반 이후 시스템 규모가 커지고 복잡해지면서 구조 적 개발 방법의 한계를 극복할 수 있는 대안으로 인식되기 시작


현실 세계에 존재하는 실체 및 개념들을 객체라는 독립된 단위 로 구성, 이 객체들의 상호작용을 통해 전체 시스템이 운영되는 개념 


인간이 사고하는 방식대로 소프트웨어를 개발




객체 지향 설계의 개념

class

 -Data + Method


objects

 -클래스의 인스턴스


Gun mygun;

mygun=new Gun();

     mygun.size=10;




객체 지향 설계의 개념

 강건성

 예상치 못한 입력을 다룰 수 있는 능력 

 적응성

 환경의 변화의 따라서 진화할 수 있는 능력

 이식성과 연결된다.

 재사용성

 다양한 애플리케이션의 다른 시스템의 컴포넌트로 재사용될 수 있는 능력




객체 지향 설계의 원칙 -추상화 

 - 명세와 구현을 분리하는 것

 - 어떤 영역에서 필요로 하는 속성이나 행위를 추출하는 작업

 - 추상화 개념을 사용하지 않은 경우에는 각각의 개체를 구분



객체 지향 설계의 원칙 -캡슐화

 - 정보은닉

 - 외부 세계로부터 자세한 구현을 은폐하는 것

응집도 

 결합도

 한 모듈 내부의 처리 요소들 간의 기능적 연관도


  -클래스나 모듈 안의 요소들이 얼마나 밀접하게 관련되어 있는지를 나타냄 

 한 모듈과 다른 모듈 간의 상호 의존도 또는 연관 관계


  -어떤 기능을 실행하는데 다른 클래스나 모듈들에 얼마나 의존적이지를 나 타냄



 -정보 은닉의 필요성

  소프트웨어는 결합이 많을수록 많은 문제가 발생 

  한 클래스가 변경이 발생하면 변경된 클래스의 비밀에 의존하는 다른 클래스들도 변경해야 할 가능성이 커진다.




객체 지향 설계의 원칙 -일반화

 일반화 관계는 객체지향 프로그래밍 관점에서는 상속 관계라 지 칭한다. 

 일반화(상속)을 속성이나 기능의 재사용 관점에서만 보 는 것은 극히 제한된 관점


JAVA 객체지향 디자인 패턴] 2. 객체지향 원리 / 추상화, 캡슐화, 일반화, 위임, 다형성, 피터 코드의 상속 규칙,


일반화 시키는 방법


1. 자식 클래스에 부모 클래스의 인스턴스를 참조하는 속성을 만든다. (this 로 초기화)
2. 서브 클래스에 정의된 각 메서드에 1번 필드를 참조하도록 변경.
3. 서브 클래스에서 일반화 관계를 제거하고 위임 필드에 super의 객체를 생성해 대입.
4. 서브 클래스에서 사용된 슈퍼 클래스의 메서드에도 위임 메서드를 추가
5. 컴파일하고 달 작동하는지 확인







댓글과 공감은 필자에게 큰 힘이 됩니다. 



↓↓↓로그인 필요 없습니다↓↓↓ 

광고 클릭 


'프로그래밍 > 디자인패턴' 카테고리의 다른 글

(디자인패턴) 모델링/UML  (0) 2018.12.07