슬라이드 1

Similar documents
PowerPoint Presentation

JAVA PROGRAMMING 실습 08.다형성

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

PowerPoint Presentation

PowerPoint Presentation

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

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

PowerPoint 프레젠테이션

PowerPoint Presentation

C++ Programming

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 2강

쉽게 풀어쓴 C 프로그래밍

제11장 프로세스와 쓰레드

Design Issues

PowerPoint 프레젠테이션

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

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

예제 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

PowerPoint 프레젠테이션

C++ Programming

Network Programming

PowerPoint 프레젠테이션

PowerPoint Template

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

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

C++ Programming

No Slide Title

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

슬라이드 1

Microsoft PowerPoint - Lect04.pptx

No Slide Title

Microsoft PowerPoint - Java7.pptx

유니티 변수-함수.key

Microsoft PowerPoint - 04_OOConcepts(2010).pptx

PowerPoint Presentation

Microsoft Word - EEL2 Lab4.docx

JVM 메모리구조

JAVA PROGRAMMING 실습 02. 표준 입출력

어댑터뷰

PowerPoint Template

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

JAVA PROGRAMMING 실습 07. 상속

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

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

설계란 무엇인가?

Microsoft PowerPoint - CSharp-10-예외처리

Spring Boot/JDBC JdbcTemplate/CRUD 예제

PowerPoint Presentation

PowerPoint Presentation

C++ Programming

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

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

Microsoft PowerPoint 장강의노트.ppt

5장.key

Slide 1

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µå

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

PowerPoint Presentation

슬라이드 1

Microsoft PowerPoint - 13_UMLCoding(2010).pptx

PowerPoint Presentation

Microsoft PowerPoint - chap11

PowerPoint 프레젠테이션

01-OOPConcepts(2).PDF

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

05-class.key

슬라이드 1

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

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

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

PowerPoint Presentation

Cluster management software

Blog

Microsoft PowerPoint - java2 [호환 모드]

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

ThisJava ..

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

(Microsoft PowerPoint - hci2-lecture12 [\310\243\310\257 \270\360\265\345])

JUNIT 실습및발표

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

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

17장 클래스와 메소드

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

오버라이딩 (Overriding)

JAVA PROGRAMMING 실습 09. 예외처리

쉽게 풀어쓴 C 프로그래밍

[ 프로젝트이름 ] : Project_Car [ 프로젝트를만든목적 ] : 임의의자동차판매소가있다고가정하고, 고객이원하는자동차의각부분을 Java 를이용하여객 체로생성하고, 그것을제어하는메소드를이용하여자동차객체를생성하는것이목표이다. [ 프로젝트패키지와클래스의내용설명 ] [

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

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

Transcription:

4 장클래스다이어그램 구성요소 객체와클래스 클래스추출 한빛미디어 ( 주 )

학습목표 클래스의개념과구성요소를이해한다. 클래스추출과관계를학습한다. 관계를코드로이해한다. 2

학습목표 클래스의구성요소 클래스이름 (class name) 공통의속성, 메서드 ( 오퍼레이션 ), 관계, 의미를공유하는객체들의집합에대한기술이다. 속성 (attributes) 클래스의구조적특성에이름을붙인것으로구조적특성에해당하는인스턴스가보유할수있는값의범위를기술한다. 메서드 (method) 오퍼레이션이라고도하며, 이름, 타입, 매개변수들과연관된행위를호출하는데요구되는제약사항들을명세하는클래스의행위적특징이다. [ 그림 4-1] 클래스구성요소 3

Section 01 구성요소 클래스의구성요소 클래스구성요소 : 클래스이름, 속성, 메서드 [ 표 4-1] 메서드의종류와기호 4

Section 01 구성요소 클래스 (class) 객체들을추상화한개념이다. 예 ) 학용품 객체 (object) 실제현실에서존재하는사물을의미한다. 예 ) 연필, 볼펜, 지우개 인스턴스 (instance) 클래스에서완성된객체예 ) 붕어빵틀에서만들어진붕어빵 [ 그림 4-2] 붕어빵기계와붕어빵 ( 클래스와객체의관계 ) [ 그림 4-3] 클래스와객체와의관계 5

Section 01 구성요소 예제 : 다음의다이어그램은하나의계좌에입금되는클래스 (Account) 와객체를생성하여실행하는메인메서드를포함하는클래스 (Application) 로구성 [ 그림 4-4] 연관관계의종류 위의클래스다이어그램을 그려보자. 6

Section 01 구성요소 명세서에서클래스추출하기 명세서를통한클래스추출 : 배구선수, 점수, 세트, 경기 명세서를통한객체추출 : 리베로, 센터, 후위, 공격수 명세서를통한메서드추출 : 토스, 스파이크, 리시브, 이긴다, 진다, 올라간다. 7

