JAVA 언어로 배우는 디자인 패턴 입문 chap. 1-2.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Chap 7 Design Patterns (1). Design Pattern  다양한 수준의 설계패턴 존재 – 프로그래밍 수준 추상화된 상위계층 수준 – 수 천 가지 이상의 패턴들이 발표되었으며, 문서와 국 제회의에서 토의되고 있음 – 일반 개발자는 새로운 설계패턴을.
디자인 패턴 UML II Group 유래성, 김윤환, 박성운. 도입  경험치가 높은 개발자 vs 경험치가 낮은 개발자  목적  사람들이 사용할 수 있는 / 하고 있는 ‘ 폼 ’ 에서 설계 경험을 얻어 낸다.  디자인 패턴엔 무엇인가 새로운 것이 있나 ?
Java 로 배우는 디자인패턴 입문 Chapter 15. Facade 간단한 창구 덕성여자대학교 컴퓨터학부.
6.1 사용사례 6.2 객체 모델링 6.3 동적 모델링 6.4 시스템 설계 6.5 객체 설계 6.6 디자인 패턴
어서와 Java는 처음이지! 제3장선택과 반복.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
10. 예외 처리.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Java로 배우는 디자인패턴 입문 Chapter 0. UML 과 Design Pattern
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
명품 JAVA Programming.
3. 자바에서 지원하는 패키지 자바에서 기본적으로 제공하는 패키지.
Power Java 제4장 자바 프로그래밍 기초.
제 5 장 상속과 다형성.
[INA470] Java Programming Youn-Hee Han
10장 객체-지향 프로그래밍 II ©창병모.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
Lesson 5. 레퍼런스 데이터형.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 6. 형변환.
명품 Java Programming.
10장 다중 스레드 10.1 스레드 개요 10.2 Thread 클래스 10.3 스레드 생성
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
2010학년도 2학기 객체지향의 이해.
DataScience Lab. 박사과정 김희찬 (월)
자바 5.0 프로그래밍.
Java로 배우는 디자인패턴 입문 Chapter 12. Decorator 장식과 내용물의 동일시
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
주소록 프로그램.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
2009학년도 1학기 상지대학교 컴퓨터정보공학부 고 광 만
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
Method & library.
DataScience Lab. 박사과정 김희찬 (월)
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
WAP Java Seminar
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
Lesson 2. 기본 데이터형.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
Java Chapter 4 ~ 주차.
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
JA A V W. 04.
CACM 구현 public class CACM { public CACM(File file)
자바 5.0 프로그래밍.
자바 5.0 프로그래밍.
Power Java 제11장 상속.
JA A V W. 06.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
Java 5장. 객체지향 개념 public class SumTest {
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
자바 객체 지향 프로그래밍 Ps lab 김윤경.
Presentation transcript:

JAVA 언어로 배우는 디자인 패턴 입문 chap. 1-2

[목 차] ch.1 Iterator 하나씩 열거하면서 처리한다 ch.2 Adapter 필요한 형태로 수정해서 재활용한다

 JAVA에서 배열 arr의 요소 Iterator 패턴 for (int I = 0; I < arr.length; I++) { system.out.println(arr[i]) ; } Iterator 패턴 많이 모여있는 것 중에서 하나씩 끄집어내어 열거하면서 전체를 검색하는 처리

Iterator 패턴 -예제 프로그램- 서가(Bookshelf) 속에 책(Book)을 넣고 그 책 이름을 순서대로 표시

Iterator 패턴 -예제 프로그램- Aggregate Iterator Book BookShelf 집합체를 나타내는 인터페이스 -> Bookshelf Iterator 하나씩 열거하며 스캔을 실행하는 인터페이스 -> BookshelfIterator Book 책을 나타내는 클래스 BookShelf 서가를 나타내는 클래스 BookShelfIterator 서가를 검색하는 클래스 Main 동작 테스트용 클래스

Aggregate 인터페이스 • Iterator 인터페이스 public interface Aggregate { public interface Iterator iterator( ) ; } • Iterator 인터페이스 public interface Iterator { public abstract boolean hasNext ( ) ; public abstract Object next( ) ; }

Book 클래스 public class Book { private String name = “ ” ; public Book(String name) { this.name = name; } public String getName( ) { return name;

BookShelf 클래스 public class BookShelf implements Aggregate { private Book[ ] books ; private int last = 0 ; public BookShelf (int maxsize) { this.books = new Book[maxsize]; } public Book getBookAt (int index) { return books[index] ; public void appendBook (Book book) { this.books[last] = book; last++; public int getLength( ) { return last; public Iterator iterator( ) { return new BookShelfIterator(this) ;

BookShelf Iterator 클래스 public class BookShelfIterator implements Iterator { private BookShelf bookShelf ; private int index ; public BookShelfIterator (BookShelf bookShelf) { this.bookShelf = bookShelf ; this.index = 0 ; } public boolean hasNext( ) { if (index < bookShelf.getLength( )) { return true; } else { return false ; public Object next ( ) { Book book = bookShelf.getBookAt(index); index++ ; return book ;

Main 클래스 public class Main { public static void main (String[ ] args) { BookShelf bookShelf = new BookShelf(4) ; bookShelf.appendBook (new Book (“A around 1 “)); bookShelf.appendBook (new Book (“B around 2 “)); bookShelf.appendBook (new Book (“C around 3 “)); bookShelf.appendBook (new Book (“D around 4 “)); Iterator it = bookShelf.iterator( ) ; while (it.hasNext( )) { Book book = (Book)it.next( ) ; System.out.println(“ ” + book.getName( )); }

Iterator 패턴 –등장하는 역할- Iterator의 역할 ConcreteIterator의 역할 Aggregate의 역할 요소를 차례로 스캔할 인터페이스(API) 결정 ConcreteIterator의 역할 Iterator 역할이 정한 인터페이스(API)를 실제로 구현->BookShelfIterator 클래스 Aggregate의 역할 Iterator 역할을 만들어내는 인터페이스(API) 제공 ConcreteAggregate의 역할 Aggregate 역할이 정한 인터페이스(API)를 실제로 구현 ->BookShelf 클래스 Creates  <<interface>> Aggregate iterator <<interface>> Iterator hasNext next ConcreteAggregate iterator ConcreteIterator aggregate hasNext next

Iterator 패턴 결론 관련 패턴 디자인 패턴은 추상클래스와 인터페이스를 도입함으로써 클래스의 재사용성을 촉진시킴 Iterator 패턴은 Visitor 패턴(13장), Composite 패턴(11장) Factory Method 패턴(4장)과 관련된 패턴임.

- 클래스에 의한 Adapter 패턴(상속을 이용한 것) ->예제 2-1 • 정의 - ‘이미 제공되어 있는 것’과 ‘필요한 것’ 사이의 ‘간격’을 메우는 디자인 패턴 - Wrapper 패턴이라고도 함. • 종류 - 클래스에 의한 Adapter 패턴(상속을 이용한 것) ->예제 2-1 - 인스턴스에 의한 Adapter 패턴(위임을 이용한 것) ->예제 2-2

[PrinterBanner 클래스]  Adapter 이미 제공되어진 Banner 클래스의 메소드 showWithParen과, showWithAster를 이용하여 Print 인터페이스의 printWeak과 printStong 메소드를 생성하는 프로그램 [Banner 클래스] • showWithParen 메소드  (Hello) • showWithAster 메소드  *Hello* [PrinterBanner 클래스]  Adapter [Print 인터페이스] • printWeak 메소드 (Hello) • printStrong 메소드 *Hello*

<<interface>> 2-1 클래스에 의한 예제 프로그램의 클래스(상속) <<interface>> Print printWeak printStrong Banner showWithParen showWithAster PrintBanner printweak Main Uses 

Banner 클래스 public class Banner { private String string; public Banner(String string) { this.string = string; } public void showWithParen() { System.out.println("(" + string + ")"); public void showWithAster() { System.out.println("*" + string + "*"); Banner showWithParen showWithAster

<<interface>> Print 인터페이스 public interface Print { public abstract void printWeak(); public abstract void printStrong(); } <<interface>> Print printWeak printStrong

PrintBanner 클래스 public class PrintBanner extends Banner implements Print { public PrintBanner(String string) { super(string); } public void printWeak() { showWithParen(); public void printStrong() { showWithAster();

Main 클래스 public class Main { public static void main(String[] args) { Print p = new PrintBanner("Rainy "); p.printWeak(); p.printStrong(); }

2-2 클래스에 의한 예제 프로그램의 클래스(위임) Main Uses  Print printWeak printStrong PrintBanner Banner showWithParen showWithAster banner printweak printStrong

Print 클래스 PrintBanner 클래스 public abstract class Print { public abstract void printWeak(); public abstract void printStrong(); } Print printWeak printStrong PrintBanner 클래스 public class PrintBanner extends Print { private Banner banner; public PrintBanner(String string) { this.banner = new Banner(string); } public void printWeak() { banner.showWithParen(); public void printStrong() { banner.showWithAster();

Adapter 패턴 –등장하는 역할- Target의 역할 Client의 역할 Adaptee의 역할 Adapter의 역할 필요로 하는 메소드를 제공 -> Print 인터페이스(상속), Print 클래스(위임) Client의 역할 Target 역할의 메소드를 사용해서 일을 하는 역할 ->Main 클래스 Adaptee의 역할 - 준비되어 있는 메소드를 가지고 있는 역할 -> Banner 클래스 Adapter의 역할 Adaptee 역할의 메소드를 사용해서 Target 역할을 충족시킴 ->PrintBanner 클래스

<<interface>> • 클래스에 의한 Adapter 패턴의 클래스(상속) Client Uses  implements extends <<interface>> Target targetMethod1 targetMethod2 Adapter targetMethod1 targetMethod2 Adaptee methodA methodB methodC • 인스턴스에 의한 Adapter 패턴의 클래스(위임) Client Uses  extends has Target targetMethod1 targetMethod2 Adapter Adaptee adaptee methodA methodB methodC targetMethod1 targetMethod2

Adapter 패턴 결론 1 결론 2 관련 패턴 기존 클래스를 수정하여 필요한 클래스를 만듦으로써 클래스의 재사용성을 촉진시킴 기존 버전과 새로운 버전의 공존과, 보수를 간단하게 함. 관련 패턴 Bridge 패턴(9장), Decorator 패턴(12장)