the online grade book

74
The Online Grade Book Charles R. Moen, M.S. Morris M. Liaw, Ph.D. October 18, 2003 A Case Study in Learning About Object-Oriented Database Technology ACET 2003 ACET 2003

Upload: oleg

Post on 14-Jan-2016

51 views

Category:

Documents


0 download

DESCRIPTION

ACET 2003. The Online Grade Book. A Case Study in Learning About Object-Oriented Database Technology. Charles R. Moen, M.S. Morris M. Liaw, Ph.D. October 18, 2003. Why do we need OODB?. When creating an application with an object-oriented programming language… - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: The Online Grade Book

The Online Grade BookThe Online Grade Book

Charles R. Moen, M.S.Morris M. Liaw, Ph.D.

October 18, 2003

A Case Study in Learning About Object-Oriented Database TechnologyA Case Study in Learning About Object-Oriented Database Technology

ACET 2003ACET 2003

Page 2: The Online Grade Book

2

Why do we need OODB?Why do we need OODB?

1. When creating an application with an object-oriented programming language…

• Objects can be saved without translating them to another data structure

• Vice versa, stored objects can be loaded without translation

• Efficiency and speed!

Page 3: The Online Grade Book

3

Why do we need OODB?Why do we need OODB?

2. When creating an application that uses complex data, e.g., building a space shuttle, creating an electronic medical record system, storing bioinformatics sequence information,…• Complex data can be stored without

complicated table schemas

• Data can be retrieved by pointer traversal, no need for time-consuming joins

• Efficiency, speed, and complexity!

Page 4: The Online Grade Book

4

Background HighlightsBackground Highlights

Object-oriented database• Persistent store of objects created with an OO

programming language

Advantages• No need to convert objects to tables• Capable of storing entities with complex relationships • Faster—no need for joins

Some important points• No tables, no need for normalization• Capable of computing transitive closure• Relational databases are better for business apps

Page 5: The Online Grade Book

5

How do we teach OODB?How do we teach OODB?

CSCI 5433 Object-Oriented Database Systems• Prerequisites

- CSCI 3233 Object-Oriented Design and Programming (C++)- CSCI 5333 Database Management Systems (DB theory)

• Learning Goals- Learn how to use OOAD for database development- Learn how to use OO technology to develop an OO

database and a Web application that uses it as a backend

• Tools- Object Modeling Technique (OMT)- ObjectStore and MS Visual C++

• Project- The Online Grade Book

Page 6: The Online Grade Book

6

ResourcesResources

1.TextbookObject-Oriented Modeling and Design

for Database ApplicationsMichael Blaha & William PremerlaniPrentice-Hall, 1998

ISBN 0-13-123829-9

Page 7: The Online Grade Book

7

Resources (Cont.)Resources (Cont.)

2.Software• ObjectStore

- OO database management software- Progress Software Corporation

- http://www.progress.com/- http://www.objectstore.net/index.ssp

- Educational license available

• MS Visual C++- ObjectStore Wizards create C++ code- Writing the callbacks- Compiling the DLLs

Page 8: The Online Grade Book

8

Resources (Cont.)Resources (Cont.)

3.ObjectStore Manuals• Extensive PDF documentation

• The most important manuals- Rapid Database Development

- ObjectForms Publisher Tutorial

- Inspector Tutorial

- ObjectForms User Guide

- C++ API User Guide

- Building C++ Interface Applications

Page 9: The Online Grade Book

9

Resources (Cont.)Resources (Cont.)

4. Computer Lab• Dedicated room with seven PCs

• PC configuration

- Windows 2000

- ObjectStore

- MS Visual C++

• ObjectStore Mini Server

Page 10: The Online Grade Book

10

Teaching TechniqueTeaching Technique

Lecture• Intro to OODB

Student presentations• Based on textbook and ObjectStore manuals

Project assignment• Online Grade Book• Personal home page with links to the project

Exams• Midterm and final

Page 11: The Online Grade Book

11