Section 03 클래스추출 명세서에서클래스추출하기 명세서 ( 시나리오 ) 상에서클래스나속성또는메서드의추출은 명사 : 클래스나속성 (Attribute) 동사 : 메서드 어떤것이클래스가되고, 어떤것이속성이되느냐는 DB 설계시에엔티티와필드의관계처럼설계자가판단해서어떻게구분해서사용하는게더나은지에따라 클래스 와 속성 으로추출 8

Section 03 클래스추출 배구경기를예로한클래스추출명세서를통한클래스추출 : 배구선수, 점수, 세트, 경기명세서를통한객체추출 : 리베로, 센터, 후위, 공격수명세서를통한메서드추출토스, 스파이크, 리시브, 이긴다, 진다, 올라간다. [ 그림 4-6] 배구에관한클래스다이어그램 9

연관관계 연관관계는클래스가서로개념적으로연결된선을의미한다. 예를들어축구팀과선수와의관계를살펴보자. 선수는한팀에서플레이를한다고하면선수는팀과연관이있다고볼수있다. [ 그림 4-7] 관계를자세히설명하면, 각클래스에는각각의역할 (Role) 이존재한다. 선수와구단은고용인 (Employee) 과고용자 (Employer) 의역할을갖고있다. [ 그림 4-8] [ 그림 4-7] 팀과선수의연관관계 [ 그림 4-8] 선수와구단의연관관계 10

연관관계의예들 [ 그림 4-10] 사원과회사사이의연관관계 [ 그림 4-11] 학생, 교사, 학교사이의연간관계 11

연관관계의다중성 다중성 : 두클래스의연관관계에서실제로연관을가지는객체의수를나타낸것 [ 그림 4-12] 는선수 (Player) 와팀 (Team) 사이에서연관관계에다중성을부여한것이다. [ 그림 4-13] 은사원과회사와의사이에서연관관계에다중성을부여한것이다. [ 그림 4-12] 선수와팀의다중성 [ 그림 4-13] 회사와사원의다중성관계 12

연관관계의다중성 다중성 : 두클래스의연관관계에서실제로연관을가지는객체의수를나타낸것 [ 표 4-2] 다중성의표현 13

집합과복합관계 집합 (Aggregation) 관계와복합 (Composition) 관계모두연관관계에포함되는개념 [ 그림 4-14] 연관관계와그중집합과복합의개념 집합관계 복합관계 하나의객체에여러개의독립적인객체들이구성되는경우 더강한관계로구성 엔진은카뷰레터, 피스톤, 플러그로구성 엔진의구성요소는더강한관계 [ 그림 4-15] 차와엔진, 바퀴, 차체 ( 집합관계 ) 엔진과카뷰레터, 피스톤, 플러그 ( 복합관계 ) 14

집합과복합예제 식사가밥, 찌개, 김치, 나물등으로구성되어있을경우, 이들은식사에대한구성요소이기때문에집합관계 컴퓨터도마찬가지로그구성요소로이루어지면집합관계 컴퓨터본체는여러가지의구성요소가존재하는데이는영구적인요소이기때문에복합관계 [ 그림 4-16] 식사 : 밥, 찌개, 김치, 나물 [ 그림 4-17] 컴퓨터와모니터, 마우스, 키보드, 스피커 ( 집합관계 ). 본체와 CPU, ROM, RAM( 복합관계 ) 15

일반화관계 일반화관계는하나의종류를의미 a_kind_of의관계 일반화관계는다른의미로상속관계라고도한다. [ 그림 4-18] 차와버스, 트럭, 택시 ( 일반화관계 ) [ 그림 4-19] 학생과초등학생, 중학생, 고등학생, 대학생 ( 일반화관계 ) 16

[ 예제 4-1 ] 사람과교수, 학생간의일반화와연관관계 [ 그림 4-21] 사람과교수, 학생간의일반화관계 17

[ 예제 4-1 ] 사람과교수, 학생간의일반화와연관관계 01 class Person 02 { 03 String name; 04 int getage() 05 { 06 return 49; 07 } 08 } 09 10 class Student extends Person 11 { 12 int sid; 13 int getgrade(){ 14 return sid-200400; 15 } 16 } 17 18 // Person 으로상속받기때문에 name, getage(), pid, getpayment() 로구성 19 class Professor extends Person 20 { 18

[ 예제 4-1 ] 사람과교수, 학생간의일반화와연관관계 21 int pid; 22 int getpayment( ) 23 { 24 return pid+10000; 25 } 26 } 27 28 class Inheritance 29 { 30 public static void main(string[] args) { 31 Student s1 = new Student( ); 32 Professor p1 = new Professor( ); 33 s1.name = " 홍길동 "; 34 s1.sid = 200401; 35 System.out.println("Student name : "+s1.name+ "Student ID : "+s1.sid); 36 System.out.println("Student Age : "+s1.getage( )+"Student Grade : "+s1.getgrade( )); 37 p1.name = " 홍교수 "; 38 p1.pid = 1016; 39 System.out.println("Professor name : "+p1.name+ "Professor ID : "+p1.pid); 40 System.out.println("Professor Age : "+p1.getage( )+"Professor Payment : "+p1.getpayment( )); 41 } 42 } 19

