강의 참고자료 15

Download Report

Transcript 강의 참고자료 15

Chap. 10 객체지향 기술(I)
Chap. 10
학습 내용







재래식 방법의 문제점
객체지향 기본 개념
객체지향 개발 단계
문제의 정의
객체지향 분석
객체지향 설계
객체지향 프로그래밍
Chap. 10
2
소개

객체지향이라는 개념


시뮬레이션, 프로그래밍 언어, 인공지능, 데이타 베이스 등 각 분야에서
이미 사용하고 있는 개념
소프트웨어 위기를 해결할 수 있는 대안




reusability
extensibility
C++, Java 언어의 대중화와 함께 많이 사용
기술 추세



Chap. 10
학계: 객체지향 소프트웨어공학, 객체지향 데이타베이스, 객체지향
운영체제, 객체지향 분산처리 등.
업계: 미국 50% 이상의 기업이 객체지향 기술로 이전, 소프트웨어 산업에
획기적인 기술로 받아들이고 있슴.
소프트웨어 구조: OMG CORBA, OLE2/COM, TINA 등.
3
객체지향 기술의 특징

Time-to-market이 짧음



Reuse에 적합



Chap. 10
openness, closeness를 다 갖춘 재사용 단위
모형의 적합성


종래의 폭포수형 모형은 단계가 길고 문서 작업이 많음
클래스의 재사용과 확장에 의한 빠른 개발이 가능
객체 중심 모형은 우리의 사고 방식과 유사
뚜렷하게 구별되는 객체로 나누고 객체들의 메시지 패싱이 모여
프로그램이 됨
개발 각 단계의 전환이 자연스럽고 신속
4
재래식 방법의 문제점

낮은 생산성

조금씩 다른 프로그램을 반복하는 경우가 많음


Reuse 개념



서브루틴의 모임
원시코드의 패키지

예) IMSL
예) 벡터 - initialize, inverse, print,
소프트웨어는 고정적인 것이 아니고 계속 진화됨
변경이 어려움(절차 중심인 경우 더 어렵다)
분석, 설계, 구현이 분리된 과정
분석
(기능적 외형)
Chap. 10
SSI
LSI
유지보수 비용이 큼


Cox의 Software IC
라이브러리에 의한 재사용


예) 심볼 테이블
|
설계
(모듈 구성과 인터페이스)
|
구현
(프로그램 언어)
5
문제의 핵심

분석 단계의 요구가 코드에 너무 자세히 반영
예) 메일 처리 시스템
Message in queue
전화
팩스
LAN
Internet
User terminal
Chap. 10
6
Top-down 설계
Mail Program
Initialization
routines etc.
for( ; ; ) { ....
Mail-item
reception
메일 큐의 구조를
알아야 하는 루틴
Termination
routines
}
User-command
interpretation
Select
Mail-item
Show summary
Delete
Mail-item
Chap. 10
void ShowContent(Mainitem* mailitem)
{
...
switch(mailitem->type)
{
case EMAIL:
ShowContentofEmail(mailitem); break;
case FAX:
DrawPictureofFax(mailitem); break;
...
}
}
Show
content
여러 다른 타입을
구별하여야 하는
루틴
7
기능 중심의 설계
 워드 프로세서의 설계
 절차 중심 설계

우선 기능을 파악




새 문단 추가, 편집(복사, 이동), 맞춤법 검사, 폰트, 그림, 표
자료 구조는 일단 문자열의 버퍼로 시작
기능 위주로 Top-down 분해하여 모듈 설계
자료 형태의 변형이 필요하면 곤란
 자료 중심 설계

자료의 성질을 파악





Chap. 10
문서는 문단의 모임
히프로 구성
문단의 종류(글, 그림, 표)에 관계 없이 처리 가능
소프트웨어의 기능보다는 자료의 변화가 더 큼
“Real systems have no top.”(Meyer)
8
모듈러 프로그램

모듈

자료와 절차를 함께 묶어 Localize하려는 개념
module Mailitems;
exported functions and procedures..
exported data
private data...
private functions and procedures
code for all the functions and procedures
 호출 프로그램이 메일 아이텀의 포인터를 알아야 사용 가능
 여전히 메일 아이텀의 종류를 파악하고 있어야 함

Modular2와의 모듈과 Ada의 패키지 개념
module QUEUESTUFF[Thingy] is
begin ...
x: Thingy;
xt: array[...] of Thingy
...
 패키지는 템플릿
Chap. 10
9
객체지향 기본 개념

절차 중심 방법


기능중심, 변경의 파급효과 큼
프로그램 = 자료구조 + 함수
객체지향 방법

자료와 관련 함수의 결합
객체 = 자료구조 + 함수
프로그램 = 객체 + 객체 + ...
자료
자료
함수
함수1
함수2
함수
함수3
자료
함수
Chap. 10
자료
자료
함수
10
기본 개념
 캡슐화


 정보 은닉
데이타와 관련 함수를 모아
캡슐화
추상화
학
학번
이름
주소
학점
...

접근 제한
생
These things
belong together.
Data
Operations
평점 계산
주소 변경
수강 신청
...
Black box
Chap. 10
11
기본 개념
 Public Interface
Public Interface
Data
Operations
Chap. 10
Class Point {
Public:
Point(short x=0; short y=0);
void Move(int x, int y);
void SetColor(Color z);
...
Private:
short v;
short h;
Color c;
}
12
기본 개념
 클래스
 메시지 교환