Learning GoalsLearning Goals

1. Learn how to use OOAD for database development

• OMT Methodology

Page 12: The Online Grade Book

12

OMT MethodologyOMT Methodology

Object Modeling Technique (OMT)

Developed by James Rumbaugh

Consists of:• Concepts about object modeling• A process called the “OMT Process”• Modeling notation

Learning Goal 1 – Learning How to Use OOADLearning Goal 1 – Learning How to Use OOADLearning Goal 1 – Learning How to Use OOADLearning Goal 1 – Learning How to Use OOAD

Page 13: The Online Grade Book

13

The OMT ProcessThe OMT Process

1. Conceptualization

2. Analysis

3. System design

4. Detailed design

5. Implementation

6. Maintenance

Learning Goal 1 – Learning How to Use OOADLearning Goal 1 – Learning How to Use OOADLearning Goal 1 – Learning How to Use OOADLearning Goal 1 – Learning How to Use OOAD

Page 14: The Online Grade Book

14

Learning GoalsLearning Goals

1. Learn how to use OOAD for database development

• OMT Methodology

2. Learn how to use OO technology to develop an OO database and a Web application that uses it as a backend

• Project assignment—“Online Grade Book”

Page 15: The Online Grade Book

15

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Project AssignmentProject Assignment

Create an Online Grade Book• Web site where students can check grades• The teacher will record the grades in an OODB• Course grade calculated automatically, according to

weight percentages assigned by the teacher

OMT Process• Conceptualization Report• Analysis Report• Project Report

Implementation• ObjectStore and C++• Final Demonstration

Page 16: The Online Grade Book

16

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

OMT Process StepsOMT Process Steps

1. Conceptualization• Business analysts or users conceive of

an application and list requirements

Page 17: The Online Grade Book

17

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Step 1, ConceptualizationStep 1, Conceptualization

Why is the Online Grade Book needed?• Students can get grades without contacting the teacher• Teacher will not have to contact each individual student

What problems will it solve?• Problem statement: Develop software for an online grade book

using ObjectStore. The following capabilities must be provided:- Provide an automated system to show students their grades

- Allow the student to see his grades after entering his ID

- Display all the grades for that student, including the midterm exam grade, the final exam grade, the presentation grade, the group project grade, the individual project grade, the course score, and the course letter grade.

- Permit the teacher to change all the student data, including the name, password, and grades

- Permit the teacher to change the grade weights for the grade components

Page 18: The Online Grade Book

18

Step 1, ConceptualizationStep 1, Conceptualization

What problems will it solve? (Cont.)• Detailed software requirements: (examples)

- The system shall have an ID for each user.- The ID shall be an integer assigned to each student in a class by the

teacher.- The system shall provide a course ID for each user.- The course ID shall identify the specific course that the student is

enrolled in, including the course number, section, semester, and year.- The system shall check the ID of the user when he wants to check his

grades.- The system shall identify whether a user is a student or an administrator.

Where will it be used?• Environment—UHCL campus• System requirements

When is it needed?—The end of the semester

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Page 19: The Online Grade Book

19

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Step 1, ConceptualizationStep 1, Conceptualization

Who is the application for?• Actors

AdministratorStudent

Edit Grade Weights

View Grades

Edit Student Data

How will it work?• Scenarios and use cases

Page 20: The Online Grade Book

20

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Step 1, ConceptualizationStep 1, Conceptualization

1 WHO IS THE APPLICATION FOR?1.1 USERS

1.1.1 Student—Description, Responsibilities, Success Criteria1.1.2 Administrator —Description, Responsibilities, Success Criteria

2 WHAT PROBLEMS WILL IT SOLVE?2.1 APPLICATION OVERVIEW2.2 PROBLEM STATEMENT2.3 DETAILED SOFTWARE REQUIREMENTS

3 WHERE WILL IT BE USED?3.1 ENVIRONMENT (e.g., UHCL classrooms)3.2 SYSTEM REQUIREMENTS