[ 예제 4-2 ] 자동차와자동차제품간일반화및연관관계 [ 그림 4-22] 자동차와자동차제품간일반화관계 20

[ 예제 4-2 ] 자동차와자동차제품간일반화및연관관계 01 class Car 02 { 03 String name; 04 int year; 05 int getyear() 06 { 07 return year; 08 } 09 } 10 class Gcompany extends Car 11 { 12 int number; 13 int getlocal_number(){ 14 return number; 15 } 16 } 17 class Hcompany extends Car 18 { 19 int price; 20 int getnevigate( ){ 21 return price-10000000; 22 } 23 } 21

[ 예제 4-2 ] 자동차와자동차제품간일반화및연관관계 24 25 26 class Scompany extends Car 27 { 28 int cc; 29 int getspeed( ){ 30 return cc-1300; 31 } 32 } 33 34 public class Company 35 { 36 public static void main(string args[]) 37 { 38 Gcompany g = new Gcompany( ); 39 Hcompany h = new Hcompany( ); 40 Scompany s = new Scompany( ); 41 g.name = " 레간자 "; 42 g.number = 2001; 22

[ 예제 4-2 ] 자동차와자동차제품간일반화및연관관계 43 System.out.println("Car name: " +g.name+ "Car number: "+g.number); 44 System.out.println("Car year: " +g.getyear( )+ "Car number: " +g.getlocal_number( )); 45 h.name = " 소나타 "; 46 h.price = 10000000; 47 System.out.println("Car name: " +h.name+ "Car price: "+h.price); 48 System.out.println("Car year: " +h.getyear( )+ "Car number: " +h.getnevigate( )); 49 s.name = "SM5"; 50 s.cc = 2500; 51 System.out.println("Car name: " +s.name+ "Car price: +s.cc); 52 System.out.println("Car year: " +s.getyear()+ "Car number: " +s.getspeed()); 53 } 54 } 23

의존관계 의존관계 : 하나의클래스가또다른클래스를사용하는관계 다른클래스의멤버함수를사용하는경우 하나의클래스에있는멤버함수의인자가변함에따라다른클래스에영향을미칠때의관계를의미 [ 그림 4-23] TV 와리모컨의의존관계 다른의존관계 수업 교수 전화기 버튼 세탁기 손잡이 자동차 기어 24

의존관계의존관계에있어서클래스 A 가클래스 B 의객체를생성하는경우예 ) 애플릿프로그램인 MyApplet 의 point( ) 메서드에서 text 를출력하기위한 g.drawstring( ) 메서드호출할경우 [ 그림 4-24] 메소드호출의경우 ( 의존관계 ) 25

의존관계의존관계에있어서클래스 A 가클래스 B 의객체를생성하는경우예 ) 애플릿프로그램인 MyApplet 의 point( ) 메서드에서 text 를출력하기위한 g.drawstring( ) 메서드호출할경우 26

추상클래스와인터페이스 추상클래스 인터페이스 실체화관계 이탤릭체로클래스명을표시하며스테레오타입을이용하여 <<abstract>> 로표기 스테레오타입을이용하여 <<interface>> 로표기하고, 이탤릭체로인터페이스명을표시 추상클래스나인터페이스를상속받아자식클래스가추상메서드를구현할때사용 [ 그림 4-26] 추상클래스와인터페이스 [ 그림 4-27] 실체화관계 27

클래스간의다이어그램관계실습 유즈케이스명 : 비디오대여 행위자 : 관리자 유즈케이스개요및설명 : 관리자는고객이대여한비디오를등록한다. 사전조건 : 고객은비디오시스템에등록된사람이다. 이벤트흐름 - 정상흐름 1 관리자는대여할비디오를등록하기위해시스템에접속한다. 2 시스템은비디오대여를할고객의정보를입력하는화면을보여준다. 3 관리자는고객의이름을입력한다. 4 시스템은현제고객이연체한비디오와연체금을보여준다.(E1) 5 관리자는연체확인하고연체금을받는다.(E2) 6 시스템은대여할비디오코드를입력받는화면을보여준다. 7 관리자는비디오코드를입력한다. 7 시스템은대여가완료되었음을알린다. - 대치흐름 (E1) 연체한비디오가없을경우 a. 6 으로간다. (E2) 연체금을받지못할경우 a. 대여가불가능하다고알린다. b. 시스템이대기상태로돌아간다. - 예외흐름해당사항없음 28

class Thank you