xmltree methods
play

XMLTree Methods 7 January 2019 OSU CSE 1 Methods for XMLTree All - PowerPoint PPT Presentation

XMLTree Methods 7 January 2019 OSU CSE 1 Methods for XMLTree All the methods for XMLTree are instance methods , i.e., you call them as follows: t.methodName(arguments) where t is an initialized variable of type XMLTree 7 January 2019 OSU


  1. XMLTree Methods 7 January 2019 OSU CSE 1

  2. Methods for XMLTree • All the methods for XMLTree are instance methods , i.e., you call them as follows: t.methodName(arguments) where t is an initialized variable of type XMLTree 7 January 2019 OSU CSE 2

  3. Methods for XMLTree • All the methods for XMLTree are instance methods , i.e., you call them as follows: t.methodName(arguments) where t is an initialized variable of type t is called the receiver of the call; for all instance methods, the XMLTree corresponding distinguished formal parameter implicitly has the name this . 7 January 2019 OSU CSE 3

  4. Implementations of XMLTree • There are two different classes that implement the XMLTree interface contract, and you may use either one: XMLTree1 or XMLTree2 • This choice is made when you initialize a variable of type XMLTree , where you must use the name of one of these implementation classes as the name of the constructor 7 January 2019 OSU CSE 4

  5. Implementations of XMLTree • There are two different classes that implement the XMLTree interface contract, and you may use either one: XMLTree1 or XMLTree2 • This choice is made when you initialize a variable of type XMLTree , where you must The behavior of an XMLTree does not depend on which use the name of one of these implementation you choose; this is a implementation classes as the name of the key benefit of design-by-contract! constructor 7 January 2019 OSU CSE 5

  6. Interface and Implementing Classes XMLTree implements implements XMLTree1 XMLTree2 7 January 2019 OSU CSE 6

  7. Interface and Implementing Classes XMLTree implements implements The interface XMLTree has method XMLTree1 XMLTree2 signatures and contracts for methods. 7 January 2019 OSU CSE 7

  8. Interface and Implementing Classes XMLTree The class XMLTree1 has method bodies; similarly XMLTree2 . implements implements XMLTree1 XMLTree2 7 January 2019 OSU CSE 8

  9. Interface and Implementing Classes The method bodies in XMLTree XMLTree1 implement the method contracts in implements implements XMLTree . XMLTree1 XMLTree2 7 January 2019 OSU CSE 9

  10. Interface and Implementing Classes The method bodies in XMLTree XMLTree2 implement the method contracts in implements implements XMLTree . XMLTree1 XMLTree2 7 January 2019 OSU CSE 10

  11. Mathematical Model • The value of an XMLTree variable is modeled as a tree of nodes whose labels are explained in the previous set of slides • Note that this model is described informally, though it could be formalized into mathematical notation (which we will not do here) 7 January 2019 OSU CSE 11

  12. Constructors • There are two constructors for each implementation class • The name of the constructor is the name of the implementation class • Constructors differ only in their parameters • For XMLTree , we will use only the constructor that takes one String parameter, either: – The name of an XML file on your computer – The URL of an XML file or an XML source on the web 7 January 2019 OSU CSE 12

  13. Constructors • A constructor call has the keyword new before the constructor name and is an expression, e.g.: new XMLTree1("foo.xml") • The value of this expression is determined by the contract for the constructor – In this case, the contract says the value is an XMLTree corresponding to the XML document named by the String parameter 7 January 2019 OSU CSE 13

  14. Example Code State XMLTree t = new XMLTree1("foo.xml"); 7 January 2019 OSU CSE 14

  15. Example See the slides on the XMLTree model for a description of the tree Code State that arises from an XML document. XMLTree t = new XMLTree1("foo.xml"); t = [tree from file "foo.xml"] 7 January 2019 OSU CSE 15

  16. label String label ( ) • Returns the label of the root of this . • Ensures: label = [the label of the root of this (not including < > for tags)] 7 January 2019 OSU CSE 16

  17. Example: Label is a Tag Code State t = [tree for book XML example] String s = t.label(); 7 January 2019 OSU CSE 17

  18. Example: Label is a Tag Code State t = [tree for book XML example] String s = t.label(); 7 January 2019 OSU CSE 18

  19. Example: Label is a Tag Code State t = [tree for book XML example] String s = t.label(); t = [unchanged] s = "book" 7 January 2019 OSU CSE 19

  20. Example: Label is Not a Tag Code State t = [tree rooted at title content in XML example] String s = t.label(); 7 January 2019 OSU CSE 20

  21. Example: Label is Not a Tag Code State t = [tree rooted at title content in XML example] String s = t.label(); 7 January 2019 OSU CSE 21

  22. Example: Label is Not a Tag Code State t = [tree rooted at title content in XML example] String s = t.label(); t = [unchanged] s = "Java for Everyone: Late Objects" 7 January 2019 OSU CSE 22

  23. isTag boolean isTag( ) • Returns whether the label of the root of this is a tag. • Ensures: isTag = [the label of the root of this is a tag] 7 January 2019 OSU CSE 23

  24. Example: Label is a Tag Code State t = [tree for book XML example] boolean b = t.isTag(); 7 January 2019 OSU CSE 24

  25. Example: Label is a Tag Code State t = [tree for book XML example] boolean b = t.isTag(); 7 January 2019 OSU CSE 25

  26. Example: Label is a Tag Code State t = [tree for book XML example] boolean b = t.isTag(); t = [unchanged] b = true 7 January 2019 OSU CSE 26

  27. Example: Label is Not a Tag Code State t = [tree rooted at title content in XML example] boolean b = t.isTag(); 7 January 2019 OSU CSE 27

  28. Example: Label is Not a Tag Code State t = [tree rooted at title content in XML example] boolean b = t.isTag(); 7 January 2019 OSU CSE 28

  29. Example: Label is Not a Tag Code State t = [tree rooted at title content in XML example] boolean b = t.isTag(); t = [unchanged] b = false 7 January 2019 OSU CSE 29

  30. hasAttribute boolean hasAttribute(String name) • Returns whether the root tag of this has an attribute called name . • Requires: [label of root of this is a tag] • Ensures: hasAttribute = [label of root of this has an attribute called name] 7 January 2019 OSU CSE 30

  31. Example: Has One Code State t = [tree for book XML example] boolean b = t.hasAttribute ("pubDate"); 7 January 2019 OSU CSE 31

  32. Example: Has One Code State t = [tree for book XML example] boolean b = t.hasAttribute ("pubDate"); 7 January 2019 OSU CSE 32

  33. Example: Has One Code State t = [tree for book XML example] boolean b = t.hasAttribute ("pubDate"); t = [unchanged] b = true 7 January 2019 OSU CSE 33

  34. Example: Has None Code State t = [tree for book XML example] boolean b = t.hasAttribute ("fooBar"); 7 January 2019 OSU CSE 34

  35. Example: Has None Code State t = [tree for book XML example] boolean b = t.hasAttribute ("fooBar"); 7 January 2019 OSU CSE 35

  36. Example: Has None Code State t = [tree for book XML example] boolean b = t.hasAttribute ("fooBar"); t = [unchanged] b = false 7 January 2019 OSU CSE 36

  37. attributeValue String attributeValue(String name) • Returns the value associated with the attribute of the root tag of this called name . • Requires: [label of root of this is a tag and it has an attribute called name] • Ensures: attributeValue = [value associated with attribute called name of root tag of this ] 7 January 2019 OSU CSE 37

  38. Example Code State t = [tree for book XML example] String v = t.attributeValue ("pubDate"); 7 January 2019 OSU CSE 38

  39. Example Code State t = [tree for book XML example] String v = t.attributeValue ("pubDate"); 7 January 2019 OSU CSE 39

  40. Example Code State t = [tree for book XML example] String v = t.attributeValue ("pubDate"); t = [unchanged] v = "Dec 20 2011" 7 January 2019 OSU CSE 40

  41. numberOfChildren int numberOfChildren() • Returns the number of subtrees of the root of this . • Requires: [label of root of this is a tag] • Ensures: numberOfChildren = [the number of subtrees of the root of this ] 7 January 2019 OSU CSE 41

  42. Example Code State t = [tree for book XML example] int n = t.numberOfChildren(); 7 January 2019 OSU CSE 42

  43. Example Code State t = [tree for book XML example] int n = t.numberOfChildren(); 7 January 2019 OSU CSE 43

  44. Example Code State t = [tree for book XML example] int n = t.numberOfChildren(); t = [unchanged] n = 3 7 January 2019 OSU CSE 44

  45. child XMLTree child( int k) • Returns the k -th subtree of the root of this . • Requires: [label of root of this is a tag and 0 <= k < number of subtrees of the root of this ] • Ensures: child = [the k-th subtree of the root of this ] 7 January 2019 OSU CSE 45

  46. Example Code State t = [tree for book XML example] XMLTree st = t.child(1); 7 January 2019 OSU CSE 46

  47. Example Code State t = [tree for book XML example] XMLTree st = t.child(1); 7 January 2019 OSU CSE 47

  48. Example Code State 0 2 t = [tree for book XML example] XMLTree st = t.child(1); t = [unchanged] st = [tree rooted at title tag] 7 January 2019 OSU CSE 48

Recommend


More recommend