Microsoft PowerPoint - 13_UMLCoding(2010).pptx

Similar documents
소프트웨어공학개론 강의 11: UML 코드매핑 최은만동국대학교컴퓨터공학과

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

제11장 프로세스와 쓰레드

Design Issues

PowerPoint Presentation

Microsoft PowerPoint - 2강

PowerPoint 프레젠테이션

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

gnu-lee-oop-kor-lec06-3-chap7

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

Microsoft PowerPoint - Lect04.pptx

Spring Data JPA Many To Many 양방향 관계 예제

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

PowerPoint 프레젠테이션

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

JUNIT 실습및발표

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

소프트웨어공학개론 강의 7: 시퀀스다이어그램 최은만동국대학교컴퓨터공학과

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

Network Programming

PowerPoint Presentation

PowerPoint Presentation

설계란 무엇인가?

Microsoft PowerPoint - 06_ClassDiagram(2010).ppt [호환 모드]

유니티 변수-함수.key

Microsoft PowerPoint - Chapter 6.ppt

오버라이딩 (Overriding)

JAVA PROGRAMMING 실습 05. 객체의 활용

비긴쿡-자바 00앞부속

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

09-interface.key

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04_OOConcepts(2010).pptx

rmi_박준용_final.PDF

어댑터뷰

5장.key

슬라이드 1

PowerPoint Presentation

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

쉽게 풀어쓴 C 프로그래밍

K&R2 Reference Manual 번역본

07 자바의 다양한 클래스.key

제8장 자바 GUI 프로그래밍 II

PowerPoint Presentation

Microsoft PowerPoint - 14주차 강의자료

PowerPoint Presentation

Microsoft PowerPoint 장강의노트.ppt

소프트웨어공학개론 강의 5: 객체지향개념 최은만동국대학교컴퓨터공학과

01-OOPConcepts(2).PDF

No Slide Title

02 C h a p t e r Java

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

No Slide Title

Spring Boot/JDBC JdbcTemplate/CRUD 예제

ThisJava ..

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

슬라이드 1

JAVA PROGRAMMING 실습 09. 예외처리

자바 프로그래밍

JMF3_심빈구.PDF

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345])

자바GUI실전프로그래밍2_장대원.PDF

교육자료

4장.문장

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

Microsoft Word - java19-1-midterm-answer.doc

PowerPoint Template

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - additional06.ppt [호환 모드]

슬라이드 1

PowerPoint Presentation

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

gnu-lee-oop-kor-lec10-1-chap10

Microsoft PowerPoint - 06-Chapter09-Event.ppt

Microsoft PowerPoint - lec2.ppt

JVM 메모리구조

Microsoft PowerPoint - RMI.ppt

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

chap x: G입력

17장 클래스와 메소드

05-class.key

chap10.PDF

JAVA PROGRAMMING 실습 07. 상속

Spring Boot

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Transcription:

LECTURE 13 설계와코딩 최은만, CSE 4039 소프트웨어공학

설계구현매핑 UML 설계도로부터 Java 프로그래밍언어로의매핑과정설명 정적다이어그램의구현 동적다이어그램의구현 최은만, CSE 4039 소프트웨어공학 2

속성과오퍼레이션의구현 Student - name : String #d department t: String Sti packageattribute : long + addschedule (theschedule: Schedule, forsemester: Semester) + hasprerequisites(forcourseoffering: CourseOffering) : boolean # passed(thecourseoffering: CourseOffering) : boolean + 는 public, -는 private, # 은 protected Public boolean은 true, false 리턴 메소드바디는빈칸 public class Student private String name; protected String department; long packageattribute; public void addschedule (Schedule theschedule; Semester forsemester) public boolean hasprerequisites(courseoffering forcourseoffering) protected boolean passed(courseoffering 최은만, thecourseoffering) CSE 4039 소프트웨어공학 3

클래스변수와오퍼레이션 class Student Student - nextavailid : int = 1 private static int nextavailid = 1; + getnextavaiiid() : int public static int getnextavaiiid() Staticti 으로선언되어야할클래스변수와클래스오퍼레이션은클래스에속하는어떤다른객체에서도접근가능 인스턴스변수는클래스의객체가생성될때객체마다생성되나 Static 으로선언한클래스변수와오퍼레이션은클래스수준의정의 최은만, CSE 4039 소프트웨어공학 4

유틸리티클래스 전역변수와오퍼레이션의그루핑 인스턴스로만들지않아야함. 따라서 Static 클래스안의여러메소드를외부에서호출할것임 ( 따라서 static) Static 선언은메소드가객체이름이아니라클래스이름으로호출됨 <<utility>> MathPack -randomseed : long = 0 -pi : double = 3.14159265358979 +sin (angle : double) : double +cos (angle : double) : double +random() : double void somefunction()... mycos = MathPack.cos(90.0);... import java.lang.math; import java.util.random; class MathPack private static randomseed long = 0; private final static double pi = 3.14159265358979; public static double sin(double angle) return Math.sin(angle); static double cos(double angle) return Math.cos(angle); static double random() return new 최은만, CSE 4039 소프트웨어공학Random(seed).nextDouble(); 5