Sender
Object
Receiver
Object
common attribute
common behavior
=> collection of objects
예)
<수신객체><함수이름><매개변수>
예) Receiver.method(a, b, c);
box new named ‘네모’
네모 turn 30
네모 grow -15
Employee
name
position
phone
salary
Promote
ChangePhone
ChangeSalary
myPoint.move(10, 50)
Chap. 10
13
기본 개념
 인스턴스
Kildong
Employee
Stack
Heap
Hanguk
Hanguk
Employee Kildong();
Employee* Hanguk = new Employee();
Kildong

Chap. 10
Constructor
Point::Point(short x, short y)
{
h = x; v = y;
}
Stack
frame
14
기본 개념
 상 속(Inheritance)
Mail item
Phone
Mail item
Email
Mail item
Memo
Mail item
ShowContent
PrintMessage
ShowContent
ShowContent

복수 상속
Student
Faculty
Graduate
student
Chap. 10
변수: header, content, type
함수: ShowSummary, ShowContent, Save
Fax
Mail item
ShowContent
DrawPicture
class Fax: public MailItem
{
public: NewFax();
ShowContent();
Save();
private: Compress();
}
15
기본 개념
 추상 클래스



구체적인 인스턴스가 없는 클래스
공통된 데이타와 함수의 집합
공통된 함수만의 집합: 인터페이스
File(Abstract)
Text file
int print();
Chap. 10
Wp file
int print();
file name
file size
virtual int print() = 0;
Graphic file
int print();
16
기본 개념
 다형성(polymorphism)


함수나 변수가 같은 이름으로 여러 가지 목적으로 사용
예
theMailItem->ShowContent();
aFaxIten
From 260-2731
AYX Real Estate
at 12:14pm April 3
aPhoneItem
Receptionist: Jane
Time: 12:35pm
...
Chap. 10
FaxItem의 함수테이블
Fax::ShowContent
Fax::Save()
PhoneItem의 함수테이블
Phone::ShowContent
Phone::Save
17
기본 개념
 Generic Class
Parameterized Class(Int)
Queue
Template(Type)
Queue
append();
delete();
length();
tail();
append();
delete();
length();
tail();
Integer Queue
1, 5, 2, -7
Parameterized Class(Text)
Queue
append();
delete();
length();
tail();
Chap. 10
Character Queue
Kim, Lee, Park
18
객체지향 방법론

분석, 설계, 구현이 점증적으로 일어남
설계
분석
구현


Chap. 10
각 단계의 의미적 차이가 없음
점증적 개발 방식에 가까움
19
객체지향 개발 모형
Planning
• 문제 정의
• 개발 계획
Implementation
• 프로세스 구현
• 사용자
인터페이스 구현
• 단위 시험
Chap. 10
Analysis
• 객체 모형화
• 동적 모형화
• 기능적 모형화
• 사용자 인터페이스
Testing
• 통합 시험
• 검토
Design
• 시스템 설계
• 객체 설계
Post development
• 인수시험
• 설치
20
시스템의 세 가지 측면

객체 모형(Object Model)



동적 모형(Dynamic Model)



시스템의 시간적인 상관 관계
각 객체에 대한 사건 진행 순서(event sequence)를 요약
기능적 모형(Functional Model)

Chap. 10
실 세계의 정적인 구조
실 세계의 객체 클래스와 관계
자료의 변환을 위주로 기술
21
객체지향 개발 중요 작업
1. 문제의 정의
5. 시스템 설계
2. 객체 모델링
6. 객체 설계
3. 동적 모델링
7. 구 현
4. 기능적 모델링
8. 테스트 및 검증
9. 프로젝트 평가
Chap. 10
22
문제의 정의

문제 정의서




내용




문제의 범위
요구
성능에 관한 명세
객체지향에서는 문제정의가 중요


Chap. 10
무엇이 개발되어야 하는지 기술하고 어떻게 개발할 것인지는 피함
문제를 이해하는 시작
고칠 수 없는 문서가 아님
문제 정의서에서 객체나 클래스의 단서를 찾아냄
클래스와 관련된 함수도 찾아낼 수 있음
23
문제 정의시 주의 사항



선언적 문장
긴 문장은 피하고 단순 명료한 문장을 사용
기술될 사항





Chap. 10
필요한 기능
중요 정보와 과정
중요도, 상세도 수준
설계 과정에 필요한 의사결정이 포함되어서는 안됨
상세할 수도 있고 개략적일 수도 있슴
24
현금 자동 지급기

문제 정의
“ 은 행 에 는 창 구 직 원 (Cashier) 도 있 고 현 금 자 동
인출기(Automatic Teller Machine)도 있다. 직원이 쓰는 단말기는
거래 스테이션이라 하며 이들은 은행이 직접 관장하지만 호텔이나
백화점 등에 설치된 현금 자동 인출기는 여러 은행이 공동으로
설치된 것이 많다. 고객은 현금을 인출하기 위하여 구좌 번호와
거래 데이타를 입력시켜야 한다. 현금 인출기는 현금 카드나 신용
카드를 접수하고 사용자와 상호 대화하여 금융기관의
협력체(Consortium)가 소유한 중앙컴퓨터와 통신한 후 인출이
마무리되려면 영수증을 인쇄하고 현금을 내보낸다. 이 시스템은
모든 거래를 기록하고 보안을 유지하여야 한다. 물론 한 구좌에
동시에 접근하는 사용자들을 적절히 다룰 수 있어야 한다. 중앙
컴퓨터에 연결된 각 은행들은 자체 컴퓨터와 구좌 데이타를
보유하고 있으며 중앙 컴퓨터, 은행 컴퓨터, 현금 자동 인출기를
연결하는 금융전산망으로 연결되어 있다."
Chap. 10
25