1. 객체지향의 개념 

재래식 방법과 비교 

재래식 방법 

 기능중심 

 변경의 파급효과 큼 



객체지향 방법 

자료와 관련 함수의 결합 


객체 

정의 

소프트웨어 모듈(객체) = 자료구조 + 함수  


속성 

상태  

능력  

연산(Operation)을  수행할 수 있는 능력 

정체성 

구별 가능성 

객체 인스턴스 

객체 인스턴스(Instance) = 객체  

특징 

비슷한 객체의 구조와 행동은 공통 클래스로 선언 


클래스(Class) vs 인스턴스 (Instance) 

개념 비교 

객체의 타입(Object Type) : 클래스 

클래스에 속하는 개개의 객체 : 인스턴스 


클래스의 속성(Attribute) 

예 - 직원 클래스 

클래스의 의의 

클래스는 객체들이 갖는 속성과 적용 연산을 정의하고 있는 틀(Templet) 

Employee         Hong_kildong(); 

Employee*       Hone_kildong = new Emplyoee(); 


캡슐화(Encapsulation) 

캡슐화의 정의 

관련된 항목을 모아서 캡슐을 씌움 

추상화의 수단 

세부사항은 차후에 생각 

정보은닉(Information Hiding) 

외부의 직접적 접근 불가, 일종의 블랙박스 

구현에 따라 선택 가능 

문법 

 Public 

 Private 

 Protected 

객체 사이의 관계 

객체는 일반적으로 상호작용하여 동작 

객체에 있는 서비스를 호출하면 두 객체는 관계가 맺어져야 함 

상호작용할 필요가 있는지 찾아내는 작업이 필요 

연관 

서로 상대의 존재를 알 수 있도록 관련이 맺어진 것 

서로 알고 접근 가능하게 하는 방법은 여러 가지가 있음 

집합 관계 

전체 개념과 부분 개념 사이의 관계 

격납의 의미 

예 - 디스크 □ 트랙 □ 섹터 


상속(Inheritance) 

의미 

상위 클래스의 속성과 연산을 물려 받음 


슈퍼클래스(Superclass), 서브클래스(Subclass) 

예 - 직원 → 슈퍼클래스 

관리자 → 서브클래스 


복수상속 (Multiple Inheritance) 

두 개 이상의 슈퍼클래스에서 상속 받음 



다형성(Polymorphism) 

정의 

여러 형태를 가지고 있음 = 여러 형태를 받아들일 수 있음 

특징 

같은 이름의 메시지를 다른 객체나 서브클래스에서 호출 

예 - getarea() 를 도형의 모양이 달라도 호출 

메소드 

특정한 클래스를 위하여 오퍼레이션을 구현 

하나 이상의 메소드를 가진 오퍼레이션  

매개변수나 객체가 속한 클래스의 이름으로 구분 


왜 객체지향 방법인가? 

객체지향의 장점 

소프트웨어 위기   1 

시스템을 쉽게 구축할 수 있는 방법  2 

– 문제를 정확히 해결 

– 적절한 작업 

– 유지보수 가능 

– 확장 가능 

– 재사용 가능 

응용문제를 더 쉽게 인식  3 

구현이 덜 복잡해짐  4 

분석과 구현 사이의 차이가 적음  6 

자료구조와 함수의 결합이 자연스러움  5 

의사교환이 효과적인 비주얼 모델링  7 

모델링 과정에 사용자와 개발자 사이에 공통으로 이해할 수 있는 용어와 개념 8 

객체모델을 이해하기 위하여 꼭 프로그래머일 필요 없음  9 

비용의 절감  10 


객체는 이런 장점이 있지만 모든 것을 자동으로 제공하지는 않음


객체지향의 특징 

모형의 적합성 

 객체중심 모형은 우리의 사고 방식과 유사 

 뚜렷하게 구별되는 객체로 나누고 객체들의 메시지 패싱이모여 프로그램이 됨 


재사용 용이 

 Openness, Closeness를 다 갖춘 재사용 단위 

 상속(Inheritance), 다형성(Polymorphism) 


Time – to – Market 

 종래의 폭포수모형은 단계가 길고 문서 작업이 많음 

 클래스의 재사용과 확장에 의한 빠른 개발이 가능 


설계와 프로그램의 매핑 

개발 각 단계의 전환이 자연스럽고 신속 


객체지향 분석과 설계 과정 

분석과 설계 

 요구를 사용 사례로 정리하고 사용 사례 다이어그램을 작성 

 클래스 후보를 찾아내고 개념적인 객체 모형 작성 

 사용 사례를 기초하여 순서 다이어그램을 작성 

 클래스의 속성, 오퍼레이션 및 클래스 사이의 관계를 찾아 객체모형을 완성 

 상태 다이어그램이나 액티비티 다이어그램 등 다른 다이어그램을 추가하여 UML 모형을 완성 

 서브 시스템을 파악하고 전체 시스템 구조를 설계 

 적당한 객체를 찾아내거나 커스텀화 또는 객체를 새로 설계 


객체지향 개발 

특징 

반복 및 점증적 개발 프로세스를 사용 

설계와 구현 작업 사이에 공통의 개념들을 사용하기 때문에 전환이 용이 



Coad / Yourdon법 

사고법, 표기방법이 가장 간결 

초보자 지향형 


Booch법 

도큐먼트 작성에 있어서 관점을 자세하게 규정 

객체지향의 특징을 설계공정에 최대한 반영 

초보자 부적합 



OMT(Object-Modeling Technique)법 

가장 형평성이 우수 

초보자부터 베테랑까지 이용가능, CASE와 연동도 충실 










'소프트웨어공학 > 수업' 카테고리의 다른 글

17. UI 설계(9-1)  (0) 2017.06.15
16. 객체지향 분석 및 설계(8-2)  (0) 2017.06.06
12. 설계(6-2)  (0) 2017.05.30
6. 프로젝트 계획 수립과 관리(3-2)  (0) 2017.05.22
10. 소프트웨어 아키텍처(5-2)  (0) 2017.05.21
Posted by 멜데스