3.2.1 Server Software (e.g., MS IIS, ObjectStore)3.2.1 Client Software (e.g., modern Web browser)3.2.2 Development Software (e.g., ObjectStore, MS Visual C++, Notepad)

4 WHEN IS IT NEEDED?4.1 PROJECT DEADLINE

Conceptualization Report

Page 21: The Online Grade Book

21

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Step 1, ConceptualizationStep 1, Conceptualization

5 WHY IS IT NEEDED?5.1 CONTEXT (e.g., class assignment)5.2 OBJECTIVES

6 HOW WILL IT WORK?6.1 SCENARIOS

6.1.1 Initial setup and addition of students by the Administrator6.1.2 Adding the grades6.1.3 Checking the grades

6.2 USE CASES6.2.1 Use case diagram6.2.2 Use case descriptions

6.2.2.1 View grades—preconditions, flow, post conditions6.2.2.2 Edit student data —preconditions, flow, post conditions6.2.2.3 Edit grade weights —preconditions, flow, post conditions

6.3 INITIAL ARCHITECTURE

Conceptualization Report (Cont.)

Page 22: The Online Grade Book

22

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

OMT Process StepsOMT Process Steps

1. Conceptualization• Business analysts or users conceive of

an application and list requirements

2. Analysis• Real-world models are constructed• Specify what to do, not how to do it

Page 23: The Online Grade Book

23

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Step 2, AnalysisStep 2, Analysis

Attribute-based approach (not OO)• Used with relational databases• List attributes in related groups• Check normal forms

Course( courseID, courseName, teacherName, departmentName)

Course( courseID, courseName, teacherID , departmentID )

Teacher( teacherID, teacherName )

Department( departmentID, departmentName )

Page 24: The Online Grade Book

24

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Step 2, AnalysisStep 2, Analysis

Entity-based approach (OO technique)• Real-world entities and relationships

between them• Advantages:

- Fewer entities than attributes- No need to check normal forms- Compatible with OO program code

Course

courseIDcourseName

Teacher

teacherName

Department

departmentNameteaches taught in

Page 25: The Online Grade Book

25

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Step 2, AnalysisStep 2, Analysis

Object Model(Defines

the structure,e.g., classes)Dynamic Model

(State Diagram,but not used for databases)

Functional Model(Defines operations of objects)

OMT Methodology Models

Page 26: The Online Grade Book

26

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

• Develop software for an online grade book using ObjectStore. The following capabilities must be provided:

- Provide an automated system to show students their grades

- Allow the student to see his grades after entering his ID

- Display all the grades for that student, including the midterm exam grade, the final exam grade, the presentation grade, the group project grade, the individual project grade, the course score, and the course letter grade.

- Permit the teacher to change all the student data, including the name, password, and grades

- Permit the teacher to change the grade weights for the grade components

Object ModelObject Model

Start with the problem statement

Page 27: The Online Grade Book

27

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

• Develop software for an online grade book using ObjectStore. The following capabilities must be provided:

- Provide an automated system to show students their grades

- Allow the student to see his grades after entering his ID

- Display all the grades for that student, including the midterm exam grade, the final exam grade, the presentation grade, the group project grade, the individual project grade, the course score, and the course letter grade.

- Permit the teacher to change all the student data, including the name, password, and grades

- Permit the teacher to change the grade weights for the grade components

Object ModelObject Model

Start with the problem statement Locate nouns to find the entities for classes

Page 28: The Online Grade Book

28

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

• Develop software for an online grade book using ObjectStore. The following capabilities must be provided:

- Provide an automated system to show students their grades

- Allow the student to see his grades after entering his ID

- Display all the grades for that student, including the midterm exam grade, the final exam grade, the presentation grade, the group project grade, the individual project grade, the course score, and the course letter grade.

- Permit the teacher to change all the student data, including the name, password, and grades

- Permit the teacher to change the grade weights for the grade components

