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

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend