Microsoft PowerPoint - 04_OOConcepts(2010).pptx

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

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

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

Design Issues

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

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - Lect04.pptx

예제 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 프레젠테이션

PowerPoint Presentation

No Slide Title

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

C++ Programming

Microsoft PowerPoint - 2강

PowerPoint Presentation

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

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

제11장 프로세스와 쓰레드

유니티 변수-함수.key

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 07. 상속

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

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

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

쉽게 풀어쓴 C 프로그래밍

설계란 무엇인가?

PowerPoint 프레젠테이션

01-OOPConcepts(2).PDF

17장 클래스와 메소드

PowerPoint Presentation

PowerPoint Presentation

C++ Programming

Microsoft PowerPoint - 04-UDP Programming.ppt

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

쉽게 풀어쓴 C 프로그래밍

No Slide Title

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

PowerPoint Presentation

PowerPoint Presentation

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

PowerPoint Template

Microsoft PowerPoint - 13_UMLCoding(2010).pptx

JAVA PROGRAMMING 실습 09. 예외처리

슬라이드 1

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

JAVA PROGRAMMING 실습 02. 표준 입출력

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

Microsoft PowerPoint - java1 [호환 모드]

Microsoft PowerPoint - chap11

Network Programming

C++ Programming

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

PowerPoint 프레젠테이션

Microsoft PowerPoint - java2 [호환 모드]

PowerPoint Presentation

PowerPoint Presentation

Spring Boot/JDBC JdbcTemplate/CRUD 예제

PowerPoint Template

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

쉽게 풀어쓴 C 프로그래밍

제목

ThisJava ..

Microsoft PowerPoint 장강의노트.ppt

PowerPoint Presentation

슬라이드 1

PowerPoint Presentation

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

JAVA PROGRAMMING 실습 05. 객체의 활용

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

Slide 1

05-class.key

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

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - Chapter 6.ppt

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

PowerPoint Presentation

PowerPoint Template

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

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

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

chap10.PDF

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

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

OOP 소개

Cluster management software

Microsoft PowerPoint - C++ 5 .pptx

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

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

Microsoft Word - EEL2 Lab4.docx

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - chap06-2pointer.ppt

설계란 무엇인가?

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Transcription:

LECTURE 4 객체지향개념 Object-Oriented Oi Oriented dc Concepts 내가가진도구가망치뿐이라면모든문제가다못으로보인다. 최은만, CSE 4039 소프트웨어공학

Old Way 프로그램은데이터와함수로구성 함수는데이터를조작 프로그램을조직화하기위해 기능적분할 자료흐름도 모듈 Main program global data call call call return return return function1 function2 function3 최은만, CSE 4039 소프트웨어공학 ) 강좌 1: 객체지향기초 2

C 언어 - 절차적프로그래밍 메일처리시스템 Message in queue 전화 팩스 LAN User terminal Internet 최은만, CSE 4039 소프트웨어공학 ) 강좌 1: 객체지향기초 3

절차적프로그램의구조 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 여러다른타입을구별하여야하는루틴 최은만, CSE 4039 소프트웨어공학 ) 4

너무자세한요구의유입 void ShowContent(Mainitem* ont nt(ma n t mailitem) m) { }... switch(mailitem->type) { case EMAIL: break; case FAX:... } ShowContentofEmail(mailitem); DrawPictureofFax(mailitem); break; 최은만, CSE 4039 소프트웨어공학 ) 5

C 프로그램 시스템이함수의집합 함수가서로자료를주고받음 함수와자료가분리 설계작업 자료, 함수안의알고리즘, 함수의구조에초점 함수의재사용이어려움 설계방법 함수와자료를별도로생각 모듈사이의연관복잡 최은만, CSE 4039 소프트웨어공학 ) 강좌 1: 객체지향기초 6

New Way - 객체지향프로그램 Mail System data message message message UI data FAX data message 프로그램은클래스의집합 프로그래밍 어떤객체가필요하며 어떤오퍼레이션이필요 어떻게서로협력하여야하는지를결정하는일 message e-mail data 메일타입추가용이 다른구조에영향이적음 최은만, CSE 4039 소프트웨어공학 ) 7

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

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

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

클래스 := 자료 + 오퍼레이션 사원 이름 전화번호 직위 급여 경력 오퍼레이션 승진 전화번호검색 경력조회 직위조회 최은만, CSE 4039 소프트웨어공학 ) 타이머 > 시각 > 세팅시간 > 오퍼레이션 > 시각변경 > 세팅 > Clear > 전화번호 > 이름 > 전화번호 > 그룹 > 메일주소 > 오퍼레이션 > 추가 > 삭제 > 전화번호검색강좌 1: 객체지향기초 11 >

클래스와객체 클래스이름자료 오퍼레이션 사원이름직위 승진 () 클래스 객체 타입선언객체들이갖는자료와오퍼레이션을정의한것객체생성을위한템블릿 클래스의인스턴스구체적인자료값 ( 실체 ) 을가짐 이름 : 김영희직위 : 부장 이름 : 김동국이름직위 : 팀장 : 홍길동직위 : 직원 최은만, CSE 4039 소프트웨어공학 ) 강좌 1: 객체지향기초 12

최은만, CSE 4039 소프트웨어공학 ) 13

객체의생성 최은만, CSE 4039 소프트웨어공학 ) 14

메소드 최은만, CSE 4039 소프트웨어공학 ) 15

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

메소드의호출 main john 1: Employee john = new Employee ("John", 1000.00); john.printinfo(); 4: john.printinfo() 2: givetwice (john) Employee Name john Salary 1000.00 givetwice who 3: who.giveraise(200); 최은만, CSE 4039 소프트웨어공학 ) 17

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

다형성 (polymorphism) 다형성의정의 여러형태를가지고있다 (= 여러형태를받아들일수있다 ) 같은이름의메시지를다른객체 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(); Pbithd P.birthday(); 최은만, CSE 4039 소프트웨어공학 ) 19

변수가서브클래스의객체를가질수있음 FamilyMember 는 Person 클래스의서브클래스 FamilyMember 객체는 FamiliryMember 변수의값으로배정될수있음 Person 객체는 Person 변수의값으로배정될수있음 FamilityMember 객체는 Person 변수의값으로배정될수있음 Person 객체는 FamilityMember 변수의값으로배정될수없음 모든 FamilyMember 는 Person 이나모든 Person 이 FamilyMember 는아님 캐스트가능 Person Rich = new Person(); cast son_in_law = (FamilityMember) Rich 최은만, CSE 4039 소프트웨어공학 ) 20

클래스의관계 객체지향모델링의관계 연관 (association) 전체부분 (whole/part) 상속 (inheritance) 사용 (use) Window 사용관계 Event 상속관계 ConsoleWindow DialogBox 연관관계 User Control 객체사이의관계를프로그램에반영 전체부분관계 최은만, CSE 4039 소프트웨어공학 ) 21

연관관계 객체와객체를연결하는구조적인관계 방향성과다중도를고려 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을선언하므로연관관계를맺는다 최은만, CSE 4039 소프트웨어공학 ) 22

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

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

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

전체부분관계 UML Table Report 4 1 Leg Top * Chapter 구성관계 집합관계 최은만, CSE 4039 소프트웨어공학 ) 26

상속관계 상속관계 (= 일반화관계 ) 일반적개념의클래스와더구체적클래스의관계 A kid of의관계 명칭 일반적인클래스 : 베이스클래스 구체적인클래스 : 파생된 (derived) 클래스 UML표현 : 자식클래스에서부모쪽으로화살표 상향식화살표로베이스클래스를포인트 단일상속, 다중상속 단일상속 : 하나의베이스클래스를갖는다 다중상속 : 두개이상의베이스클래스를갖는다 Box Weighted Box 최은만, CSE 4039 소프트웨어공학 ) 27

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

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

Q&A 현실세계에존재하는것은객체 (Class) 의개체 (Instance) 일뿐이다. - 플라톤 최은만, CSE 4039 소프트웨어공학 ) 30