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

Similar documents
Microsoft PowerPoint - 04_OOConcepts(2010).pptx

JAVA PROGRAMMING 실습 08.다형성

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

Design Issues

PowerPoint Presentation

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

PowerPoint Presentation

Microsoft PowerPoint - Lect04.pptx

JAVA PROGRAMMING 실습 05. 객체의 활용

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

No Slide Title

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

C++ Programming

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

Microsoft PowerPoint - 2강

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

PowerPoint 프레젠테이션

제11장 프로세스와 쓰레드

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

JAVA PROGRAMMING 실습 07. 상속

PowerPoint 프레젠테이션

01-OOPConcepts(2).PDF

설계란 무엇인가?

Microsoft PowerPoint - 04-UDP Programming.ppt

유니티 변수-함수.key

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

PowerPoint 프레젠테이션

PowerPoint Presentation

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 - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

No Slide Title

슬라이드 1

JAVA PROGRAMMING 실습 09. 예외처리

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

C++ Programming

PowerPoint Presentation

Spring Boot/JDBC JdbcTemplate/CRUD 예제

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - chap11

Network Programming

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

C++ Programming

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint Template

17장 클래스와 메소드

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Microsoft PowerPoint - java2 [호환 모드]

PowerPoint Presentation

Microsoft PowerPoint - java1 [호환 모드]

Microsoft PowerPoint - 04_정적모델링(2012).pptx

ThisJava ..

PowerPoint Presentation

Microsoft PowerPoint - 13_UMLCoding(2010).pptx

PowerPoint Presentation

PowerPoint Presentation

Slide 1

05-class.key

PowerPoint Presentation

제목

설계란 무엇인가?

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

금오공대 컴퓨터공학전공 강의자료

슬라이드 1

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

PowerPoint Template

PowerPoint Presentation

PowerPoint Presentation

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

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint 장강의노트.ppt

Microsoft PowerPoint - CSharp-10-예외처리

Cluster management software

Microsoft Word - EEL2 Lab5 예외처리와 스레드.docx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

PowerPoint 프레젠테이션

5장.key

OOP 소개

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

Microsoft Word - EEL2 Lab4.docx

Microsoft PowerPoint - chap06-2pointer.ppt

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

C++ 기본문법 정리

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

JAVA PROGRAMMING 실습 02. 표준 입출력

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Transcription:

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

왜객체지향인가? l 절차적패러다임 vs. 객체지향패러다임 l 뭐가다르지? 2

C 언어 l 프로그램은데이터와함수로구성 l 함수는데이터를조작 l 프로그램을조직화하기위해 l 기능적분할 l 자료흐름도 l 모듈 Main program global data call call call return return return function1 function2 function3 3

l 메일처리시스템 C 언어 - 절차적프로그래밍 Message in queue 전화 팩스 LAN Internet User terminal 4

절차적프로그램의구조 Mail Program Global data Initialization routines etc. Mail-item reception 메일큐의구조를알아야하는루틴 for( ; ; ) {... } Select Mail-item User-command interpretation Termination routines Show summary Delete Mail-item Show content 여러다른타입을구별하여야하는루틴 5

너무자세한요구의유입 void ShowContent(Mainitem* mailitem) { }... switch(mailitem->type) { case EMAIL: case FAX:... } 메일타입추가되면구조변경됨 ShowContentofEmail(mailitem); break; DrawPictureofFax(mailitem); break; 6

C 프로그램 l 프로그램 = 함수의집합 l 함수가서로자료를주고받음 l 함수와자료가분리 l 설계작업 l 자료, 함수안의알고리즘, 함수의구조에초점 l 함수의재사용이어려움 l 설계방법 l 함수와자료를별도로생각 l 모듈사이의연관복잡 7

l 프로그램 = 클래스의집합 New Way - 객체지향 l 프로그래밍 l 어떤객체가필요하며 l 어떤오퍼레이션이필요 l 어떻게서로협력하여야하는지를결정하는일 Mail System data message message FAX data l 메일타입추가용이 l 다른구조에영향이적음 message UI data message message e-mail data 8

메시지호출 9

복잡함을잘다루는방법 l PC 하드웨어 l 버스 l 메모리 l CPU l 스크린 l 디스크드라이브 내부는복잡하지만인터페이스는간단 - 업그레이드간단 - 새 PC 설계, 제조간단해짐 l 객체 l 내부 - 데이터와이를조작하는함수가있는작은단위의프로그램 l 외부 함수인터페이스, 내부의복잡한변수는감추어짐 10

