객체지향 모델링의 기초
실세계를 객체지향으로 모델링
객체와 클래스, 정적구조도
클래스 : 개념
클래스사이의 관계와 객체사이의 링크
다중성
속성 찾기 및 클래스 다이어그램 그리기
실세계(real world)의 개념을 빌려서 생겨난 소프트웨어의 개념은 많 이 있지만, 객체지향이라는 것은 실세계의 개념구조를 그대로 소프 트웨어 구조로 바꾸고 싶다는 요구에 부응
객체지향 모델링의 다이어그램은 실세계를 모델링할 수 있도록 개발
현재로는, 객체지향 프로그래밍언어를 사용하여 기술된 프로그램은 역공학(reverse engineering)함에 의하여 UML의 다이어그램으로 표 현
실세계의 모델링에 대하여 객체지향 모델링기법이 가지는 적응 능력 을 고찰
실세계를 객체지향으로 모델링
3
객체지향의 가장 기초적인 개념은 객체(object)와 클래스(class)
지금 한권의 책(즉, 차세대 소프트웨어공학)이 있게 되는데, 그 구체 적인 것이 객체
각 개념은 우리가 속한 세상에 대한 이해 혹은 중요한 사상
획득한 개념은 우리가 속한 세상의 사물에 대한 이해를 도움
개념이 적용된 사물을 객체
객체와 클래스, 정적구조도
객체는 실체일수도 있고, 추상적인 것 일수도 있음
「책」이라는 인식은 객체지향에서는 클래스
객체는 클래스를 「구체화」한 것
구체화를 영어로 말하면 instantiation
객체지향에서는 이 용어를 인스턴스 생성
객체는 클래스로부터 인스턴스 생성
인스턴스 생성된 것을 인스턴스(instance)라 함
5
「책」은 일반 용어로는 개념
「책」이라는 개념을 객체지향으로 말하면, 「책이라는 이름을 가진 클 래스」
실세계에는 객체가 널려 있는데, 거기에는 개념이 붙어 있는 것이 보통
말로 무엇인가를 설명하고자 하면 개념이 사용
예를 들면, 「도서관에는 책이 있다.」의 「도서관」, 「책」, 「있다」는 개 념
클래스 : 개념
객체지향모델에서는 개념을 아래 같은 방법으로 표현
이 표현방법은 클래스도(class diagram) 가운데에서 사용
두가지 표현을 열거 하였으나 어느 것이든 UML에의한 정식적인 표 현
7
클래스의 속성(attribute)이란, 그 클래스의 객체가 가지는 성질
클래스의 조작(operation)이란 그 객체의 행동(behavior) 및 다른 객 체에 대하여 제공하는 서비스
개념의 정의는 속성이나 조작을 기술하는 것
(b)는, 그 책의 편집자에 대한 보수를 표현
이와 같이 모델링에서는 실제의 개념을 그대로 표현하는 것이 아니 라 어떤 측면의 추출이 이루어짐
책 모델링
9
책 책 책
사람 : 저자 문자열 : 도서명 도서분류 : 도서분류 비용 : 가격
서류싸이즈 : 싸이즈 매수 : 페이지수 폰트 : 폰트 량 : 포인트
문자열 : 도서명 문자열 : 부제목 사람 : 저자 회사 : 출판사 날짜 : 출판년월일 도서분류는 일치하는가
(도서분류) 편집보수료를 계산한다
(a) (b) (c)
모델링을 이해하는 데에 지도는 좋은 예
한국지도라는 것은 한국의 모델이라고 생각
가장 잘 알려져 있는 것은 등고선이 적혀있는 지형도
그러나 수목분표가 적혀있거나 관광정보가 적혀 있는 지도
이런 지도 어느 것이든 실제 존재하는 한국의 어느 측면을 표현
「도서관은 책을 수집하여, 그 열람과 대출을 한다」를 모델링하면 어 떻게 될까?
이 경우에는 도서관이나 책을 모델링하기 위한 문맥
즉, 책을 모델링할 때는 누군가에게 열람되어 대출되는 것을 전제
그리고, 도서관을 모델링하는 경우에는 책을 소유, 열람, 대출서비 스를 제공하는 일을 표현
클래스에 정의되어 있는 속성이나 조작으로부터 모델링의 문맥이나 관점을 어느 정도 추측
그들을 분명하게 표현하고 전달해야만 되는 경우에는 그 클래스도와 대응관계를 가지는 유즈․케이스도(use-case diagram)를 작성
11
클래스 사이 어떤 관계(relation)
관계에는 몇 개의 유형이 있음
•
「나무」와 「단풍나무」의 관계로 대표되는 유형•
한 그루의 단풍나무를 볼 때 「나무가 심겨져 있다」로 인식하는 경우도 있고, 「단풍나무가 심겨져 있다」라고 인식하는 경우도 있음•
단풍나무는 나무의 일종•
이와 같은 관계는 일반화(generalization)관계(나무가 단풍나무를 일반 화 한 것) 또는 계승(inheritance)관계(단풍나무가 나무를 계승한다)•
나무는 단풍나무의 수퍼타입(super type)이라고 표현클래스사이의 관계와 객체사이의 링크
별도의 타입 관계로서, 나무와 흙의 관계
나무는 흙으로부터 물과 양분을 빨아들여서 성장하기도 하고 자신을 유지
일반화 이외의 클래스 사이의 관계는 관련(association)
무관계라는 관계
•
단풍나무와 바다라는 개념 사이에는 실세계를 표현하는 데에 관계를 가 지지 않는 것이 일반적13
다중성 : 두 클래스의 연관관계에서 실제로 연관을 가지는 객체의 수 를 나타낸 것
다중성
• 집합과 복합관계
집합(Aggregation)관계와 복합(Composition)관계 모두 연관관계에 포함되는 개념
집합관계 하나의 객체에 여러 개의 독립적인 객체들이 구성되는 경우
복합관계 더 강한 관계로 구성
엔진은 카뷰레터, 피스톤, 플러그로 구성
엔진의 구성 요소는 더 강한 관계
• 일반화관계
일반화관계는 하나의 종류를 의미
a_kind_of의 관계
일반화관계는 다른 의미로 상속관계라고도 한다.• 의존관계
의존관계 : 하나의 클래스가 또 다른 클래스를 사용하는 관계
다른 클래스의 멤버 함수를 사용하는 경우
하나의 클래스에 있는 멤버 함수의 인자가 변함에 따라 다른 클래스에 영향을 미 칠 때의 관계를 의미
다른 의존관계 수업 → 교수
전화기 → 버튼
세탁기 → 손잡이
자동차 → 기어
속성 찾기 및 클래스 다이어그램 그리기
• 구조적 단계에서는 어떠한 작업을 수행하는가?
• 구조적 모델에 대하여 설명하시오.
• 클래스의 종류에 대하여 설명하시오.
• 클래스와 속성에 대하여 설명하시오.
• 클래스의 관계와 연관에 대하여 설명하시오.
• 클래스 다이어그램을 이용하여 대상물을 모델링하시오.