Object ModelObject Model Eliminate unnecessary classes that are:• Irrelevant: software, book, capabilities, system• Redundant: data, components• Used only as values (attributes): grades, score, ID, name, password

Page 29: The Online Grade Book

29

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Teacher

Object ModelObject Model

WeightStudent

Establish the model’s basic structure

Page 30: The Online Grade Book

30

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Object ModelObject Model List the attributes

Weight

midtermWeight: floatfinalWeight: floatpresentationWeight: floatgroupProjectWeight: floatindividualProjectWeight: floatcourseID: char[10]

TeacherStudent

fName: char[50]mName: char[50]lName: char[50]midterm: floatfinal: floatpresentation: floatgroupProject: floatindividualProject: floatcourseScore: floatcourseGrade: char[10]

Page 31: The Online Grade Book

31

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Object ModelObject Model Add associations and refine the model

Weight

midtermWeight: floatfinalWeight: floatpresentationWeight: floatgroupProjectWeight: floatindividualProjectWeight: floatcourseID: char[10]

TeacherStudent

fName: char[50]mName: char[50]lName: char[50]midterm: floatfinal: floatpresentation: floatgroupProject: floatindividualProject: floatcourseScore: floatcourseGrade: char[10]weightTable: os_Collection<Weights *>

Person

userID: char[10] password: char[10]

Page 32: The Online Grade Book

32

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Object Model NotationObject Model NotationClass

Association

Multiplicity

Inheritance

Attributes

Weight

midtermWeight: floatfinalWeight: floatpresentationWeight: floatgroupProjectWeight: floatindividualProjectWeight: floatcourseID: char[50]

TeacherStudent

fName: char[50]mName: char[50]lName: char[50]midterm: floatfinal: floatpresentation: floatgroupProject: floatindividualProject: floatcourseScore: floatcourseGrade: char[10]weightTable: os_Collection<Weights *>

Person

userID: char[10] password: char[10]

Page 33: The Online Grade Book

33

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Functional ModelFunctional Model

Start with the use cases1. View grades2. Edit student data (includes adding grades)3. Edit grade weights

Straightforward object creation, deletion, or retrieval? attribute value update?—no need for pseudocode

Use case 2 requires pseudocode for the course grade, since it is calculated

Page 34: The Online Grade Book

34

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Functional ModelFunctional ModelUse Case 2: This is the pseudocode for setting the course score and the course grade for a student. They must be calculated, and the calculations are triggered when the administrator sets the student’s final exam score.

Student::setFinal ( finalGrade )self.final := finalGrade;self#setCourseScore( );return;

Student::setCourseScore ( )score := 0;score += self.midterm * self.weightTable.midtermWeight;score += self.final * self.weightTable.finalWeight;score += self.presentation * self.weightTable.presentationWeight;score += self.groupProject * self.weightTable.groupProjectWeight;score += self.individualProject * self.weightTable.individualProjectWeight;self.courseScore := score;self#setCourseGrade( );return;

Page 35: The Online Grade Book

35

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Functional ModelFunctional Model(Use Case 2 cont.)

Student::setCourseGrade ( )if self.courseScore >= 93 then self.courseGrade := “A”;else if self.courseScore >= 90 then self.courseGrade := “A-”;else if self.courseScore >= 87 then self.courseGrade := “B+”;else if self.courseScore >= 83 then self.courseGrade := “B”;else if self.courseScore >= 80 then self.courseGrade := “B-”;else if self.courseScore >= 77 then self.courseGrade := “C+”;else if self.courseScore >= 73 then self.courseGrade := “C”;else if self.courseScore >= 70 then self.courseGrade := “C-”;else self.courseGrade := “F”;end ifreturn;

Page 36: The Online Grade Book

36

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Navigational FlowNavigational Flow

All pages in the Web site

Block diagram—each page is a rectangle with a descriptive name

All links between the pages drawn as directional lines

Initial design of each page usually developed at the same time

Page 37: The Online Grade Book

37

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Navigational FlowNavigational Flow

Change