상속 User +email:string +notify(msg:string) LeagueOwner +maxnumleagues:int public class User private String email; public String getemail() return email; public void setemail(string value) email = value; public void notify(string msg) //... /* Other methods omitted */ public class LeagueOwner extends User private int maxnumleagues; public int getmaxnumleagues() 최은만, CSE 4039 소프트웨어공학 return maxnumleagues; public void setmaxnumleagues (int value) maxnumleagues = value; /* Other methods omitted */ 6

연관관계 양방향연관 두클래스가같은패키지안에있어야 양방향은두클래스가서로상대편객체를알고있어야하므로서로를알기위한 public 메소드와 private 변수가있어야 // no need to import if in same package Schedule class Schedule public Schedule() //constructor private Student thestudent; Student class Student t public Student() private Schedule theschedule; 최은만, CSE 4039 소프트웨어공학 7

방향성연관 단방향연관 Student t 객체가 Schedule e 객체를알아야. Student t 객체는 Schedule 객체의클라이언트 다른클래스의객체를만들수있어야 Schedule class Schedule public Schedule() Student class Student public Student() private Schedule theschedule; 최은만, CSE 4039 소프트웨어공학 8

연관 Role class Professor Professor instructor public Professor() private CourseOffering thecourseoffering; CourseOffering class CourseOffering public CourseOffering() private Professor instructor; Role 의추가 - 각클래스가다른클래스에대하여알고있어야 CourseOffering 클래스는 public 메소드 CourseOffering() 가있어야하며 private 타입의 Professor 객체를가지고있어야 Professor 클래스는 public 메소드 Professor() 와 private 타입의 CourseOffering 객체를알고있어야함 최은만, CSE 4039 소프트웨어공학 9

CourseOffering 0..4 primarycourses 연관다중도 class CourseOffering public CourseOffering() class Schedule public Schedule() private CourseOffering[] primarycourses = Schedule new CourseOffering[4]; public getcourseoffering() return primerycourse.element(); 다중도의구현 public addcourseoffering(courseoffering c) primarycourse.add(c); CourseOffering 클래스는 public method CourseOffering() 을 가짐 클래스 Schedule에는네개의 CourseOffering 객체를가질수있는배열또는리스트가있어야함 최은만, CSE 4039 소프트웨어공학 10

재귀연관 prerequisites 0.. * import java.util.vector; Course class Course public Course() // The unbounded multiple association // is stored in a vector private Vector prerequisites; 클래스 Course는자기자신에속하는객체와연관 Vector 는 java.util 에있는클래스로객체의배열을관리 Vector 타입의객체에는 copyinto, elementat, contains, insertelementat, addelement 등의메소드적용 최은만, CSE 4039 소프트웨어공학 11

집합관계 Schedule 0..* class Schedule public Schedule() private Student thestudent; import java.util.vector; 1 class Student t Student public Student() private Vector theschedule; Student 클래스는 Vector 리스트타입의클래스를선언 집합을위한생성자는따로없음. 객체의배열로취급 집합관계의구현은연관관계와차이가없음 최은만, CSE 4039 소프트웨어공학 12

합성관계 Schedule 0..* class Schedule 이부분은집합관 public Schedule() 계와동일 private Student thestudent; import java.util.vector; 1 class Student t Student public Student() private Vector theschedule = new Vector(); Java는 containment by value 지원하지않음 theschedule 클래스는 Student 클래스가생성 최은만, CSE 4039 소프트웨어공학 13

Interface, Realize 관계 <<Interface>> Serializable interface Serializable <<entity>> Schedule class Schedule implements Serializable UML 의 realize 관계와매칭되는 implement 구문이있음 Java 클래스는여러개의인터페이스를구현할수도있음 Java 의경우속성을정의할수도있음 최은만, CSE 4039 소프트웨어공학 14

다중상속 overlapping Land Vehicle <<realize>> <<Interface>> IVehicle <<realize>> <<Interface>> IWaterVehicle Amphibious Vehicle... interface IWaterVehicle : extends IVehicle... class AmphibiousVehicle extends LandVehicle implements WaterVehicle Java 는단일상속만허용. 하지만다중인터페이스의구현으로같은효과를낼수있음 최은만, CSE 4039 소프트웨어공학 15

추상클래스 Animal abstract +talk() abstract abstract class Animal public abstract void talk(); class Tiger extends Animal Lion Tiger public Tiger() +talk() +talk() public void talk() 추상클래스는인스턴스가만들어지지않는클래스 최은만, CSE 4039 소프트웨어공학 16

