Ch.1 Iterator Pattern <<interface>> Aggregate +iterator

Slides:



Advertisements
Similar presentations
Transaction ㅇ Transaction 을 직접 구현하려면, 까다로운 설계와 복잡한 코드를 필요로 하고 수정에 공수가 많이 들게 된다. ㅇ 스프링에서 제공하는 Transaction Manager 를 사용하여 쉽고 간편하게 어려운 트랜잭션을 해결할 수 있다. xml.
Advertisements

멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
어서와 Java는 처음이지! 제3장선택과 반복.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
10. 예외 처리.
Ch.22 Command Pattern 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
객체지향 프로그래밍.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
7장 배열 ②.
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
Java Presentation 중간 시험2 풀이
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
제6장 객체배열과 벡터 객체 배열을 이해한다. 벡터(vector) 클래스를 사용할 수 있다.
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
JAVA 언어로 배우는 디자인 패턴 입문 chap. 1-2.
명품 JAVA Essential.
명품 JAVA Programming.
명품 JAVA Programming 제 4 장 클래스와 객체.
Power Java 제4장 자바 프로그래밍 기초.
[INA470] Java Programming Youn-Hee Han
10장 객체-지향 프로그래밍 II ©창병모.
8장 자바 입출력.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
7 스택.
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
자바 5.0 프로그래밍.
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
프로그래밍 언어론 제 9 장 객체 지향 개념 객체 지향 방법론 객체 모델링 객체 지향 언어 C++ 객체 지향 언어 CLOS
01. 직렬화와 역직렬화에 대하여 객체의 직렬화 직렬화와 역직렬화
명품 JAVA Essential.
명품 Java Programming.
최용술 장 Thread 최용술
10장 다중 스레드 10.1 스레드 개요 10.2 Thread 클래스 10.3 스레드 생성
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
2010학년도 2학기 객체지향의 이해.
DataScience Lab. 박사과정 김희찬 (월)
인터페이스(Interfaces) 강원대학교.
This, static, final 지정 예약어 자바 4대 중첩 클래스
김 정 석 Web Programming 김 정 석
주소록 프로그램.
7장 배열 ①.
6장 객체-지향 설계 ①.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
12 검색.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
6장 객체-지향 설계 ①.
어서와 Java는 처음이지! 제4장 배열 IT응용시스템공학과 김형진 교수.
DataScience Lab. 박사과정 김희찬 (월)
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
WAP Java Seminar
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
[CPA340] Algorithms and Practice Youn-Hee Han
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
JA A V W. 04.
CACM 구현 public class CACM { public CACM(File file)
자바 5.0 프로그래밍.
Chapter 02. 소프트웨어와 자료구조.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
자바 5.0 프로그래밍.
C# 10장. 참조형.
6장 클래스(상속).
Java 5장. 객체지향 개념 public class SumTest {
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

Ch.1 Iterator Pattern <<interface>> Aggregate +iterator +hasNext +next Creates ▶ BookShelf -books[] -last +getbookAt +appendBook +getLength +iterator BookShelfIterator -bookShelf -index +hasNext +next - 배열 books의 내용을 모두 print out 하는 일반적인 방법 for (I = 0; I < books.length; i++) System.out.println(books[I]); 반복의 대상이 배열이 아닌 queue, stack, 혹은 vector 이면 code의 일부분이 수정되어야 함. 반복의 대상이 바뀌더라도 항상 같은 방법으로 반복하도록 하는 패턴 Book -name +getName 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실

Ch.1 Iterator Pattern public class Book { private String name = ""; ▌Book Class public class Book { private String name = ""; public Book(String name) { this.name = name; } public String getName() { return name; 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실

Ch.1 Iterator Pattern ▌BookShelf Class 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); Iterator() 메소드는 BookShelfIterator에 대한 instance를 만듬 BookShelfIterator에는 hasNext()와 next()가 존재 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실

Ch.1 Iterator Pattern ▌BookShelfIterator Class 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; hasNext()는 다음 요소가 있는가를 검사 next()는 다음 요소를 지적하기 위해 index를 증가 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실

public static void main(String[] args) { Ch.1 Iterator Pattern ▌Main Class public class Main { public static void main(String[] args) { BookShelf bookShelf = new BookShelf(4); bookShelf.appendBook(new Book("Around the World in 80 Days")); bookShelf.appendBook(new Book("Bible")); bookShelf.appendBook(new Book("Cinderella")); bookShelf.appendBook(new Book("Daddy-Long-Legs")); Iterator it = bookShelf.iterator(); while (it.hasNext()) { Book book = (Book)it.next(); System.out.println("" + book.getName()); } iterator()의 반환값은 BookShelfIterator에 대한 instance, 이것을 상위의 iterator class type인 it에 저장. while 문에서 hasNext()와 next()를 사용하고 있음. 역방향으로 진행하는 reverse_iterator()를 정의할 수 있음. 특정위치로 jump 하는 jump_iterator()도 정의 가능. java.util.Iterator class를 import 해서 특정 class 내의 요소를 반복적 으로 선택할 수 있음. 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실