AdminChange Dialog OK or Cancel

Logout

AdminAdd Student Dialog

AdminGrade Weight Dialog

Add A New Student Edit Grade Weights

Admin Log InAdministrator Log In

Admin?

OK

Y

N

AdminGrade Report

Delete

Enter Student ID

Found?

StudentGrade Report

OK

Y

N

Page 38: The Online Grade Book

38

Step 2, AnalysisStep 2, AnalysisStep 2, AnalysisStep 2, AnalysisLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Web Page LayoutsWeb Page Layouts

Page 39: The Online Grade Book

39

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Step 2, AnalysisStep 2, Analysis

Analysis Report1 NAVIGATIONAL FLOW BETWEEN WEB PAGES

2 WEB I/O COMPONENTSA list of the forms, buttons, and links for each Web page

3 WEB PAGE LAYOUTSThe design of each Web page in the navigational flow chart

4 ANALYSIS OBJECT MODEL

5 ANALYSIS FUNCTIONAL MODEL

5.1 USE CASES (a list of the use cases)

5.2 PSEUDOCODE

6 DATA DICTIONARY

Page 40: The Online Grade Book

40

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

OMT Process StepsOMT Process Steps

1. Conceptualization• Business analysts or users conceive of

an application and list requirements

2. Analysis• Real-world models are constructed• Specify what to do, not how to do it

3. System Design• Develop the high-level architecture

Page 41: The Online Grade Book

41

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Created bythe developer

Step 3, System DesignStep 3, System Design

HTTP

:oodb server:personal computer

ObjectStoreApplicationPackages

Web ServerClient

Browser

*.DLL

TemplateFiles

*.OFT *.DB

CallbackFunctions

(e.g., the WebConnect CGI programand the Template Processor)

PersistentObjects

Page 42: The Online Grade Book

42

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

OMT Process Steps (Cont.)OMT Process Steps (Cont.)

4. Detailed Design• Adjustments to simplify implementation

and improve execution

Page 43: The Online Grade Book

43

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Step 4, Detailed DesignStep 4, Detailed Design

Simplify the object model

Weight

courseID: char[10]midtermWeight: floatfinalWeight: floatpresentationWeight: floatgroupProjectWeight: floatindividualProjectWeight: float

Teacher

Person

userID: char[10]password: char[10]

Student

fName: char[50]mName: char[50]lName: char[50]midterm: floatfinal: floatpresentation: floatgroupProject: floatindividualProject: floatcourseScore: floatcourseGrade: char[10]weightTable: os_Collection<Weights *>

Analysis Object Model Detailed Design Object Model

Weight

midtermWeight: char[50]finalWeight: char[50]presentationWeight: char[50]groupProjectWeight: char[50]individualProjectWeight: char[50]courseID: char[50]

Person

userID: char[50]password: char[50]fName: char[50]mName: char[50]lName: char[50]midterm: char[50]final: char[50]presentation: char[50]groupProject: char[50]individualProject: char[50]courseScore: char[50]courseGrade: char[10]courseID: char[50]admin: char[10]

Page 44: The Online Grade Book

44

Step 4, Detailed DesignStep 4, Detailed DesignStep 4, Detailed DesignStep 4, Detailed DesignLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Database DesignerDatabase Designer GUI-based ObjectStore program Used to draw the “Detailed Design” object model Saves the database schema in a *.dbs file

Page 45: The Online Grade Book

45

Step 4, Detailed DesignStep 4, Detailed DesignStep 4, Detailed DesignStep 4, Detailed DesignLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Database DesignerDatabase Designer Create the classes and save as gradebook.dbs

Page 46: The Online Grade Book

46

Step 4, Detailed DesignStep 4, Detailed DesignStep 4, Detailed DesignStep 4, Detailed DesignLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Database DesignerDatabase Designer Create the classes and save as gradebook.dbs

Page 47: The Online Grade Book

47

