Financial Engineering Project Course - PowerPoint PPT Presentation

About This Presentation
Title:

Financial Engineering Project Course

Description:

{ System.out.println('Really fun'); Summer A-2000, Project Course--Carnegie Mellon University ... { System.out.println('Strange but fun' ... – PowerPoint PPT presentation

Number of Views:25
Avg rating:3.0/5.0
Slides: 31
Provided by: mm77
Category:

less

Transcript and Presenter's Notes

Title: Financial Engineering Project Course


1
Financial Engineering Project Course
2
Lecture 5
  • Validation against a DTD
  • More Java Details
  • Validating the swap agreement using Suns
  • JAXP API

3
Checking the Structure of an XML document with an
XML parser
Document
Valid XML
XML Rules Checker (Parser)
Structure Rules (DTD)
Invalid XML
4
Operation of a Tree-based Parser
XML DTD
Document Tree
Tree-Based Parser
Application Logic
Valid
XML Document
5
The Agreement.xml file
lt?xml version"1.0" encoding"UTF-8"?gt lt!DOCTYPE
FixedFloatSwap SYSTEM "FixedFloatSwap.dtd"gt ltFixed
FloatSwapgt ltNotionalgt100lt/Notionalgt
ltFixed_Rategt5lt/Fixed_Rategt ltNumYearsgt3lt/NumYear
sgt ltNumPaymentsgt6lt/NumPaymentsgt lt/FixedFloatSwa
pgt
This document declares itself as conforming to
this dtd.
6
The FixedFloatSwap.dtd
lt?xml version"1.0" encoding"utf-8"?gt lt!ELEMENT
FixedFloatSwap (Notional, Fixed_Rate, NumYears,

NumPayments) gt lt!ELEMENT Notional (PCDATA)
gt lt!ELEMENT Fixed_Rate (PCDATA) gt lt!ELEMENT
NumYears (PCDATA) gt lt!ELEMENT NumPayments
(PCDATA) gt
7
The FixedFloatSwap.dtd
lt?xml version"1.0" encoding"utf-8"?gt lt!ELEMENT
FixedFloatSwap (Notional, Fixed_Rate, NumYears,

NumPayments) gt
A document that conforms to this dtd must have
these elements in this order.
8
The FixedFloatSwap.dtd
The tag names in the xml document.
The content of each element
lt!ELEMENT Notional (PCDATA) gt lt!ELEMENT
Fixed_Rate (PCDATA) gt lt!ELEMENT NumYears
(PCDATA) gt lt!ELEMENT NumPayments (PCDATA) gt
9
Before we validate we have to cover some more Java
  • Inner classes
  • Exception Handling

10
Inner Classes
  • Nested Top Level Classes (not inner)
  • Member Classes
  • Local Classes
  • Anonymous Classes

11
Nested Top Level Class
  • Nested top-level classes are not inner classes.
  • Use as a convenient way to group related classes
  • Since the class must be static and has no 'this'
    pointer, it
  • has no access to the instance data of objects
    for its
  • enclosing class.
  • It behaves just like a 'normal' class or
    interface.

12
//NestedTopLevelExample.java class Top
int i,j static class SomeClass //
static makes it top-level nested
int k SomeClass()
System.out.println("Constructi
ng SomeClass")
void foo() System.out.println("Hello")
Top()
System.out.println("Constructing a Top object")

13
public class NestedTopLevelExample
public static void main(String args)
Top myTop new Top()
Top.SomeClass myObject new Top.SomeClass()
myObject.foo()
Output Constructing a Top object Constructing
SomeClass Hello
14
Member Classes
  • Member classes (there is no such thing as a
    'member
  • interface)
  • This inner class (it's not a top-level class)
    has no static
  • keyword and can access the members of each
    object of
  • its outer class.
  • The class 'appears in every instance'.

15
  • The parent class must declare an instance of an
    inner class, before it can invoke the inner
    class methods, assign to data fields (including
    private ones), and so on.
  • Unlike nested top-level classes, inner classes
    are not directly part of a package and are not
    visible outside the class in which they are
    nested.
  • Inner classes are often used for GUI event
    handlers.

16
// MemberClassExample.java class Top int
i 33 public class SomeClass
// access the outer object's state.
private int k i
SomeClass()
System.out.println("Constructing SomeClass")
void foo()
System.out.println("Hello")
Top() System.out.println("Cons
tructing a Top object")
SomeClass sc new SomeClass()
System.out.println(sc.k)
17
public class MemberClassExample public
static void main(String args) Top
myObject new Top() //
OUTPUT Constructing a Top object Constructing
SomeClass 33
18
Local Classes
  • A Local class is an inner class. Typically, a
    local class
  • is declared within a method. It is not a member
    of an
  • enclosing class. It is visible only within the
    block.
  • These classes are used primarily as "adapter
    classes".
  • For example, a block of code that creates a
    Button object
  • could use a local class to define a simple
    implementation
  • of the ActionListener Interface. Then it could
    instantiate
  • this simple implementation and pass the
    resulting object
  • to the button's ActionListener method, thereby
    connecting
  • the button to the "callback" code that is
    executed when
  • the button is pressed.

19
// Local Class example class Top int i
33 Top()
System.out.println("Constructing a Top object")
// define a class within a
method class Wow
int t Wow()
System.out.println("Building a Wow")
i 8
t 9
Wow h new Wow()
System.out.println(" h.t "
h.t) System.out.println(" i
" i)
20
public class LocalExample public
static void main(String args) Top
myObject new Top() //
OUTPUT Constructing a Top object Building a Wow
h.t 9 i 8
21
Anonymous Classes
  • An anonymous class is refinement of inner
    classes.
  • It allows you to combine the definition of the
    class
  • with the instance allocation.
  • Since it is instantiated in the same expression
    that defines
  • it, it can only be instantiated once. This is
    very similar to
  • local classes.
  • When writing a simple adapter class, the choice
    between
  • a named local class and an unnamed anonymous
    class
  • typically comes down to a matter of style and
    code clarity,
  • rather than any difference in functionality.
  • The new class can't have a constructor.

22
// Anonymous.java interface SmallClass
public void foo() class Top int i
33 void someMethod(SmallClass s)
s.foo() void anotherMethod()
someMethod(new SmallClass()
public void foo()
System.out.println(
"Really fun")
)
23
Top()
System.out.println("Constructing a Top object")
someMethod(new SmallClass()
public void foo()
System.out.println("
Strange but fun")
)

24
public class Anonymous public static
void main(String args) // We
can't create interface objects //
error SmallClass s new SmallClass()
Top myObject new Top()
myObject.anotherMethod() //
OUTPUT Constructing a Top object Strange but
fun Really fun
25
Validating two Agreement.xml files
import java.io.File import org.w3c.dom. import
javax.xml.parsers.DocumentBuilderFactory import
javax.xml.parsers.DocumentBuilder import
org.xml.sax.SAXException import
org.xml.sax.SAXParseException
26
Validating two Agreement.xml files
// imports as before
Are both xml files on the command line?
public class Simulator4 public static void
main(String argv)
if(argv.length ! 2 ) System.err.println("usag
e java Simulator4
document1Name document2Name")
System.exit(1)
27
Validating two Agreement.xml files
try DocumentBuilderFactory
docBuilderFactory
DocumentBuilderFactory.newInstance()
docBuilderFactory.set
Validating(true)
docBuilderFactory.setNamespaceAware(true)
DocumentBuilder docBuilder
docBuilderFactory.newD
ocumentBuilder()
This factory will produce parsers that validate!
28
docBuilder.setErrorHandler( new
org.xml.sax.ErrorHandler() public
void fatalError(SAXParseException e) throws
SAXException public void
error(SAXParseException e) throws
SAXParseException
throw e public void
warning(SAXParseException err) throws
SAXParseException
System.out.println(" Warning"
", line "
err.getLineNumber()
", uri " err.getSystemId())
System.out.println("
" err.getMessage())
) Document
doc1 docBuilder.parse(new File(argv0)) Docume
nt doc2 docBuilder.parse(new File(argv1))
The new object to handle validation errors
End of method call
29
docBuilder.setErrorHandler( new
org.xml.sax.ErrorHandler() public
void fatalError(SAXParseException e) throws
SAXException public void
error(SAXParseException e) throws
SAXParseException
throw e public void
warning(SAXParseException err) throws
SAXParseException
System.out.println(" Warning"
", line "
err.getLineNumber()
", uri " err.getSystemId())
System.out.println("
" err.getMessage())
) Document
doc1 docBuilder.parse(new File(argv0)) Docume
nt doc2 docBuilder.parse(new File(argv1))
Validation errors caught here.
30
Lab Exercise I would like everyone to be
checked off for writing A short Java program that
validates the agreement.xml file against the
FixedFloatSwap.dtd. If, for example, the
notional tag appears twice in the xml file your
program should display oops before terminating.
Write a Comment
User Comments (0)
About PowerShow.com