클래스와객체 l 클래스 : 객체를정의한템플릿 l 객체는생성자로생성 l 같은클래스에속하는메소드 ( 예 deposit, withdraw, fundtransfer, ) l 각객체와관련된인스턴스변수의값은다름 ( 예 accountowner, balance, creditlimit) Account Emplo yee Class l 메소드와변수의관계 l 객체와관련된메소드 ( 예 withdraw) 가실행되면인스턴스변수의값을바꾸어놓음 ( 예 balance) Checking John Mary Saving Mutual Fund Object 11

클래스 l 클래스에의하여제공될서비스를정의한것 public 메소드 l 내부에서만사용될메소드 private 메소드 l 인스턴스변수 외부조작이불가능하도록 private 선언 public class BankAccount { BankAccount - accountnumber - accountowner - balance + deposit + withdrawal + printstatement public void BankAccount { } public void deposit(int amount) { balance += amount; } // additional methods such as withdrawal private String accountnumber; private String accountowner; private int balance = 0;... } Multiple constructors may be provided Method definition instance variables / attributes 12

클래스 := 자료 + 오퍼레이션 l 사원 l 이름 l 전화번호 l 직위 l 급여 l 경력 l l 오퍼레이션 l 승진 l 전화번호검색 l 경력조회 l 직위조회 l 13 l 타이머 l 시각 l 세팅시간 l l 오퍼레이션 l 시각변경 l 세팅 l Clear l l 전화번호 l 이름 l 전화번호 l 그룹 l 메일주소 l l 오퍼레이션 l 추가 l 삭제 l 전화번호검색 l

클래스와객체 클래스이름 자료 오퍼레이션 이름직위 승진 () 사원 l l l l 클래스 타입선언 객체들이갖는자료와오퍼레이션을정의한것 객체생성을위한템블릿 이름 : 김영희이름 : 김동국직위 : 부장직위 : 팀장이름 : 홍길동직위 : 직원 l l l 객체 클래스의인스턴스 구체적인자료값 ( 실체 ) 을가짐 14

15

객체의생성 16

메소드 17 17

메소드 l 메소드는문장블록과는다르게중첩 (nested) 될수없음 l 메소드는호출되기전에선언할필요가없음 l 정의와호출순서가뒤바뀌어도됨 l 실행은항상메인메소드로부터 public class MyMainClass { public static void main(string[] args) { <statements that define the main method> } } 18

메소드의호출 main john 1: Employee john = new Employee ("John", 1000.00); john.printinfo(); 2: givetwice (john) 4: john.printinfo() Employee Name john Salary 1000.00 givetwice who 3: who.giveraise(200); 19

l 상속의의미 상속 l 상위클래스의속성과연산을물려받음 (Employee 객체는 name, age 인스턴스변수와, birthday() 메소드를가짐 ) l 슈퍼클래스 (superclass), 서브클래스 (subclass) l 예 > 직원 : 슈퍼클래스, 관리자 : 서브클래스 class Person { String name; int age; void birthday () { age = age + 1; } } class Employee extends Person { double salary; void pay () {...} } 20

l 다형성의정의 다형성 (polymorphism) l 여러형태를가지고있다 (= 여러형태를받아들일수있다 ) l 같은이름의메시지를다른객체 or 서브클래스에서가질수있음 class FamilyMember extends Person { void birthday () { // override birthday() in Person super.birthday (); // call overridden method givepresent (); // and add your new stuff } } FamilyMember Jennifer = new FamilyMember(); Person P = new Person(); Jennifer.birthday(); P.birthday(); 21

변수가서브클래스의객체를가질수있음 l FamilyMember 는 Person 클래스의서브클래스 l FamilyMember 객체는 FamiliryMember 변수의값으로배정될수있음 l Person 객체는 Person 변수의값으로배정될수있음 l FamilityMember 객체는 Person 변수의값으로배정될수있음 l Person 객체는 FamilityMember 변수의값으로배정될수없음 모든 FamilyMember 는 Person 이나모든 Person 이 FamilyMember 는아님 l 캐스트가능 l Person Rich = new Person(); l cast son_in_law = (FamilityMember) Rich 22

클래스의관계 l 객체지향모델링의관계 l 연관 (association) l 전체부분 (whole/part) l 상속 (inheritance) l 사용 (use) Window 사용관계 Event 상속관계 ConsoleWindow DialogBox 연관관계 User l 객체사이의관계를프로그램에반영 Control 전체부분관계 23

연관관계 l 객체와객체를연결하는구조적인관계 l 방향성과다중도를고려 Mother 1 * Child Class Mother{. private Child[] thekids = new Child[20]; public addchild(child ch); } 배열 thekids는 Child에대한레퍼런스를저장배열의크기가 Child의수를제한 Class Child{. private Mother mom; public setmom(mom); } 변수 mom이 mother객체를레퍼런스함 Mom을선언하므로연관관계를맺는다 24

연관관계 l 연관관계생성코드 Mother themom = new Mother(); l 추적가능성 (navigability) 확인 Child jim = new Child(); l 서버클래스의표현을바꿀때 클라이언트코드를변경할 필요없다 l 배열로표현된 thekids 를 벡터로바꿀수있다 Child jennifer new Child(); themom.addchild(jim); themom.addchild(jennifer); Jim.setMom(theMom); Jinnifer.setMom(theMom) l 이때 thekids 를 private 로선언하면클라이언트프로그램에 영향을주지않고서버클래스 (Mother) 의표현을바꿀수있다. 25

전체부분관계 - 구성관계 l 전체부분 (whole-part) 관계 l 구성관계 (composition), 집합관계 (aggregation) l 구성관계 l 전체개념안에구성요소존재 ( 테이블 :4 개의다리 +1 개의상판 ) l 연관관계의일종으로관계표시는없어도된다 l 방향성, 추적가능성고려, 컨테이너객체이용 l 대부분 has, comprise, consist of 의의미 l 구성관계의특성 l 구성요소가없이전체가존재할수없다 l 구성요소는언제나하나의전체객체에대한부품이다 l 구성관계는이질적구성요소로되어있다 l UML 표현 : 검은다이아몬드 26

전체부분관계 - 집합관계 l 집합관계 l 예 > 숲은나무의집합, 시 / 도는군 / 구의집합 l 컨테이너클래스사용 l 전체개념의클래스로부터구성요소를찾을수있음 l 집합관계의특성 l 구성요소가없이전체가존재할수있다 l 구성요소는하나이상의전체집합에소속가능하다 l 구성관계는동질적구성요소로되어있다 l UML 표현 : 흰다이아몬드 27

전체부분관계 UML Table Report Leg 4 1 Top * Chapter 구성관계 집합관계 28

상속관계 l 상속관계 (= 일반화관계 ) l 일반적개념의클래스와더구체적클래스의관계 l A kind of 의관계 l 명칭 l 일반적인클래스 : 베이스클래스 l 구체적인클래스 : 파생된 (derived) 클래스 Box l UML 표현 : 자식클래스에서부모쪽으로화살표 l 상향식화살표로베이스클래스를포인트 Weighted Box l 단일상속, 다중상속 l 단일상속 : 하나의베이스클래스를갖는다 l 다중상속 : 두개이상의베이스클래스를갖는다 29

l 사용관계 l 의미 사용관계 l 한클래스가다른클래스를코드안에서사용할때 CourseSchedule l 코드상의의존관계 Event l 종속된관계 Add(c: Course) l 일반적유형 Remove(c: Cpurse) l 오퍼레이션의매개변수로다른클래스를사용하는클래스간의연결 예 >CourseSchedule클래스는 add과 remove 오퍼레이션을위해 Course 클래스를매개변수로사용한다 l UML 표현 : 점선화살표 30

관계 유지기간 관계의비교 연관관계전체부분관계상속관계사용관계 클래스사이에 영구적인의미가있는관계 명확한전체부분개념 클래스상태의클래스상태의일부분으로객일부분으로클래체가살아있는스객체가살아간동안만유지있는동안만유지 구현 UML 관련된객체에대한인스턴스변수를정의, 다중도를위하여컨테이너객체사용 링크에대한레퍼런스를인스턴스변수로정의, 다중도를위하여컨테이너객체사용 일반적, 구체적 관계 서브클래스가정의될동안영구적 상속을사용, java 의경우서브클래스가슈퍼클래스를확장 한클래스에서 다른클래스객체의서비스를사용 클래이언트나서버메소드가활성된경우만관계유지 클라이언트클래스메소드가서버클래스에대한 레퍼런스를매개변수로가짐 31

Questions?