Step 4, Detailed DesignStep 4, Detailed DesignStep 4, Detailed DesignStep 4, Detailed DesignLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Database DesignerDatabase Designer Create the classes and save as gradebook.dbs

Page 48: The Online Grade Book

48

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

OMT Process Steps (Cont.)OMT Process Steps (Cont.)

4. Detailed Design• Adjustments to simplify implementation

and improve execution

5. Implementation• Translate the design into code

Page 49: The Online Grade Book

49

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Step 5, ImplementationStep 5, Implementation

ObjectStore tools for implementation• Visual C++ Wizards (e.g., Component Wizard)• Inspector• Publisher• Mini Server

MS Visual C++• Run the ObjectStore Wizards• Write the methods from the functional model• Write the callback functions for adding,

deleting, and editing items in the database

Page 50: The Online Grade Book

50

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Component WizardComponent Wizard

Automatically writes code for all classes created by Database Designer• Including “get” and “set” methods• Inserts “TODO” comments as placeholders

for recommended modifications• Creates main( ), which can be modified to

create and populate the OODB file

When these files are compiled the DLL is created

Page 51: The Online Grade Book

51

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Component WizardComponent Wizard Begin by starting MS Visual C++ In the File menu, select New In Projects, select “ObjectStore Component Wizard”

Page 52: The Online Grade Book

52

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Component WizardComponent Wizard In the Wizard, open the gradebook.dbs created by

Database Designer Then skip to the third Wizard screen, and select

“Console Application”

Page 53: The Online Grade Book

53

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Component WizardComponent Wizard After clicking “Finish,” a complete ObjectStore project

will be created, including these files:• Weight.h, Weight.cpp, Person.h, and Person.cpp

- Attributes- Constructors- “set” and “get” methods

• gradebook.def—DLL definition file• gradebook.dsp—DLL project file• gradebook.dsw—workspace file• schema.scm—schema definition used by automatic processes

A Console project will also be created, including:• main.cpp —will create the database file when executed

Page 54: The Online Grade Book

54

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Visual C++Visual C++ Write the “special” methods

• Any methods other than routine “set” and “get” methods• Methods that are specified in the functional model• Example: Setting the course grade

void Student::set_CourseGrade(char *value){if(value) {

int len = strlen(value);if(len < 10)

strcpy(CourseGrade, value);else {

strncpy(CourseGrade, value, 9);CourseGrade[9]=0;

}}else

CourseGrade[0]=0;}

Generated by the Wizard:void set_CourseGrade(double score) {

if( score >= 93.0 ) {strcpy(CourseGrade, "A");

}else if( score >= 90.0 ){

strcpy(CourseGrade, "A-");}

/* … */else {

strcpy(CourseGrade, "F");}

};

Added by the developer:

Page 55: The Online Grade Book

55

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Visual C++Visual C++ Create the DLL—Compile the ObjectStore project

(gradebook) that has the Person and Weight classes Create the gradebook.db file to hold the database

• In the Console project (gradebook_console), modify main.cpp

• Compile and execute the Console project

//os_database * db = os_database::open("", 0, 0666);//db->close( );

