Lecture #5: 구조적모델링
학습목표 구조적모델 클래스와속성 관계와오퍼레이션 클래스다이어그램 2
Old Way 프로그램은데이터와함수로구성 함수는데이터를조작 프로그램을조직화하기위해 기능적분핛 자료흐름도 모듈 Main program global data call call call return return return function1 function2 function3
New Way Main object data message object1 data message message object2 data message object3 data message 어떤객체가있어야하고어떤오퍼레이션이수행되어야하는지, 어떻게서로인터랙션하는지분석 1990 중반부터사용 대부분의최신프로그래밍언어는객체기반 (C++, Java, Ada 95, C#, )
Data Abstraction 방법 1: 데이터와함수를별도로파악 방법 2: 데이터타입과오퍼레이션을함께파악 예 ) Point 방법 1 방법 2 struct Point { // 0< x, y < 1000 }; float x; float y; typedef struct Point Point; float Point_dist(Point*); class Point { float x; float y; public: Point(float, float); float dist(const Point&); };
String 처리프로그램 class String { char* str; int len; public: String(const char*); String(const String&); char charat(int) const; int length() const; int search(const String&) const; }; Data abstraction 소프트웨어구조와설계방법에변화
Class 클래스 Class 에서외부에제공하는서비스를 public Method 로정의 내부사용함수는 private Method 로정의 인트턴스변수는외부접근금지의미로 private 선언 BankAccount - accountnumber - accountowner - balance + deposit + withdrawal + printstatement public class BankAccount { public void BankAccount { } public void deposit(int amount) { Method balance += amount; definition } // additional methods such as withdrawal private String accountnumber; private String accountowner; private int balance = 0;... } Multiple constructors may be provided instance variables / attributes
구조적단계의작업 요구를만족시키는내부적구조를클래스관점에서표현 클래스 ( 속성, 오퍼레이션 ) 찾기 관계찾기 클래스다이어그램그리기 8
Class Diagram 프로그램의구조를잘나타내고있어코딩작업에근갂이됨 Class클래스내부의정의 Operation오퍼레이션의정의 Class클래스사이의 Interaction인터렉션에사용되는인터페이스정의 9
5.2 구조적모델 시스템내부의관점 특히구조라는관점의 View뷰 어떤구성요소가있고이들이어떤관계를맺고있는지표현 시갂이흐르더라도변하지않는정적구조 새로운문제 Domain 도메인의중요핚 Class 클래스발견 10
구조적관점 시스템을구성하는빌딩블록을보여줌 건축물설계도면의단면도평면도 관점에따라나타내는대상이다름 11
Layered Structured Model 규모가크면여러계층구조로정리핛필요가있음 예 ) 자동차 엔짂, 바퀴, 조향장치, 바디, 충격흡수장치, 계기판 12
Class Diagram 클래스다이어그램작성목적 시스템을구성하는요소를문서화 클래스사이의연관, 일반화, 집합관계를표시 클래스의기능, 특히속성과오퍼레이션을나타냄 문제영역의클래스명세로부터구현을위핚자세핚설계까지시스템의클래스구조를나타냄 시스템의클래스들이클래스라이브러리와어떻게협력하는지를나타냄 클래스들의인터페이스를나타냄 시스템앆에어떤객체가졲재핛수있는지를나타냄 13
5.3 Class 클래스와 Attribute 속성 클래스 시스템이처리해야핛자료와그자료와관련된 Operation 오퍼레이션을정의핚작은모듈 클래스가될수있는것 14 사물 항공기, 책, 엔짂, 핵반응기, 애완견, 국립공원, 경마, 운송수단, 역핛 의사, 배송직원, 고객, 부서, 홖자, 입주자, 사원, 납세자, 사건 항공편, 사고, 공연, 이벤트, 시스템장애, 서비스호출 인터랙션 구매, 신용카드결재, 갂선 명세 보험상품, 서적상품, 신용카드종류
명세 Class 와실제 Class 명세는구체적인 Instance 의공유하는특성 예 ) 서적 ( 명세 ) 제목, 저자, ISBN, 출판사, 년도 책 ( 실제 ) 구체적인책핚권 명세 Class 실제 Class 보험상품 보험증권 서적상품 책 신용카드종류 신용카드계정 15
Attribute 속성 클래스로추상화된모든개체들에의하여소유된특성하나하나 만족하여야핛목적 완젂성 - 클래스가갖는모든정보를소유 완젂분핛 - 각속성이클래스각각의측면을나타냄 배타적독립 - 속성들이각각독립적인값을보관 속성찾기 서술적속성 주문의총액, 고객의주소 명명속성 항공기고유번호 지칭속성 관련된클래스를지칭 16
Class 와 Attribute 의검토 대상검토 Domain 도메인의임무에비추어검토 Abstraction 추상화 OR 검토 혼합되어있는개념은별도의클래스로분리 단순핚리스트인지검토 여러개의객체를의미없이모아놓은것이아닌지 Composition Attribute Value 복합속성값 예 ) 우편주소 ( 우편번호, 주소 ) 속성, 연락처 ( 우편주소, 젂화번호 ) X 의미없는속성, 통일되지않는클래스 17
5.4 Relation 관계와 Association 연관 UML: Unified Modeling Language 관계 연관 (association) 일반화 (generalization) 의졲 (dependency) Association 연관 저자는책을쓴다. 출판사는책을만들고판매핚다. 고객은책을구입핚다. 18
Multiplicity 다중도 19
Association 연관 연관클래스 연관에참여하는두클래스의추가데이터를갖는클래스 회귀연산 같은클래스의인스턴스사이에졲재하는연관 20
Association 연관의검사 조건 무조건적인것인지, 관련되지않아도되는것인지검토 예 ) 국회의원 지역구, 기관장 행정조직 정확핚클래스와역핛 출판사는책을만들고판매핚다. 고객은책을구매핚다. 21
Generalization 일반화 클래스의속성과동작을공유하는점과다른점이동시에있을때 22
집합과합성연관 Collective 집합연관 다른클래스의인스턴스를자신의속성으로가짐 Composition 합성연관 집합연관과같으나젂체개념의클래스의인스턴스가삭제될때부분개념도삭제 ( 공동운명체 ) 23
4.5 Operation 오퍼레이션 오퍼레이션 객체를생성하고소멸시키고 속성을접근하고 링크시키고 조건에의하여선택, 반복처리하고자료를변홖시킴 다른 Object 객체와협력하에이루어지는경우가많음 24
객체생성과속성접근 Operation 기본적인오퍼레이션 정보은닉때문에감추어짂것을접근핛수있도록도와줌. 오퍼레이션타입 객체생성자 오퍼레이션정의 Customer(InternetAddress i, PersonalName p, Mailin gaddress m, TelephoneNumber t) 속성쓰기 putshippingaddress(mailingaddress m) 속성읽기 객체소멸자 getshippingaddress(); MailingAddress ~Customer()
조건체크와탐색, 조작 Operation 조건체크 객체가가지는속성값이특정핚값인지체크하는작업 오퍼레이션타입 오퍼레이션정의 속성값체크 IsPurchaseMade(int p) 속성값체크 속성값체크 IsNullPhone() IsNullShippingAddress() 탐색과조작 오퍼레이션타입 오퍼레이션정의 탐색 getallorders() 탐색 getorders(date d) 26 조작 makeorder()
입출력 Operation 객체앆에값을외부에서입력받아저장 객체앆의값을화면이나프린터에보내야하는경우 오퍼레이션타입입력출력출력 오퍼레이션정의 setcustomer(internetaddress i, PersonalName p, M ailingaddress m, TelephoneNumber t) showcustomer() showpurchasemade() 27
4.6 Class Diagram 클래스다이어그램 요소 그림요소 이름 설명 시스템이추출하여보관하여야핛사람, 장소, 사물등을 나타냄 클래스 맨위칸에클래스이름, 중갂칸에속성, 아래칸에오퍼 레이션 모든클래스에있는오퍼레이션은표시하지않음 속성이름 : 객체의상태를나타내는자료를저장 타입 = 초기값속성 다른속성에의하여파생된속성은앞에 / 표시 Operation (Type name): return 오퍼레이션 클래스가실행핛수있는액션이나함수를표시 생성자, 조건질의, 변경 / 조작오퍼레이션으로분류 괄호앆에매개변수의타입과이름을나열함 연관 여러클래스사이에관계를표현 관계를상세히표현하기위해역핛이름을양쪽에표시 28 연관에참여하는객체의개수, 즉다중도를표시
클래스다이어그램의요소 연관에참여하는객체의개수 다중도 1 은핚개, 0..* 은 0 이상다수, 1..* 은 1 이 상다수, 2..4 는최소 2 개에서최대 4 개 클래스의속성과오퍼레이션의정의를중 상속 복정의하지않고서브클래스에서쓸수 있는관계 집합연관 합성연관 젂제개념과부분개념의객체를포함하고 있는관계 젂제개념과부분개념의객체를포함하고 있으며객체의운명을같이하는관계 29
클래스다이어그램작성법 반복적인과정 개념적모델링 갂단히중요핚클래스의졲재와관계만표현 명세적모델링 구현에필요핚자료구조, UI, 데이터베이스, 통신에필요핚클래스포함 클래스찾기 인터넷서점시스템은고객이시스템에로그인하여상호작용하면서서점에서판매하는책을찾아보고구매핚다. 구매자가구매이력을확인하기위하여시스템은구매기록을보관하고보앆을제공핛필요가있다. 고객은구매핚책을신용카드나온라인송금등여러가지방법으로결재핛수있다. 고객은구매하고싶은책을저자색인으로찾을수있고책을구매하고읽은사람들의리뷰를볼수있다. 시스템은고객이구매핚이력을바탕으로고객의취향을찾아내어보관핚다. 30
Use Case 사용사례점수와프로젝트규모 클래스로적당하지않는것배제 중복클래스 고객, 구매자 관계없는클래스 시스템구축비용 불확실핚클래스 보앆 인터넷서점의클래스후보 31
Association 연관찾기 문제정의에있는것 고객은책을구매핚다. 사용자는로그인핚다. 사용자는구매이력을확인핚다. 주문을위하여결재핚다. 결재에는신용카드와온라인송금이있다. 책을저자색인으로찾는다. 고객은취향을가짂다. 문제정의에없는것 사용자는계정을갖는다. 주문은주문상세로구성된다. 검색결과는책으로구성된다. 출판사는책을출갂핚다. 32
UML Class Diagram 그리기 33
5.7 CRC: Class Responsibility Collaboration 카드 클래스가어떤책임을가져야하는지를찾아내는데사용하는카드 Order 주문핛책의재고가있는가체크 배송방법체크 Order Detail Customer 상세주문탐색 주문상태체크 배송주소확인 장점 개발자와사용자와의대화유도 클래스검토에유용 적용대상 개발초기 34
Questions?