파라미터클래스 Tn:int T, Set insert(t) remove(t) template <T, n> class Set Vector T[100]; public insert(t const &d); punlic remove(t const &d); <<bind>> <float, 100> mysetoffloats Set<float, 100> mysetoffloats; Java 는파라미터클래스를지원하지않음 최은만, CSE 4039 소프트웨어공학 17

패키지 Package package com.abc.library; class ClassA. 패키지는관련있는클래스또는인터페이스들을그루핑한것 서브시스템이될수있음 클래스들을효율적으로관리하기위함 계층적구조 패키지안에선언된다른클래스는 import 하지않아도사용가능 최은만, CSE 4039 소프트웨어공학 18

서브시스템 ICourseCatalog <<subsystem>> CourseCatalog getcourseofferings() : CourseOfferingList package CourseCatalog; public interface ICourseCatalog public CourseOfferingList getcourseofferings(); 파일안에는 public class 한개만가능 최상위클래스는한개 파일이름은이클래스의이름과같게 UML 에서서브시스템과인터페이스관계는 n대n Java는 1대 1 최은만, CSE 4039 소프트웨어공학 19

액티비티다이어그램의구현 액티비티나프로시저안에서수행되어야할액션들의순서를나타냄 제어객체나서브시스템의알고리즘이나제어흐름을나타냄 두가지구현방법 프로그램의위치, 즉프로그램의제어문, 반복문으로액티비티다이어그램의제어흐름을구현하는방법 제어흐름을상태머신으로구현하는방법 최은만, CSE 4039 소프트웨어공학 20

액티비티다이어그램의구현 액티비티다이어그램을코딩하는일반적인규칙 액션상태는메소드호출이나일반계산문장으로구현 제어노드는 if-then-else 문장으로구현 병렬노드는스레드로구현 반복구조는 while 루프로구현 최은만, CSE 4039 소프트웨어공학 21

액티비티다이어그램의구현 최은만, CSE 4039 소프트웨어공학 22

액티비티다이어그램의구현 while (true) amount = 0.0; 0 while (amount < price) wait for a coin; add coin value to amount; show all available soft drink; while (selection is not done) wait for selection from user; if selection is eject coins dispense coins; set selection to done ; else if selection is a valid soft drink dispense change & soft drink concurrently; set selection to done Action 은메소드호출, 분기노드는 if, 포크노드는 thread 로코딩 최은만, CSE 4039 소프트웨어공학 23

상태다이어그램의구현 Inactive 객체의상태다이어그램을구현하는방법 상태다이어그램을클래스로매핑 상태정보를저장하기위한속성추가 이벤트는메소드로상태변화나이벤트의액션은메소드안에탑재 최은만, CSE 4039 소프트웨어공학 24

상태다이어그램의구현 모든상태는상태를나타내는속성의값 상태변화는클래스의메소드 가드는메소드안의조건체크 public void event_n(.) switch (state) case state_k: if (guard_condition_w) state = state_m; perform actions of the transition; break; case state_ v: 최은만, CSE 4039 소프트웨어공학 25

자판기제어객체 상태다이어그램을하나의클래스로구현 상태정보를저장하는 _state 속성추가 class VendingMachineControl int _state; ae; float _amount, _price; static final int WaitingCoin = 1; static ti final int WaitingSelection = 2; static final int DispensingSoftDrink = 3; static final int DispensingChange = 4; static final int EjectingCoins = 5; 최은만, CSE 4039 소프트웨어공학 26

상태초기화 생성자안에서상태변수및기타변수초기화 public VendingMachineControl(float price) _amount = 0; _state = WaitingCoin; _price = price; 최은만, CSE 4039 소프트웨어공학 27

이벤트는메소드로 상태천이와이벤트의액션은메소드안에구현 public void insertedcoin(float coinvalue) if (state == WaitingCoin) amount += coinvalue; if (amount >= price) // fire transition state = WaitingSelection; show available soft drinks; // insertedcoin 최은만, CSE 4039 소프트웨어공학 28

순서다이어그램 순서다이어그램은협력하는객체들사이의메시지교환을나타낸것 메시지는화살표나가는객체에서들어오는객체로메소드호출 메시지를받는객체는제 3 의객체에게하나이상의메시지를호출할수있음 최은만, CSE 4039 소프트웨어공학 29

순서다이어그램의구현 순서다이어그램을코딩하는방법 메시지는메소드의호출로코딩. 객체의생성은생성자 (constructor) t 를호출 메시지를받는객체의클래스안에메소드구현 분기구조는 if-else 문장과같은조건문으로구현 병렬구조는 thread 로구현 최은만, CSE 4039 소프트웨어공학 30

순서다이어그램의구현 메시지가호출당하는클래스안에메소드구현 ClassB ClassC o3; ClassD o4; method1( ) o3.method2(..); o4.method3(..); 최은만, CSE 4039 소프트웨어공학 31