os_database * db = os_database::open(“gradebook.db", 0, 0666);db->close( );

Page 56: The Online Grade Book

56

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

OS_BEGIN_TXN (tx_transaction_number_0, 0, os_transaction::update)

OS_END_TXN(tx_transaction_number_0)

Weight *aNewWeight = new(db,Weight_type) Weight(25, 25, 15, 15, 20, "2002fa5433");WeightColl->insert(aNewWeight);

os_collection* WeightColl = (os_collection*)WeightRoot->get_value();if(!WeightColl) {

WeightColl = &os_collection::create(db);WeightRoot->set_value(WeightColl);

}

os_database_root *WeightRoot = db->find_root("Weight_root");if(!WeightRoot) {

WeightRoot = db->create_root("Weight_root");}

Visual C++Visual C++ If desired, additional code can be added to main.cpp to

populate the gradebook.db file with some objects

Recompile and execute the Console project

Page 57: The Online Grade Book

57

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Visual C++Visual C++ To update the database content dynamically within the

Web application• The developer must write the C++ code that will make updates

• Callback functions- addItem.cpp- deleteItem.cpp- editItem.cpp

• Added to the DLL when compiled

• “ObjectForms AppWizard” generates a skeleton C++ source file that can be modified

Page 58: The Online Grade Book

58

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Visual C++ CallbacksVisual C++ Callbacks In the File menu, select New In Projects, select “ObjectForms AppWizard”

Page 59: The Online Grade Book

59

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Visual C++ CallbacksVisual C++ Callbacks Select “Publisher callback DLL” Enter “3” because we need three callback functions (for

adding, deleting, and editing) Use meaningful names (e.g., addItem, deleteItem)

Page 60: The Online Grade Book

60

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Visual C++ CallbacksVisual C++ Callbacks Edit the skeleton callbacks in Visual C++

os_database* theDB = SyncOpenWriteDB(dbName, b_wasOpenMVCC);bError = (theDB == NULL);if(!bError) {

TIX_HANDLE(err_objectstore) {OS_BEGIN_TXN(AddItem_txn, 0, os_transaction::update) {

/************************************************** * TODO: Add transaction code *************************************************/}

OS_END_TXN(AddItem_txn);}

TIX_EXCEPTION {bError=TRUE;/****************************************************** * TODO: Add exception handling code *****************************************************/

} TIX_END_HANDLE;

}SyncCloseWriteDB(theDB, b_wasOpenMVCC);

Page 61: The Online Grade Book

61

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Visual C++ CallbacksVisual C++ Callbacks // TODO: Add transaction code

//Get the person root and the person collectionos_database_root *PersonRoot = theDB->find_root("Person_root");if(! PersonRoot) {

bError = TRUE;sprintf(errorStr,"<p>Error looking for root.</p>");

}else {

os_collection* PersonColl = (os_collection*) PersonRoot->get_value();if( ! PersonColl ) {

bError = TRUE;sprintf(errorStr,"<p>Error looking for root value.</p>");

}else {

//Create a new student from the dataPerson *newPerson =

new(theDB,&Person_type) Person(courseid,studentid,lname,fname,mname,admin,coursegrade,midterm,final,presentation,groupproject,individualproject, coursescore,midtermaverage,finalaverage,presenterid,atoi(baddtoroot));

//Insert the new person into the collectionPersonColl->insert(newPerson);

}}

Page 62: The Online Grade Book

62

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

OFT TemplatesOFT Templates

Create the Web pages

HTML with special ObjectForms tags• Server-side code that generates HTML• Used to publish OODB data on a Web page

Created by ObjectForms Publisher

OFT files can be modified• Any text editor• Add formatting to change the page appearance• Refine the code by adding ObjectForms tags

Page 63: The Online Grade Book

63

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

PublisherPublisher

Uses gradebook.db to publish data on the Web page

Creates the *.oft template files in the Publish Wizard

Page 64: The Online Grade Book

64

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

OFT TemplatesOFT Templates

<%include "Headers\GradeBookHeader.html"%><%osdatabase=“C:\gradebook\gradebook_console\gradebook.db"%><%QUERY NAME="query1" OSFUNCTION="osiquery"%><%if query1.Status EQ 0%><TABLE BORDER=0 CELLPADDING=7 CELLSPACING=0 width="745"><!-- table title and headers go here --><%BEGINDETAIL NAME="query1"%>

<TR><TD ALIGN="left" BGCOLOR=#FFFFFF><%CourseID%></TD><TD ALIGN="center" BGCOLOR=#FFFFFF><%MidTermWeight%> %</TD><TD ALIGN="center" BGCOLOR=#FFFFFF><%FinalWeight%> %</TD><TD ALIGN="center" BGCOLOR=#FFFFFF><%PresentationWeight%> %</TD><TD ALIGN="center" BGCOLOR=#FFFFFF><%GroupProjectWeight%> %</TD><TD ALIGN="center" BGCOLOR=#FFFFFF><%IndividualProjectWeight%> %</TD></TR>

