Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Slides:



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

.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
Entity Relationship Diagram
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
6 장. ER-관계 사상에 의한 관계 데이터베이스 설계
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
자바 5.0 프로그래밍.
제7장 클래스와 객체.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
23장. 구조체와 사용자 정의 자료형 2.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
10장. 예외처리.
자바 5.0 프로그래밍.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
CHAP 12. 리소스와 보안.
C#.
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
Method & library.
자바 5.0 프로그래밍.
프로그래밍 개요
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
Chapter 03. 관계 데이터베이스 설계.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
Power Java 제11장 상속.
데이터 베이스 DB2 관계형 데이터 모델 권준영.
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
객체기반 SW설계 팀활동지 4.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
문성우 SQL 실습 Part Ⅰ 문성우.
암호학 응용 Applied cryptography
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
14 뷰(View) 뷰의 개념 뷰 관리.
Part 2 개념적 데이터 모델 Copyright © 2006 by Ehan Publishing Co. All rights reserved.
3. 모듈 (5장. 모듈).
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
발표자 : 이지연 Programming Systems Lab.
ER-관계 사상에 의한 관계데이터베이스 설계 충북대학교 구조시스템공학과 시스템공학연구실
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
제 4 장 Record.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
 6장. SQL 쿼리.
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
6 객체.
Presentation transcript:

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 제 8 장 객체 지향 데이터베이스 새로운 데이터베이스 응용 객체 지향 데이터 모델 객체 지향 언어 영속 프로그래밍 언어 영속 C++ 시스템 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 새로운 데이터베이스 응용 데이터 처리 유형의 어플리케이션용으로 설계된 데이 터 모델은 CAD, CASE, 멀티미디어와 이미지 데이터베 이스 및 문서/하이터텍스트 데이터베이스와 같은 신기 술에는 부적합하다. 이들 새로운 응용에서는 데이터베이스 시스템이 다음 과 같은 기능을 처리하도록 요구한다. 복합 데이터형 데이터 캡슐화 및 추상 데이터 구조 인덱싱 및 질의에 있어 고상한 방법 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체 지향 데이터 모델 관대하게 말하면, 객체는 E-R 모델의 엔티티에 상응한다. 객체 지향 패러다임은 객체에 관련한 코드와 데이터를 하 나의 단위로 캡슐화하는데 근거한다. 객체 지향 데이터 모델은 E-R 모델같이 논리적 모델이다. 객체 지향 프로그래밍 패러다임(Smalltalk, C++)을 데이 터베이스 시스템에의 적용 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체 구조 객체에 관련된 사항은 다음과 같다 객체에 대한 데이터를 내포하는 변수의 집합. 각 변수의 값은 자체가 객체이다. 객체가 반응하는 메시지의 집합. 각 메시지는 0이상의 매개 변수를 가질 수 있다. 메시지를 구현하는 코드의 본체인 메소드의 집합. 메소드는 메시지 에 대한 응답으로 값을 반환한다. 데이터의 물리적 표현은 객체의 구현자에게만 보인다. 메시지와 응답은 객체에의 외부 인터페이스만을 제공한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 메시지와 메소드 메시지라는 용어는 반드시 물리적 메시지 전달을 내포한 필요는 없다. 메시지는 프로시저 호출로 구현될 수 있다. 메소드는 다음과 같은 기능을 가진 범용 언어로 작성된 프로그램 이다. - 객체 자체내의 변수만이 직접 참조될 수 있다. - 다른 객체의 데이터는 메시지를 보냄으로써만이 참조된다. 정확히 말하면, 엔티티의 각 애트리뷰트는 하나의 변수와 두 개의 메소드로 표현되어야 한다. 예를 들어, 애트리뷰트 address는 변수 address와 두 개의 메시지 get-address와 set address로 표현된다. 편의상, 많은 객체 지향 모델에서는 다른 객체의 변수에 직접 액세스 를 허용한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체 클래스 유사한 객체들은 클래스로 그룹핑되고, 그러한 각 객체를 그 클래 스의 사례라 한다. 클래스내의 모든 객체는 다음을 공통으로 갖는다 - 변수형 - 메시지 인터페이스 - 메소드 변수에 할당되는 값은 다를 수 있다 예: 사람 객체를 person클래스로 그룹핑한다. 클래스는 E-R모델의 엔티티 집합과 유사하다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 클래스 정의 예제 class employee { /* Variables */ string name; string address; date start-date; int salary; /* Messages */ int annual-salary(); string get-name(); string get-address(); int set-address(string new-address); int employment-length(); } ; 엄격한 캡슐화에서는 다른 변수를 읽고 설절하는 메소드가 또한 요구된 다 employment-length는 유도 애트리뷰트의 예이다 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 상속 예를 들어, 은행 종업원 클래스와 유사한 은행 고객 클래스. 두 클래스는 모두 name과 address 같은 변수와 메시지는 공통으로 갖는다. 그러나, 종업원의 salary와 고객의 credit-rating 같이 각 클래스에 특정한 변수와 메시지가 있다. 모든 종업원은 사람이다. 따라서, employee는 person의 세분화이다. 이와 비슷하게, customer는 person의 세분화이다. person, employee 및 customer 클래스를 생성한다 person클래스에 연관된 모든 사람들에게 적용 가능한 변수/메시지 클래스 employ에 연관된 종업원에 특정한 변수/메시지. 고객에도 유사하다 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 상속(계속) 클래스를 ISA 계층으로 세분화한다 person 클래스에 속한 변수/메시지는 customer와 employee 클래스에 상속된다. 다음은 결과 클래스 계층이다 person employee customer officer teller secretary E-R 모델의 ISA 계층과 유사함에 유의하라 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 클래스 계층 정의 class person { string name; string address; } ; class customer isa person { int credit-rating; class employee isa person { date start-date; int salary; class officer isa employee { int office-number; int expense-account-number; . Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 클래스 계층 예제(계속) 클래스 officer내 객체의 모든 변수 리스트 - office-number,expense-account-number: 지역적으로 정의됨 - star t-date,salary: employee에서 상속됨 - name,address: person에서 상속됨 메소드도 변수와 유사하게 상속된다. 대치성 - 클래스(예를 들어, person)의 어떤 메소드도 person의 서브 클래스 officer와 같이 어떠한 서브 클래스에 속한 어떤 객체 내에서도 호출될 수 있다. 클래스 범위. 클래스내 모든 객체의 집합. 두 가지 선택 사항이 있다. 1. Employee 클래스 범위에는 모든 officer, teller 및 secretary 객체를 포함한다. 2. Employee 클래스 범위에는 officer, teller 또는 secretary 같은 서브 클래스에 는 속하지 않는 종업원 객체만을 포함한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 다중 상속의 예제 은행 예의 클래스 DAG person employee customer full-time part-time teller secretary officer full-time-teller part-time-teller full-time-secretary part-time-secretary Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 다중 상속 클래스/서브 클래스 관계는 방향성 비순환 그래프(DAG)로 표현된다 - 클 래스는 하나 이상의 수퍼 클래스를 가질 수 있다. 클래스는 그의 모든 수퍼 클래스로 부터 변수와 메소드를 상속한다. 모호성의 가능성이 있다. 예를 들어, 두 개의 수퍼 클래스로부터 상속되 는 같은 이름을 가진 변수. 에러 처리하기 또는 변수의 재명명 같은 해결 책이 있다. 다중 상속을 이용해 객체의 “역할”을 모델링할 수 있다. person은 student, teacher 또는 footballplayer 또는 세 가지 모두의 역할을 할 수 있다. 여러 클래스로부터 상속하는 student-teacher 및 student-teacher-footballplayer와 같은 서브 클래스를 생성한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체 식별성 객체는 변수의 값 또는 메소드 정의의 일부 또는 전부가 시간에 따 라 변하더라도 그의 정체성을 유지한다. 객체 식별성은 객체 지향이 아닌 프로그래밍 언어 또는 데이터 모 델에서의 식별성보다 강력한 개념이다. - 값 - 데이터 값 ; 관계형 시스템에서 사용된다. - 이름 - 사용자가 제공하는 ; 프로시저내의 변수에 사용된다 - 내장 - 데이터 모델 또는 프로그래밍 언어에 내장된 식별성 * 사용자가 제공하는 식별자가 필요치 않다. * 객체 지향 시스템에서 사용되는 식별성을 형성한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체 식별자 객체 식별자는 객체를 유일하게 식별하는데 사용된다 - 다른 객체를 참조하기 위해 객체의 필드로서 저장될 수 있다. - 예를 들어, person 객체의 spouse 필드는 다른 person 객체의 식별자일 수 있다. - 시스템이 생성할 수도 있고(데이터베이스가 생성) 외부적으로 생성할 수도 있다(사회 보장 번호 같은). Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체 내포 bicycle wheel brake gear frame rim spokes tire lever pad cable 설계내의 각 구성 요소는 다른 구성 요소를 내포할 수 있다. 객체의 내포로 모델링 될 수 있다. 다른 객체를 내포하는 객체를 복합 또는 혼성 객체라 한다. 내포의 여러 계층이 내포 계층을 생성한다. 링크는 is-a가 아닌 is-part-of로 해석한다. 서로 다른 사용자가 데이터를 서로 다른 단위로 볼 수 있도록 한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체 지향 언어 객체 지향 개념은 설계 도구로서 사용될 수 있으며 예를 들어, 관계형 데이터베이스에 적용될 수 있다 (E-R도로 데이터를 모델링하고 릴레이션의 집합으로 변환하는 것 과 유사). 객체 지향 개념은 데이터베이스를 조작하는데 사용되는 프로그래밍 언어에 결합될 수 있다. 객체-관계 시스템 - 관계형 언어에 복합형과 객체 지향성을 추 가. 영속 프로그래밍 언어 - 객체 지향 프로그래밍 언어에 영속성과 집합과 같은 개념을 추가해 데이터베이스를 다루도록 확장. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 영속 프로그래밍 언어 영속 프로그래밍 언어 어떤 명시적인 포맷 변환 없이도 객체가 데이터베이스에 생성되고 저장되도록 한다(포맷 변환은 내부적으로 수행된다). 객체들이 메모리 내에서 조작되도록 한다 - 데이터베이스로부터 명시적으로 로드되거나 저장할 필요가 없다. SQL 같은 데이터 조작어를 통할 필요 없이 프로그래밍 언어 내에서 데이터가 직접 조작되도록 한다. 대부분 프로그래밍 언어의 능력으로 인해 데이터베이스에 손상을 입히는 프로그래밍 에러를 일으키기 쉽다. 언어의 복잡성으로 자동적인 고급 최적화가 보다 어려워진다. 선언적인 질의는 잘 지원하지 못한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체의 영속성 임시 객체에 영속성을 부여하는 방법은 다음중 하나에 의해 이룰 수 있다. 클래스 - 클래스의 모든 객체가 영속적이도록 선언 ; 단순하지만 융통 성이 없다. 생성 - 임시 객체를 생성하기 위한 구문을 확장해 영속 객체를 생성하 도록 한다. 표시 - 프로그램 실행 이후 영속적이어야 할 객체에 프로그램이 끝나 기 전에 영속적인 것으로 표시를 한다. 참조 - 루트 영속 객체를 선언한다 ; 루트 객체로 부터 직간접으로 참 조되는 객체는 영속적이다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체 식별성과 포인터 영속 객체에는 영속 객체 식별자가 할당된다. 식별성의 영속 정도 프로시저내 - 식별성이 한 프로시저의 실행중에만 영속한다. 프로그램내 - 식병성이 한 프로그램 또는 질의 실행중에만 영속 한 다. 프로그램간 - 식별성이 한 프로그램 실행으로 부터 다른 프로그 램으 로 영속한다. 영속적 - 식별성이 프로그램 실행과 데이터의 구조 재조정에 걸쳐 영 속한다 ; 객체 지향 시스템에는 요구된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 객체 식별성과 포인터(계속) C++와 같은 객체 지향 언어에서는 객체 식별자가 실제 로 메모리내 포인터이다. 영속 포인터 - 프로그램 실행 이후에도 영속한다 ; 데이 터베이스 내의 포인터로 생각할 수 있다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 영속 객체의 저장 및 액세스 데이터베이스에서 객체를 찾는 법 객체에 이름주기(파일에 이름을 주듯이) - 많은 수의 객 체에는 확대할 수 없다. 일반적으로는 객체가 아닌 클래스 범위와 기타 객 체의 집단에만 주어진다. 객체에 객체 식별자 또는 영속 포인터 부여 - 외부적으 로 저장될 수 있다. - 모든 객체에 객체 식별자를 갖는다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 영속 객체의 저장 및 액세스(계속) 데이터베이스에서 객체를 찾는 법(계속): 객체의 집단을 저장하고 프로그램에서 집단을 반복 검색하여 필요한 객체를 찾는다. 객체의 집단을 collection 형으로 모델링 한다. 객체 범위 - 클래스에 속하는 모든 객체의 집단 ; 통 상 영속 객체를 가질 수 있는 모든 객체에 대해 유지 된다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 - 영속성을 지원하기 위해 애트리뷰트와 메소드를 가진 클래스 Persistent-Object로 선언한다. - 오버로딩 - 새로운 형에 적용할 때 표준 함수명과 연산자를 재정의하 는 기능(즉, +, -, 포인터 역 참조 연산자 ->) C++ 언어를 확장하지 않고 영속성을 제공하면 - 구현하기가 비교적 쉽다 - 그러나 사용하기는 보다 어렵다 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 ODMG C++ 객체 정의 언어 영속성을 지원하기 위해 C++를 확장한 표준화 언어 ODMG 표준에서는 템플릿 클래스와 클래스 라이브러리를 통해 대부분의 기능을 제공하면서 C++를 가급적 적게 확장하려 하고 있다. 템플릿 클래스 Ref<class>는 참조(영속 포인터)를 지정하는데 사 용된다. 템플릿 클래스 Set<class>는 객체의 집합을 정의하는데 사용된다. insert_element와 delete-element 같은 메소드를 제공한다. C++ ODL은 C++형 정의 구문을 소폭으로 확장하였다. 예: 참조 무결성 제약 조건을 지정하기 위해 inverse 표기법을 사용 한다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 ODMG C++ ODL : 예제 class Person : public Persistent_Object { public : String name ; String address ; } ; class Customer : public Person { Date member_from ; int customer_id ; Ref<Branch> home_branch ; Set<Ref<Account>> accounts inverse Account :: owners ; Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 ODMG C++ ODL : 예제(계속) class Account : public Persistent_Object { private : int balance; public: int number; Set<Ref<Customer>> owners inverse Customer :: accounts; int find_balance(); int update_balance(int delta); } ; Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 ODMG C++ 객체 조작어 new(db)와 같은 C++연산자의 영속 버전을 사용한다. Ref<Account> account = new(bank_db) Account; new는 객체를 메모리가 아닌 특정 데이터베이스에 할당한다. 역참조 연산자 ->를 Ref<Customer> 객체에 적용하면 참조되는 객체를 메모리로 로드하고(없으면) 객체에 메모리내 포인터를 반 환한다. 클래스의 Constructor - 객체가 생성될 때 객체를 초기화하는 특 수 메소드 ; new가 실행될 때 자동으로 호출된다. 클래스의 Destructor - 클래스내 객체가 삭제될 때 호출되는 특수 메소드 Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수 ODMG C++ OML : 예제 int create _account_owner (String name, String address) { Database * bank_db ; bank_db = Database :: open("Bank-DB") ; Transaction Trans ; Trans.begin() ; Ref<Account> account = new(bank_db) Account ; Ref<Customer> cust = new(bank_db) Customer ; cust->name = name ; cust->address = address ; cust->accounts.insert_element(account) ; account->owners.insert_element(cust) ; ... Code to initialize customer_id, account number etc. Trans.commit() ; } Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수

ODMG C++ OML : Iterator의 예제 int print_customers() { Database * bank_db ; bank_db = Database :: open("Bank-DB") ; Transaction Trans ; Trans.begin() ; Iterator<Ref<Customer>> iter = Customer :: all_customers.create iterator() ; Ref<Customer> p ; while(iter.next(p)) { print_cust(p) ; } Trans.commit() ; Iterator 구조는 집합내 객체들을 통한 처리를 돕는다. Copyrightⓒ 1999 서울산업대학교 전자계산학과 석상기 교수