<%ENDDETAIL%></TABLE><%else%><%query1.ErrorMsg%><p><%endif%></body></html>

Page 65: The Online Grade Book

65

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

OFT TemplatesOFT Templates

Page 66: The Online Grade Book

66

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Local TestingLocal Testing Publisher Runtime Service

• An ObjectForms service that provides the callback functions• Set the configuration by adding gradebook.DLL• Start the service—runs in a separate console window

Start the MiniServer• An ObjectStore HTTP server• Listens on port 8484 by default

Start your browser, and enter the URL for the opening page of the Online Grade Book• http://129.7.166.73:8484/Grades_submit.html

Page 67: The Online Grade Book

67

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Implementation StepsImplementation Steps

ObjectStoreComponent Wizard

ObjectStoreComponent Wizard

gradebook Projectgradebook Project

gradebook_consoleProject

gradebook_consoleProject gradebook.dbgradebook.db

gradebook.DLLgradebook.DLL

Creates

When compiled,creates

To create andpopulate initially

The OO database

The classes

1. Implement the classes drawn with Database Designer and create the database.

ObjectFormsAppWizard

ObjectFormsAppWizard

Skeletoncallback functions

Skeletoncallback functions

MS Visual C++MS Visual C++

Creates Callback functionsin DLL

Callback functionsin DLL

Modify and compile

When compiled,creates

To add, delete, oredit the data

2. Create the callback functions.

ObjectFormsPublisher

ObjectFormsPublisher

Queries and initial*.OFT templates

Queries and initial*.OFT templates

Formatted*.OFT templates

Formatted*.OFT templates

Text editorText editor

Modify

CreatesModifications

added

The Web pages

3. Create the Web pages.

4. Test with the MiniServer, then make any necessary revisions.

Page 68: The Online Grade Book

68

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Completed ProjectCompleted Project The student ID is used to retrieve the grades

Grades_submit.html

Grades_submit.oft

HTML response displays the grades if the student ID is valid, else an error message says to try again

Page 69: The Online Grade Book

69

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Completed ProjectCompleted Project By clicking on “Administrator Login,” the teacher can

go the admin login page

Grades_admin.html

The grades of all students are displayed to the teacher

Grades.oft

Page 70: The Online Grade Book

70

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Completed ProjectCompleted Project Clicking on “Add A New Student” lets the teacher enter

student data, which is added after clicking “Add”

Grades_add_user.oft Grades_add_commit_user.oftAdd

Clicking on “Edit” lets the teacher change student data

Grades_edit_user.oft

Grades_edit_commit_user.oftEdit

Page 71: The Online Grade Book

71

Step 5, ImplementationStep 5, ImplementationStep 5, ImplementationStep 5, ImplementationLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Completed ProjectCompleted Project By clicking on “View Grade Weights,” the teacher can

view the weight for calculating the course score

Weights.oft

By clicking on “Edit Grade Weights,” the weights can be changed

Weights_edit_user.oft

Weights_edit_commit.oftEdit

Page 72: The Online Grade Book

72

Learning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODBLearning Goal 2 – Developing an OODB

Step 5, ImplementationStep 5, Implementation

Project Report1 SPECIAL FEATURES

A list of any unique features

2 LESSONS LEARNEDProblems and solutions

3 USER NAMES AND PASSWORDS FOR TESTING

4 USER GUIDE

5 FLOW CHART

The final design of the navigational flow chart

6 CODE FOR TEMPLATES AND C++ CALLBACK FUNCTIONS

7 STEPS FOR DEVELOPING AND DEPLOYING

8 DIARY

Page 73: The Online Grade Book

73

ConclusionConclusion

Students were able to learn OO analysis and design with real-world tools

Students were also able to implement an OO database and use it with a Web application that they developed

Page 74: The Online Grade Book

74

Thank You Thank You

Any questions?