ࡱ> ]`Z[\ ]bjbj΀ 3U'##KKK___8|_Fբʣv@l[]]]]]] Z]Kƣʣ]##r(***#K[*[**.EHTqg7_J G<_ d  Kh*]]*  : Chapter 14 Generic Collections Goals Introduce class Object and inheritance Show how one collection can store any type of element using Object[] 14.1 The Object class The StringBag class shown of Chapter 9 could only store one type of element. It is desirable to have a collection class to store any type. Java provides at least two approaches: 1. Store references to Object objects rather than just String (this section) 2. Use Java generics (in the chapter that follows) We'll consider the first option now, which requires knowledge of Java's Object class, inheritance, and casting. Java's Object class has one constructor (no arguments) and 11 methods, including equals and toString. All classes in Java extend the Object class or another class that extends Object. There is no exception to this. All classes inherit the methods of the Object class. One class inherits the methods and instance variables of another class with the keyword extends. For example, the following class heading explicitly states that the EmptyClass class inherits all of the method of class Object. If a class heading does not have extends, the compiler automatically adds extends Object. // This class extends Object even if extends Object is omitted public class EmptyClass extends Object { } Even though this EmptyClass defines no methods, a programmer can construct and send messages to EmptyClass objects. This is possible because a class that extends Object inherits (obtains) Objects methods. A class that extends another is called a subclass. Here are three of the methods that EmptyClass inherits from the Object class: Two Methods of the Object Class toString returns a String that is the class name concatenated with the at symbol (@) and a hexadecimal (base 16) number related to locating the object at runtime. equals returns true if both the receiver and argument reference the same object. Additionally, a class that does not declare a constructor is automatically given a default constructor. This is to ensure that constructor for Object gets invoked. The following code is equivalent to that shown above // This class extends Object implicitly public class EmptyClass { public EmptyClass() { super(); // Explicitly call the constructor of the superclass, which is Object } } This following test code shows these two methods used by a class that extends class Object. EmptyClass one = new EmptyClass(); EmptyClass two = new EmptyClass(); assertFalse(one.equals(two)); // passes System.out.println(two.toString()); System.out.println(one.toString()); // The variable two will now reference the same object as one one = two; assertTrue(one.equals(two)); System.out.println("after assignment->"); System.out.println(two.toString()); System.out.println(one.toString()); Output EmptyClass@8813f2 EmptyClass@1d58aae after assignment-> EmptyClass@8813f2  HYPERLINK "mailto:EmptyClass@8813f2" EmptyClass@8813f2 The Object class captures methods that are common to all Java objects. Java makes sure that all classes extend the Object class because there are several things that all objects must be capable of in order to work with Java's runtime system. For example, Objects constructor gets invoked for every object construction to help allocate computer memory for the object at runtime. The class also has methods to allow different processes to run at the same time, allowing applications such as Web browsers to be more efficient. Java programs can download several files while browsing elsewhere, while creating another image, and so on. One-way Assignment Compatibility Because all classes extend Javas Object class, a reference to any type of object can be assigned to an Object reference variable. For example, consider the following valid code that assigns a String object and an EmptyClass object to two different reference variables of type Object: String aString = new String("first"); // Assign a String reference to an Object reference Object obj1 = aString; EmptyClass one = new EmptyClass(); // Assign an EmptyClass reference to an Object reference Object obj2 = one; Javas one-way assignment compatibility means that you can assign a reference variable to the class that it extends. However, you cannot directly assign in the other direction. For example, an Object reference cannot be directly assigned to a String reference. Object obj = new Object(); String str = obj; Type mismatch: cannot convert from Object to String This compile time error occurs because the compiler recognizes that obj is a reference to an Object that cannot be assigned down to a String reference variable. 13.2 A Generic Collection with Object[] This GenericList class uses Object parameters in the add and remove methods, an Object return type in the get method, and an array of Objects as the instance variable to store any type element that can be assigned to Object (which is any Java type). public class GenericList { private Object[] elements; private int n; // Construct an empty list public GenericList() { elements = new Object[10]; } // Provide access to the number of meaningful list elementas public int size() { return n; } // Add an element to the end of this list // Precondition: index >= 0 && index < size() public void add(Object elementToAdd) { elements[n] = elementToAdd; n++; } // Retrieve a reference to an element public Object get(int index) { return elements[index]; } } This design allows one class to store collections with any type of elements: @Test public void testGenericity() { GenericList names = new GenericList(); names.add("Kim"); names.add("Devon"); GenericList accounts = new GenericList(); accounts.add(new BankAccount("Speilberg", 1942)); GenericList numbers = new GenericList(); numbers.add(12.3); numbers.add(4.56); } In such a class, a method that returns a value would have to return an Object reference. public Object get(int index) { return elements[index]; } This approach requires a cast. You have to know the type stored. @Test public void testGet() { GenericListA strings = new GenericListA(); strings.add("A"); strings.add("B"); String firstElement = (String) strings.get(0); assertEquals("A", firstElement); } With this approach, programmers always have to cast, something Java software developers had been complaining about for years (before Java 5). With this approach, you also have to be wary of runtime exceptions. For example, even though the following code compiles, when the test runs, a runtime error occurs. @Test public void testGet() { GenericList strings = new GenericList(); strings.add("A"); strings.add("B"); // Using Object objects for a generic collection is NOT type safe. // Any type of object can be added accidentally (not usually desirable). strings.add(123); // The attempt to send cast to all elements fails when index == 2: for (int index = 0; index < 3; index++) { String theString = (String) strings.get(index); System.out.println(theString.toLowerCase()); } } java.lang.ClassCastException: java.util.Integer strings.get(2) returns a reference to an integer, which the runtime treats as a String in the cast. A ClassCastException occurs because a String cannot be cast to an integer. In a later section, Java Generics will be shown as a way to have a collection store a specific type. One collection class is all that is needed, but the casting and runtime error will disappear. Self-Check 13-1 Which statements generate compiletime errors? Object anObject = "3"; // a. int anInt = anObject; // b. String aString = anObject; // c. anObject = new Object(); // d. 13-2 Which letters represent valid assignment statements that compile? Object obj = "String"; // a. String str = (String)obj; // b. Object obj2 = new Point(3, 4); // c. Point p = (String)obj2; // d. 13-3 Which statements generate compile time errors? Object[] elements = new Object[5]; // a. elements[0] = 12; // b. elements[1] = "Second"; // c. elements[2] = 4.5; // d. elements[3] = new Point(5, 6); // e. 14.3 Collections of Primitive Types Collections of the primitive types such int, double, char can also be stored in a generic class. The type parameter could be one of Java's "wrapper" classes (or had to be wrapped before Java 5). Java has a "wrapper" class for each primitive type named Integer, Double, Character, Boolean, Long, Short, and Float. A wrapper class does little more than allow a primitive value to be viewed as a reference type that can be assigned to an Object reference. A GenericList of integer values can be stored like this: GenericList tests = new GenericList(); tests.add(new Integer(79)); tests.add(new Integer(88)); However, since Java 5, integer values can also be added like this: tests.add(76); tests.add(100); Java now allows primitive integers to be treated like objects through the process known as autoboxing. Autoboxing / Unboxing Before Java 5, to treat primitive types as reference types, programmers were required to "box" primitive values in their respective "wrapper" class. For example, the following code was used to assign an int to an Object reference. Integer anInt = new Integer(123); // Wrapper class needed for an int tests.add(anInt); // to be stored as an Object reference To convert from reference type back to a primitive type, programmers were required to "unbox" by asking the Integer object for its intValue like this: int primitiveInt = anInt.intValue(); Java 5.0 automatically performs this boxing and unboxing. Integer anotherInt = 123; // autobox 123 as new Integer(123) int anotherPrimitiveInt = anotherInt; // unboxed automatically This allows primitive literals to be added. The autoboxing occurs automatically when assigning the int arguments 79 and 88 to the Object parameter of the add method. GenericList tests = new GenericList(); tests.add(79); tests.add(88); However, with the current implementation of GenericList, we still have to cast the return value from this get method. public Object get(int atIndex) { return elements[index]; } The compiler sees the return type Object that must be cast to whatever type of value happens to stored at elements[index]: Integer anInt = (Integer)tests.get(0); Self-Check 13-4 Place a check mark ( in the comment after assignment statement that compiles (or leave blank). Object anObject = new Object(); String aString = "abc"; Integer anInteger = new Integer(5); anObject = aString; // ______ anInteger = aString; // ______ anObject = anInteger; // ______ anInteger = anObject; // ______ 13-5 Place a check mark ( in the comment after assignment statement that compiles (or leave blank). Object anObject = new String("abc"); Object anotherObject = new Integer(50); Integer n = (Integer) anObject; // ______ String s = (String) anObject; // ______ anObject = anotherObject; // ______ String another = (String) anotherObject; // ______ Integer anotherInt = (Integer) anObject; // ______ 13-6 Place a check mark ( in the comment after assignment statement that compiles (or leave blank). Integer num1 = 5; // ______ Integer num2 = 5.0; // ______ Object num3 = 5.0; // ______ int num4 = new Integer(6); // ______ 14.4 Type Parameters The manual boxing, the cast code, and the problems associated with collections that can accidentally add the wrong type element are problems that all disappeared in Java 5. Now the programmer can specify the one type that should be stored by passing the type as an argument to the collection class. Type parameters and arguments parameters are enclosed between < and > rather than ( and ). Now these safer collection classes look like this: public class GenericListWithTypeParameter { private Object[] elements; private int n; public GenericListWithTypeParameter() { elements = new Object[10]; n = 0; } public int size() { return n; } // Retrieve a reference to an element // Precondition: index >= 0 && index < size() public void add(E element) { elements[n] = elementToAdd; n++; } // Place the cast code here once so no other casting code is necessary public E get(int index) { return (E)elements[index]; } } Instances of GenericListWithTypeParameter would now be constructed by passing the type of element as an argument to the class: GenericListWithTypeParameter strings = new GenericListWithTypeParameter(); GenericListWithTypeParameter tests = new GenericListWithTypeParameter(); GenericListWithTypeParameter accounts = new GenericListWithTypeParameter(); In add, Object is replaced with E so only elements of the type argument(String, Integer or BankAccount above(can be added to that collection. The compiler catches accidental adds of the wrong type. For example, the following three attempts to add the wrong type generate compiletime errors, which is a good thing (better than waiting until runtime when the program would otherwise terminate. strings.add(123); The method add(String) in the type GenericListWithTypeParameter is not applicable for the arguments (int) tests.add("a String"); The method add(Integer) in the type GenericListWithTypeParameter is not applicable for the arguments (String) You also dont have to manually box primitives during add messages. tests.add(89); tests.add(77); tests.add(95); Nor do the return values need to be cast since the cast to the correct type is done in the get method. strings.add("First"); strings.add("Second"); String noCastToStringNeeded = strings.get(0); And in the case of Integer, the Integer object is automticallyunboxed to a primitive int. int sum = 0; for (int i = 0; i < tests.size(); i++) { sum += tests.get(i); // no cast needed because get already casts to (E) } Using Java generic type arguments does require extra syntax when constructing a collection (two sets of angle brackets and the type to be stored twice). However the benefits include much less casting syntax, the ability to have collections of primitives where the primitives appear to be objects, and we gain the type safety that comes from allowing the one type of element to be maintained by the collection. The remaining examples in this textbook will use Java Generics with < and > rather than having parameters and return types of type Object. Self-Check 13-7 Give the following code, print all elements in uppercase. Hint no cast required before sending a message GenericListWithTypeParameter strings = new GenericListWithTypeParameter(); strings.add("lower"); strings.add("Some UpPeR"); strings.add("ALL UPPER"); 14.5 Abstractions as Java Interfaces and JUnit Assertions The Java interface can also be used to specify a type. For example, the following Java interface specifies the operations for a Bag type. Bags are also known as multi-sets since duplicate elements may exist. Comments and method headings provide some detail about what needs to be done. The type parameter requires the implementing class to specify the type of element to be stored. /** * This interface specifies the methods for a Bag ADT. It is designed to be * generic so any type of element can be stored. */ public interface Bag { /** * Add element to this Bag. * * @param element: The element to insert. */ public void add(E element); /** * Return true if no elements have been added to this bag. * * @return False if there is one or more elements in this bag. */ public boolean isEmpty(); /** * Return how many elements match element according to the equals method of * the type specified at construction. * * @param element The element to count in this Bag. */ public int occurencesOf(E element); /** * Remove the first occurrence of element and return true if found. Otherwise * leave this Bag unchanged. * * @param element: The element to remove * @return true if element was removed, false if element was not equal to any * in this bag. */ public boolean remove(E element); } An interface does not specify the data structure nor the algorithms to add, remove, or find elements. Comments and well-named identifiers imply the behavior of operations. This behavior can be made much more explicit with assertions. For example, the assertions shown in the following test methods help describe the behavior of add and occurencesOf. This code assumes that a class named ArrayBag implements interface Bag. @Test public void testOccurencesOf() { Bag names = new ArrayBag(); // A new bag has no occurrences of any string assertEquals(0, names.occurencesOf("NOT here")); names.add("Sam"); names.add("Devon"); names.add("Sam"); names.add("Sam"); assertEquals(0, names.occurencesOf("NOT Here")); assertEquals(1, names.occurencesOf("Devon")); assertEquals(3, names.occurencesOf("Sam")); } One Class, Many Types Because the Bag interface specifies a type parameter, any class that implements Bag will be able to store any type of specified element passed as a type argument. This is specified with the parameter E in add, occurencesOf, and remove. The compiler replaces the type specified in a construction wherever E is found. So, when a Bag is constructed to store BankAccount objects, you can add BankAccount objects. At compiletime, the parameter E in public void add(E element) is considered to be BankAccount. Bag accounts = new ArrayBag(); accounts.add(new BankAccount("Chris", 100.00)); accounts.add(new BankAccount("Skyler", 2802.67)); accounts.add(new BankAccount("Sam", 31.13)); When a Bag is constructed to store Point objects, you can add Point objects. At compile time, the parameter E in public void add(E element) is considered to be Point. Bag points = new ArrayBag(); points.add(new Point(2, 3)); points.add(new Point(0, 0)); points.add(new Point(-2, -1)); Since Java 5.0, you can add primitive values. This is possible because integer literals such as 100 are autoboxed as new Integer(100). At compiletime, the parameter E in public void add(E element) is considered to be Integer for the Bag ints. Bag ints = new ArrayBag(); ints.add(100); ints.add(95); ints.add(new Integer(95)); One of the advantages of using generics is that you cannot accidentally add the wrong type of element. Each of the following attempts to add the element that is not of type E for that instance results in a compiletime error. ints.add(4.5); ints.add("Not a double"); points.add("A String is not a Point"); accounts.add("A string is not a BankAccount"); Not Implementing the Bag interface Instead of implementing the Bag interface using an array in this chapter, the following chapter describes a different interface (OurList) and implements most of those methods of the interface. Self-Check 13-8 Write a test method for remove assuming ArrayBag implements Bag Answers to Self-Check Questions 13-1 which have errors? b and c -b cannot assign an Object to an Integer -c cannot assign an Object to a String even when it references a String 13-2 a, b, and c. In d, the compiler notices the attempt to store a String into a Point? Point p = (String)obj2; // d. 13-3 None 13-4 anObject = aString; // __x___ anInteger = aString; // Can't assign String to Integer anObject = anInteger; // __x___ anInteger = anObject; // Can;t assign Obect to Integer 13-5 Object anObject = new String("abc"); Object anotherObject = new Integer(50); Integer n = (Integer) anObject; // __x___ String s = (String) anObject; // __x___ anObject = anotherObject; // __x___ String another = (String) anotherObject; // __x___ Integer anotherInt = (Integer) anObject; // __x___ 13-6 Integer num1 = 5; // __x___ Integer num2 = 5.0; // ______ Object num3 = 5.0; // __x___ int num4 = new Integer(6); // __x___ 13-7 for (int i = 0; i < strings.size(); i++) { System.out.println(strings.get(i).toUpperCase()); } 13-8 One possible test method for remove: @Test public void testRemove() { Bag names = new ArrayBag(); names.add("Sam"); names.add("Chris"); names.add("Devon"); names.add("Sandeep"); assertFalse(names.remove("Not here")); assertTrue(names.remove("Sam")); assertEquals(0, names.occurencesOf("Sam")); // Attempt to remove after remove assertFalse(names.remove("Sam")); assertEquals(0, names.occurencesOf("Sam")); assertEquals(1, names.occurencesOf("Chris")); assertTrue(names.remove("Chris")); assertEquals(0, names.occurencesOf("Chris")); assertEquals(1, names.occurencesOf("Sandeep")); assertTrue(names.remove("Sandeep")); assertEquals(0, names.occurencesOf("SanDeep")); // Only 1 left assertEquals(1, names.occurencesOf("Devon")); assertTrue(names.remove("Devon")); assertEquals(0, names.occurencesOf("Devon")); } }     PAGE 168 Chapter 13      "(^ _ v | ) / Y _ ɴ{oboXoNh?CJOJQJh?CJOJQJhrmh?CJOJQJh?CJOJQJaJh?CJ aJ hxYh?CJOJQJ^Jh?5OJQJ\^Jh[hBh?CJOJQJh?(h4h?5B*CJOJQJaJphh4B*OJQJphh4h?CJ8aJ8h4h?CJaJ h4CJ0 h[CJ0heh?CJ0  (O^ Q _    WX%gd?11gd?%(gd?%gd?gd? hgd?  & F*$gd? ^`   5 < P V   : @ c j      # h r ,6IOWXkqx!*.F³³³Գ򭧝h?5CJOJQJh?CJOJQJ h?CJ h?CJ hqh?B*^JaJph#hqh?5B* \^JaJphUhqh?^JaJ hqh?h?CJOJQJaJh?h?CJOJQJ9XxlmFGo^YWNNN 7$8$H$gd?%%gd?I% & F Eƀ&gd?I% & F Eƀ&gd? 5dx^FGnouv{Sǯǚǚs^ǚǚXTPTh4h? h?CJ)hxYhC B*CJOJQJ^JaJph?_)hxYhC B*CJOJQJ^JaJph#hC B*CJOJQJ^JaJph)hxYh?B*CJOJQJ^JaJph/hxYh?5B* CJOJQJ\^JaJphU hxYh?CJOJQJ^JaJ)hxYh?B*CJOJQJ^JaJph?_#h?B*CJOJQJ^JaJph?_]^ `m 0CU &dPgd?1% 7$8$H$gd?SY^qt "_`lmoyڱڱڙڄlڱlڱڄڱڙڱl/hxYh?6B* CJOJQJ]^JaJph)hxYh?B*CJOJQJ^JaJph?_/hxYh?6B*CJOJQJ]^JaJph hxYh?CJOJQJ^JaJ/hxYh?5B* CJOJQJ\^JaJphU)hxYh?B*CJOJQJ^JaJphh?hxYh?CJOJQJ# UV|}~  -OUլլĨng]]]V]] heh?h?CJOJQJ hxYh?,jhxYh?UfHq &jhxYh?UfHq hxYh?fHq h?/hxYh?6B* CJOJQJ]^JaJph hxYh?CJOJQJ^JaJ)hxYh?B*CJOJQJ^JaJph)hxYh?B*CJOJQJ^JaJph*!U -Ks#89>?\pWX|%gd?gd?1 7$8$H$gd? dgd?% BHJK^aiprsu"#78,2?@NQ[\ŭŘŇrŇŭŇrŇ`ŭŇ#h?B*CJOJQJ^JaJph)hxYh?B*CJOJQJ^JaJph?_ hxYh?CJOJQJ^JaJ)hxYh?B*CJOJQJ^JaJph*/hxYh?5B* CJOJQJ\^JaJphU)hxYh?B*CJOJQJ^JaJphhgh?CJ aJ hxYh?CJOJQJh?h?CJOJQJ%\opq<BWX]as[a|}οβΨΨΟΛΛββββββββΟ/hxYh?5B* CJOJQJ\^JaJphUhC heh?CJ h?CJOJQJhxYh?CJOJQJhw3@h?CJOJQJ^Jh? hxYh? hxYh?CJOJQJ^JaJ)hxYh?B*CJOJQJ^JaJph+!"aw/8<=e 1$7$8$H$gd? 1$7$8$H$gdM' 7$8$H$gd?   !լլĕ~jWլլ$hohM'CJOJQJ^J_H aJ$'hM'B*CJOJQJ^J_H aJ$ph?_-hohM'B*CJOJQJ^J_H aJ$ph?_-hohM'B*CJOJQJ^J_H aJ$ph/hxYh?5B* CJOJQJ\^JaJphU hxYh?CJOJQJ^JaJ)hxYh?B*CJOJQJ^JaJph)hxYh?B* CJOJQJ^JaJph!"$'`amvw{Խ~gTg~g=gTgTԽg-hoh?B* CJOJQJ^J_H aJ$ph$hoh?CJOJQJ^J_H aJ$-hoh?B*CJOJQJ^J_H aJ$ph/hkh?5B* CJOJQJ\^JaJphU$hohM'CJOJQJ^J_H aJ$'hM'B*CJOJQJ^J_H aJ$ph?_-hohM'B*CJOJQJ^J_H aJ$ph?_-hohM'B*CJOJQJ^J_H aJ$ph'hM'B*CJOJQJ^J_H aJ$ph78;=?demy|kTA$hohM'CJOJQJ^J_H aJ$-hohM'B*CJOJQJ^J_H aJ$ph?_-hohM'B*CJOJQJ^J_H aJ$ph)hxYh?B* CJOJQJ^JaJph hxYh?CJOJQJ^JaJ/hxYh?5B* CJOJQJ\^JaJphU)hxYh?B*CJOJQJ^JaJph$hoh?CJOJQJ^J_H aJ$-hoh?B*CJOJQJ^J_H aJ$ph?_  8;JKY^`aovxz  "#9:=>)hxYh?B*CJOJQJ^JaJph*/hxYh?5B* CJOJQJ\^JaJphU)hxYh?B*CJOJQJ^JaJphdddhkh?h?CJOJQJ^JaJ hxYh?CJOJQJ^JaJ)hxYh?B*CJOJQJ^JaJph2 Kayz #:>?  ' A p %gd?1 7$8$H$gd?%gd? ! & ' ) / 0 4 @ A \ _ o p ɱɱɠɱɋɠɠ~iɱɱɠɱɠ)hxYh?B*CJOJQJ^JaJphdddhxYh?OJQJ^J)hxYh?B* CJOJQJ^JaJph hxYh?CJOJQJ^JaJ/hxYh?5B* CJOJQJ\^JaJphU)hxYh?B*CJOJQJ^JaJph hxYh?CJOJQJ^JaJh?hxYh?CJOJQJ! /"1"7"9"?"@"D"P"Q"k"n"}"~""""""""""լĨ|||mmhxYh?B*^JaJph*#hxYh?5B* \^JaJphUhxYh?^JaJhxYh?B*^JaJphh?/hxYh?6B*CJOJQJ]^JaJph hxYh?CJOJQJ^JaJ)hxYh?B*CJOJQJ^JaJph)hxYh?B*CJOJQJ^JaJph*'p ."/"7"Q"~"""">#T#U###$3$9$=$r$s$%%%gd?%gd? 7$8$H$gd?"=#>#S#U#Y##########$ $$2$3$8$9$<$=$>$@$B$r$ֲ֢|iV%h2Hh?B*CJOJQJ^Jph%h2Hh?B*CJOJQJ^Jph%h2Hh?B*CJOJQJ^Jph%hxYh?B*CJOJQJ^Jphh?B*OJQJ^JaJph#hxYh?6B* ]^JaJph#hxYh?5B* \^JaJphUhxYh?B*^JaJphhxYh?^JaJhxYh?B*^JaJph?_r$s$$$$$$%%'&?&B&O&T&U&}&&&&&&&&&&&''*'O'ޭrrrZrH#h?B*CJOJQJ^JaJph/hxYh?5B* CJOJQJ\^JaJphU hxYh?CJOJQJ^JaJ)hxYh?B*CJOJQJ^JaJph?_)hxYh?B*CJOJQJ^JaJph*)hxYh?B*CJOJQJ^JaJphhbKh?OJQJ^JaJhxYh?CJOJQJh?hxYh?CJOJQJ^Jh2Hh?CJOJQJ^J%%'&U&&&&&''U'''''(D(s((()))&)*$+%+%gd? 7$8$H$gd?<gd?]gd?O'T'U'}'''''''''(/(2(>(C(m(r(((((((()))N)Q)S)Y)[)_)"*)*+*1*3*<*>*E*G*K*M*R*X*]*%+;+hxYh?CJOJQJh[h?B*^JaJph*h?B*^JaJph?_h?5B* \^JaJphUh?^JaJh?)hxYh?B*CJOJQJ^JaJph hxYh?CJOJQJ^JaJ)hxYh?B*CJOJQJ^JaJph?_2;+>+Z+]+x+{+++++;->-E-K-W-X-b-g-j-m-|----W._.n.v.......䟊ra h}mh?CJOJQJ^JaJ/h}mh?5B* CJOJQJ\^JaJphU)h}mh?B*CJOJQJ^JaJphhqh?CJ hxYh?CJOJQJ^Jh?B*^JaJph?_h&uh?^JaJh}mh?CJOJQJhB4$h?CJ h?h?^JaJh?5B* \^JaJphU!%+N+l++++++++Z,p,W-X----......6/x/y/0 7$8$H$gd?%gd?gd?%gd?..../5/6/8/;/_/w/x//0000 06090k00000000վՁtt\/h}mh?5B* CJOJQJ\^JaJphUh}mh?CJOJQJh?5B* \^JaJphUh}mh?CJOJQJh&uh?B*^JaJph?_#h&uh?5B* \^JaJphUh&uh?^JaJh?B*^JaJph?_h?^JaJhqh?CJ h?)hxYh?B*CJOJQJ^JaJph0 0I0Z0k0l001$1'1*1111111C2g222223?3 dx[$\$]gd? 7$8$H$gd?gd?%gd?000 1111#1&1'1)1L1R111111111111꽨ꗋzqf_VLChqh?CJhqh?CJ\hB4$h?CJ hqh?h h?^JaJheh?CJ h}mh?CJOJQJh?h?B*^JaJph h}mh?CJOJQJ^JaJ)hxYh?B*CJOJQJ^JaJph)hxYh?B* CJOJQJ^JaJph/h}mh?5B* CJOJQJ\^JaJphU)h}mh?B*CJOJQJ^JaJph111A2C2Y2\2|222222223353>3?3@3D3E3Y3Z33333333'4˹˪˹˛˛˛˛˗ygyXygyhah?B*^JaJph*#hah?5B* \^JaJphUhah?^JaJhqh?CJhqh?CJ\h?hqh?B*^JaJph?_hqh?B*^JaJph*#hqh?5B* \^JaJphUhqh?^JaJ hqh?CJOJQJ^JaJ jhqh?CJaJhqh?CJaJ ?3@333314h444 55s555566367788;8L8M8 7$8$H$gd?%d`gd?%gd?gd? dPx[$\$]P'404^4g444445 5555'5(5s55555556666#63677777777777ު}i'hqh?5B* \^J_H aJphUhqh?CJ h}mh?CJOJQJh?h}mh?^JaJhV^JaJh[^JaJ jhqh?CJaJhqh?CJaJhqh?CJhqh?CJ\ hqh?hah?^JaJhah?B*^JaJph?_&777788'81898:8;8=8D8E8H8I8J8K8L8M8V8v8w8{888888888󺥐e3hoh?5B* CJOJQJ\^J_H aJ$phU hxYh?CJOJQJ^JaJ)hxYh?B* CJOJQJ^JaJph)hxYh?B*CJOJQJ^JaJph/hxYh?5B* CJOJQJ\^JaJphUhgaBh?^J_H aJ'hqh?5B* \^J_H aJphUhqh?^J_H aJM8w8888888888'9G9g9p9t9u99999::::::%gd? 1$7$8$H$gd? 7$8$H$gd?88888888888888888&9'9/90949F9G9S9荻荻ylyl[F)hxYh?B* CJOJQJ^JaJph!hqh?B*^J_H aJph?_hqh?^J_H aJ'hqh?5B* \^J_H aJphU-hoh?B*CJOJQJ^J_H aJ$ph?_-hoh?B* CJOJQJ^J_H aJ$ph$hoh?CJOJQJ^J_H aJ$3hoh?5B* CJOJQJ\^J_H aJ$phU-hoh?B*CJOJQJ^J_H aJ$phS9o9p9u999999999999::+::̵̡̐xcNJ=Jhoh?CJOJQJh?)hxYh?B* CJOJQJ^JaJph)h}mh?B*CJOJQJ^JaJph/hxYh?5B* CJOJQJ\^JaJphU!hqh?B*^J_H aJph?_'hqh?5B* \^J_H aJphU-hoh?B*CJOJQJ^J_H aJ$ph?_hqh?^J_H aJ hxYh?CJOJQJ^JaJ)hxYh?B*CJOJQJ^JaJph:::::H;K;t;u;;;;;<<C<D<J<L<S<W<b<h<i<==== > > >> >">#>>>>軷軇~g軇-hoh?B*CJOJQJ^J_H aJ$ph*hoh?CJ$hoh?CJOJQJ^J_H aJhoh?CJ jh?hoh?CJOJQJh?$hoh?CJOJQJ^J_H aJ$3hoh?5B* CJOJQJ\^J_H aJ$phU-hoh?B*CJOJQJ^J_H aJ$ph%::*;u;v;;;;<=== > >#>>>>>>>??v?w?????% 1$7$8$H$gd?>>>>>>>> ?j?m?v?w????????????0@1@4@=@>@A@eKK3hoh?5B* CJOJQJ\^J_H aJ$phU3h1h?5B* CJ OJQJ\^J_H aJ phU-hoh?B*CJOJQJ^J_H aJ$ph*h1h?CJ aJ hzh?CJOJQJ$hoh?CJOJQJ^J_H aJ$-hoh?B*CJOJQJ^J_H aJ$ph-hoh?B*CJ OJQJ^J_H aJ$phh?hoh?CJOJQJ?0@1@>@g@@@@BBVCWCCCCD0DlDEEEBF 7$8$H$gd~ % gd~ % gdMgdVgd?^gd?d`gd? 1$7$8$H$gd?%A@C@F@f@g@~@@@@@BBVCWCCCCCC褻軠iOiF?FAFBFCFDFEFLFMFOFPFSFTFXFYF[F\FcFdFgFhFjFkFrFsFtFvFwF}F~FFFFFFFFFFFFFFFF)h~ 5B* CJOJQJ\^JaJphU#h~ B*CJOJQJ^JaJph?_#h~ B*CJOJQJ^JaJphh~ CJOJQJ^JaJIBFsFwFFFFFFFF G GGPGVGGGGGGH7H=HsHyHHHHH 7$8$H$gd~ FFFFFFFFFFFFFFFFFFFFFFFFFFFFF G GGGGGGGGG#G$G&G'G)G*G2G3G7G8GI?IEIFIIIJIKIRISIWIXIZI[IbIcIfIgIoIpIuIvIxIyI/h Uxh~ 5B*CJOJQJ\^JaJph)h Uxh~ B*CJOJQJ^JaJph?_)h~ 5B*CJOJQJ\^JaJphh~ CJOJQJ^JaJ#h~ B*CJOJQJ^JaJph?_#h~ B*CJOJQJ^JaJph6HIIFIIIIIIIKKKKKKLJL`LxLLLL M;M?MUMgd~ % gd~ 7$8$H$gd~ yIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII%K(K-K9K`KhKtK~KKK۸۸ۮrhqh~ CJOJQJ^JhTh~ CJOJQJh7xh~ CJOJQJ^Jh7xh~ CJOJQJh~ h~ CJOJQJ)h~ 5B* CJOJQJ\^JaJphUh~ CJOJQJ^JaJ#h~ B*CJOJQJ^JaJph#h~ B*CJOJQJ^JaJph?_,KKKKKKKKKKKKKKKLLL%L] 7$8$H$gd~ gd~ 1Z7Z8Z[U[Z[][^[b[[[[[[[[[[[[[[ظظظظأظأظأظؑأظأظ#h~ B*CJOJQJ^JaJph?_)h~ 6B*CJOJQJ]^JaJph#h~ B*CJOJQJ^JaJph*h~ CJOJQJ^JaJ#h~ B*CJOJQJ^JaJph)h~ 5B* CJOJQJ\^JaJphU9[[[[\ \ \ \\\)\0\3\4\8\D\[\b\e\g\k\w\\\\\\\\\\\\\\\\\\ ] ]]]3]:]=]>]B]L]Z]a]d]e]i]u]]]]]]]]]h?#h~ B*CJOJQJ^JaJph?_#h~ B*CJOJQJ^JaJph*)h~ 6B*CJOJQJ]^JaJph#h~ B*CJOJQJ^JaJphh~ CJOJQJ^JaJ>>]e]]]]]]]]]]]]]]]]]]]]]]]]].$a$.&`#$gd? 7$8$H$gd~ ]]]]]]]]]]]]]]]]]]]]Ǿh?6OJQJh? h?0J-6OJQJmHnHuh?0J-6OJQJjh?0J-6Uh"jh"U10:p?K7 &!"#$% DyK yK 2mailto:EmptyClass@8813f2^ 666666666vvvvvvvvv66666686666666666666666666666666666666666666666666666666hH6666666666666666666666666666666666666666666666666666666666666666662 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~_HmH nH sH tH @`@ rmNormalCJ_HaJmH sH tH VV rm Heading 1$$ & F*$@&a$56CJaJtHbb rm Heading 2 $$ & F<*$@&a$56OJQJaJtH\\ rm Heading 3 $$ & F<*$@&a$OJQJaJtHPP rm Heading 4$$ & F*$@&a$ CJ,aJtH^^ rm Heading 5$$*$@&^a$5CJOJQJaJtHJJ rm Heading 6$$*$@&a$ CJaJtHNN rm Heading 7$$*$@&a$6CJaJtHNN rm Heading 8$$*$@&a$5CJaJtHV V rm Heading 9 $$*$@&a$6B*CJaJphtHDA`D Default Paragraph FontRiR  Table Normal4 l4a (k (No List / rmbullet:$ & F Hd(1$^`a$$B*OJQJ_HhmH phsH tH z/z rm bullet-sub0$ & F d1$^`a$OJQJ_HhmH sH tH @O!@ rmBody w/o indentdNo"N rm Body text  hCJ_HmH sH tH /2 rmheadC$  d0P$d(d1$NR(B*CJ$OJQJ_HhmH phsH tH j!Bj rmcode; .p @ xHP] CJOJQJ\oR\rmB head x#CJOJQJ_HmHnHsH tH urobr rmBhead.$ 8dh<1$^8`CJOJQJ_HhmH sH tH forf rmCode' h8p@ P]PCJOJQJ_HmH sH tH o rmAheadP$ Ud0P$d(d1$NR^`UCJ$OJQJ_HhmH sH tH o rmbox-headL$$ H dF&d(d1$PRa$ B*CJ_HhmH phsH tH n/n rmbox-text$$$ <Hd1$^Ha$CJOJ QJ _HhmH sH tH / rmbox-endC$ <d$d(d1$NR^a$OJ QJ _HhmH sH tH O rm self-headR$ $Hdh&d(dPR^H`a$6CJOJQJTT rm self-textb$dNB*OJQJph/ rm self-text@ sC%($d1$N]s^C`%OJQJ_HhmH sH tH rr rm self-abcd= ,`\$dN^`\OJ QJ p/p rm self-code# xd1$]x^CJOJQJ_HhmH sH tH HH rmDialogue!0<<^0 6CJaJ|/"| rmSC head<" p @ 0!0&dP^05CJ_HmH sH tH H2H rm exercises# <<`d/Bd rmC head$ 0x^05CJOJ QJ _HmH sH tH >B@R> rm Body Text % hCJaJLOaL rmBody Text CharCJOJPJQJ^JaJN/rN rmbodytext '$1$a$CJ_HhmH sH tH r/r rmabcd4($ Hd,0dF1$^a$OJ QJ _HhmH sH tH HQHrmLab-Project Head )x<CJT/T rmtext*$ d1$a$CJ_HhmH sH tH 8/8 rm Typewriter CJOJQJ>> rm Footnote Text,CJaJ.)@. rm Page Number<@< rmHeader . !CJaJf/f rmA head#/ x$dNCJ$OJQJ_HmH sH tH l/l rmBody no indent0 1$7$8$H$B*_HmH phsH tH hoh rmSpacer*1 dx1$7$8$H$^CJ _HaJ mH sH tH rqrr rm Code wide=2 hp@ d1$7$8$H$]^CJaJf/2f rmFigure03 1$7$8$H$]^_HmH sH tH RQRR rmDialogue/Output head4 LdHoR rmTab/fig head1,line1,no italicY5$ Ld+&d(d1$7$8$H$PR]^5\_HmH sH tH h/bh rmSelf)6$$ $d01$7$8$H$a$OJQJ^J_HmH sH tH z/rz rm Self text>7 8"8dH1$7$8$H$]^8`_HmH sH tH h!"h rmNumlist;8 hWWd1$7$8$H$]^W`CJl/l rm Open bullet,9 d1$7$8$H$^`_HmH sH tH XX rm Exercise abc%: W L^`L@@ rmExercise numlist;H`AB` rmDialogue/Output head wide< d ]f/f rmSelf abc,= ed1$7$8$H$]^e_HmH sH tH j/j rmTip text/> eWd1$7$8$H$]^W_HmH sH tH pqrp rmSub code=? hp@ Wd1$7$8$H$]^WCJaJ,, rmTip@5\/ rmTab/fig head,lineYA$ Ld+&d(d1$7$8$H$PR]^56\]_HmH sH tH DD rmTermBLd^`L B*phv/2v rm Open head&C$ d 1$7$8$H$$CJOJQJ^J_HaJmH sH tH ^/B^ rm Open body"D ;d1$7$8$H$_HmH sH tH XabX rm Answers codeE^`CJOJQJaJ^qr^ rmAnswers.F 8>d]^`>CJaJFF rmSub table heading G^/ rm Table headingYH$ LdH&d(d1$7$8$H$PR]^5\_HmH sH tH RR rm Sub numlist!I W>^`>f!"f rmQuote>J hd1$7$8$H$]^CJh/h rmAside-K$$ 0 dl1$7$8$H$a$6]_HmH sH tH j/j rmBullet4L d1$7$8$H$]^`_HmH sH tH l/l rm Table end0M Lde1$7$8$H$]^_HmH sH tH j/j rm Table text,N Ld1$7$8$H$]^_HmH sH tH B!B rm Self CheckOgdM ^J_H aJ00 rm Self-CheckP2/2 rm WW8Num4z0OJQJf/"f rm code CharR *$1$]CJOJQJ_HmH sH tHH!2H rm Courier NewSgdj$CJ^J_H aJ2/A2 rm WW8Num1z0OJQJ2/Q2 rm WW8Num2z0OJQJ>/a> rm WW8Num5z0CJOJQJ^J aJ>/q> rm WW8Num6z0CJOJQJ^J aJ2/2 rm WW8Num8z0OJQJ6/6 rm WW8Num8z1 OJQJ^J2/2 rm WW8Num8z2OJ QJ 6/6 rm WW8Num9z0 CJOJQJ2/2 rm WW8Num9z1OJQJ2/2 rm WW8Num9z2OJ QJ 2/2 rm WW8Num9z3OJQJB/B rm WW8Num12z0B*CJOJQJph8/8 rm WW8Num12z1 OJQJ^J4/4 rm WW8Num12z2OJ QJ B/!B rm WW8Num16z0B*CJOJQJph@/1@ rm WW8Num17z0CJOJPJQJ^J8/A8 rm WW8Num17z1 OJQJ^J4/Q4 rm WW8Num17z2OJ QJ 4/a4 rm WW8Num17z3OJQJ4/q4 rm WW8Num18z0OJ QJ 4/4 rm WW8Num18z1OJQJ4/4 rm WW8Num18z2OJ QJ 4/4 rm WW8Num18z3OJQJ4/4 rm WW8Num19z0OJQJB/B rm WW8Num20z0B*CJOJQJph8/8 rm WW8Num20z1 OJQJ^J4/4 rm WW8Num20z2OJ QJ 4/4 rm WW8Num20z3OJQJ</< rm WW8Num21z0B*CJOJQJ8/8 rm WW8Num21z1 OJQJ^J4/!4 rm WW8Num21z2OJ QJ 4/14 rm WW8Num21z3OJQJ@/A@ rm WW8Num22z0CJOJPJQJ^J8/Q8 rm WW8Num22z1 OJQJ^J4/a4 rm WW8Num22z2OJ QJ 4/q4 rm WW8Num22z3OJQJB/B rm WW8Num25z0B*CJOJQJph4/4 rm WW8Num25z1OJQJ4/4 rm WW8Num25z2OJ QJ 4/4 rm WW8Num25z3OJQJ</< rm WW8Num28z0B*CJOJQJ8/8 rm WW8Num28z1 OJQJ^J4/4 rm WW8Num28z3OJQJ4/4 rm WW8Num30z0OJ QJ 8/8 rm WW8Num30z1 OJQJ^J4/4 rm WW8Num30z2OJ QJ 4/!4 rm WW8Num30z3OJQJB/1B rm WW8Num31z0B*CJOJQJph8/A8 rm WW8Num31z1 OJQJ^J4/Q4 rm WW8Num31z2OJ QJ 4/a4 rm WW8Num31z3OJQJ4/q4 rm WW8Num33z0OJQJ8/8 rm WW8Num33z1 OJQJ^J4/4 rm WW8Num33z2OJ QJ 0/0 rm WW8Num34z058/8 rm WW8Num36z0 CJOJQJ4/4 rm WW8Num36z1OJQJ4/4 rm WW8Num36z2OJ QJ 4/4 rm WW8Num36z3OJQJ</< rm WW8Num37z0B*CJOJQJ4/ 4 rm WW8Num37z1OJQJ4/ 4 rm WW8Num37z2OJ QJ 4/! 4 rm WW8Num37z3OJQJ@/1 @ rm WW8Num38z0CJOJPJQJ^J8/A 8 rm WW8Num38z1 OJQJ^J4/Q 4 rm WW8Num38z2OJ QJ 4/a 4 rm WW8Num38z3OJQJ4/q 4 rm WW8Num41z0OJQJ8/ 8 rm WW8Num41z1 OJQJ^J4/ 4 rm WW8Num41z2OJ QJ 4/ 4 rm WW8Num41z3OJQJP/ P rmWW-Absatz-Standardschriftart8/ 8 rm WW-WW8Num1z0OJQJ8/ 8 rm WW-WW8Num2z0OJQJD/ D rm WW-WW8Num4z0CJOJQJ^J aJD/ D rm WW-WW8Num5z0CJOJQJ^J aJD/ D rm WW-WW8Num6z0CJOJQJ^J aJR/ R rmWW-Absatz-Standardschriftart1:/! : rm WW-WW8Num5z01OJQJ:/1 : rm WW-WW8Num6z01OJQJ2/A 2 rm WW8Num7z0OJQJ4/Q 4 rm WW8Num10z0OJQJB/a B rm WW8Num13z0B*CJOJQJph4/q 4 rm WW8Num14z0OJQJ8/ 8 rm WW8Num14z1 OJQJ^J4/ 4 rm WW8Num14z2OJ QJ 4/ 4 rm WW8Num15z0OJ QJ 8/ 8 rm WW8Num19z1 OJQJ^J4/ 4 rm WW8Num19z2OJ QJ B/ B rm WW8Num23z0B*CJOJQJphB/ B rm WW8Num24z0B*CJOJQJphB/ B rm WW8Num26z0B*CJOJQJph4/ 4 rm WW8Num29z0OJQJ4/ 4 rm WW8Num32z0OJQJ4/! 4 rm WW8Num39z0OJQJB/1 B rm WW8Num40z0B*CJOJQJph4/A 4 rm WW8Num42z0OJQJ4/Q 4 rm WW8Num45z0OJQJ8/a 8 rm WW8Num45z1 OJQJ^J4/q 4 rm WW8Num45z2OJ QJ 4/ 4 rm WW8Num47z0OJQJ4/ 4 rm WW8Num47z1OJQJ4/ 4 rm WW8Num47z2OJ QJ 4/ 4 rm WW8Num48z0OJ QJ 4/ 4 rm WW8Num49z0OJQJB/ B rm WW8Num53z0B*CJOJQJphB/ B rm WW8Num56z0B*CJOJQJph4/ 4 rm WW8Num57z0OJ QJ 4/ 4 rm WW8Num58z0OJQJ4/ 4 rm WW8Num60z0OJQJ4/! 4 rm WW8Num61z0OJQJB/1 B rm WW8Num62z0B*CJOJQJph4/A 4 rm WW8Num63z0OJQJ8/Q 8 rm WW8Num63z1 OJQJ^J4/a 4 rm WW8Num63z2OJ QJ B/q B rm WW8Num64z0B*CJOJQJph4/ 4 rm WW8Num65z0OJQJ4/ 4 rm WW8Num66z0OJQJ4/ 4 rm WW8Num67z0OJQJ>/ > rm WW8Num68z056CJOJQJB/ B rm WW8Num69z0B*CJOJQJph4/ 4 rm WW8Num70z0OJQJ8/ 8 rm WW8Num70z1 OJQJ^J4/ 4 rm WW8Num70z2OJ QJ B/ B rm WW8Num71z0B*CJOJQJph4/ 4 rm WW8Num72z0OJQJ8/! 8 rm WW8Num72z1 OJQJ^J4/1 4 rm WW8Num72z2OJ QJ 4/A 4 rm WW8Num74z0OJ QJ 4/Q 4 rm WW8Num75z0OJ QJ 4/a 4 rm WW8Num80z0OJQJ4/q 4 rm WW8Num81z0OJQJ4/ 4 rm WW8Num83z0OJQJ</ < rm WW8Num84z0B*CJOJQJ4/ 4 rm WW8Num86z0OJQJ4/ 4 rm WW8Num88z0OJQJ</ < rm WW8Num89z0B*CJOJQJ4/ 4 rm WW8Num90z0OJQJB/ B rm WW8Num91z0B*CJOJQJphB/ B rm WW8Num94z0B*CJOJQJph4/4 rm WW8Num95z0OJ QJ 4/4 rm WW8Num95z2OJQJB/!B rm WW8Num96z0B*CJOJQJph4/14 rm WW8Num97z0OJ QJ B/AB rm WW8Num99z0B*CJOJQJph6/Q6 rm WW8Num100z0OJ QJ D/aD rm WW8Num104z0B*CJOJQJphD/qD rm WW8Num105z0B*CJOJQJphD/D rm WW8Num106z0B*CJOJQJph6/6 rm WW8Num107z0OJ QJ D/D rm WW8Num113z0B*CJOJQJph>/> rm WW8Num114z0B*CJOJQJ6/6 rm WW8Num115z0OJQJ6/6 rm WW8Num117z0OJQJ>/> rm WW8Num118z0B*CJOJQJ6/6 rm WW8Num119z0OJ QJ 8/8 rm WW8NumSt50z0OJQJ8/8 rm WW8NumSt63z0OJQJ8/!8 rm WW8NumSt64z0OJQJ8/18 rm WW8NumSt72z0OJQJ8/A8 rm WW8NumSt77z0OJQJ8/Q8 rm WW8NumSt81z0OJQJ8/a8 rm WW8NumSt95z0OJQJ8/q8 rm WW8NumSt97z0OJQJ>/> rm WW8NumSt110z0 CJ@OJ QJ :/: rm WW8NumSt118z0OJQJ:/: rm WW8NumSt125z0OJQJ>/> rm WW8NumSt128z0 CJ@OJ QJ >/> rm WW8NumSt129z0 CJ"OJQJ>/> rm WW8NumSt130z0 CJOJQJ>/> rm WW8NumSt131z0 CJ(OJQJ>/> rm WW8NumSt132z0 CJ OJQJ>/> rm WW8NumSt133z0 CJ<OJ QJ >/> rm WW8NumSt134z0 CJ@OJQJ>/!> rm WW8NumSt135z0 CJ OJ QJ >/1> rm WW8NumSt136z0 CJOJQJ>/A> rm WW8NumSt137z0 CJOJQJ>/Q> rm WW8NumSt138z0 CJOJQJ>/a> rm WW8NumSt139z0 CJOJ QJ >/q> rm WW8NumSt140z0 CJOJ QJ >/> rm WW8NumSt143z0 CJ$OJQJ>/> rm WW8NumSt144z0 CJ0OJQJ>/> rm WW8NumSt145z0 CJ8OJ QJ >/> rm WW8NumSt148z0 CJ OJQJ>/> rm WW8NumSt149z0 CJ,OJQJJ/J rmWW-Default Paragraph Font(W( rmStrong5B/B rmFootnote CharactersH*H/H rmWW-Footnote CharactersH*JJ rmWW-Footnote Characters1H*H!H rm WW-HTML CodeCJOJPJQJ^JaJP1P rmCode Char CharCJOJQJ_HmH sH tH.XA. rmEmphasis6]ZQZ rmcode Char Char CharCJOJQJ_HmH sH tHTaT rmBody w/o indent CharCJ_HmH sH tH8bq8 rm Code Char1 CJOJQJ>/> rmBulletsCJOJ PJ QJ ^J aJD/D rm WW-BulletsCJOJ PJ QJ ^J aJF/F rm WW-Bullets1CJOJ PJ QJ ^J aJ@/@ rmEndnote CharactersH*F/F rmWW-Endnote CharactersH*D/D rmWW-Endnote Characters1T"T rmCaption$ $xx*$a$6CJ]^JaJtHBB rmIndex$ $*$a$CJ^JaJtHZRZ rmHeading $$x*$a$CJOJPJQJ^JaJtHZZ rm WW-Caption!$ $xx*$a$6CJ]^JaJtHH"H rmWW-Index"$ $*$a$CJ^JaJtH`R` rm WW-Heading#$$x*$a$CJOJPJQJ^JaJtH\B\ rm WW-Caption1$$ $xx*$a$6CJ]^JaJtHJRJ rm WW-Index1%$ $*$a$CJ^JaJtHbRb rm WW-Heading1&$$x*$a$CJOJPJQJ^JaJtH/r rmtable-columnhdI'$$ hHd$d&d*$1$NP^Ha$CJ_HmH sH tH/ rmlabel?($$ Hd&d*$1$P^a$%B*CJOJ QJ _HmH phsH tH\\ rm table-title)F&dP:B*OJQJpht/t rmnum;*$ H%dd*$1$]^`%a$OJQJ_HmH sH tHh/h rmbox-code!+$ <Hd*$1$^HCJOJQJ_HmH sH tH/ rm self-textdI, xdF&d*$1$P]x^`OJQJ_HmH sH tHn/n rm table-text-Cd(*$1$^C%B*CJOJQJ_HmH phsH tHLL rm table-code .dB*OJQJphPaP rmhead-B/ HH*$^H` CJhtHnn rm self-textc/0 S$d&d*$NPB*hphtH/ rmself-end>1$ 8d$d&d*$1$NPa$OJ QJ _HmH sH tH/" rmasideY2$$ 0 dF$d&d*$1$NP]^a$ 6B*CJ_HmH phsH tHh/2h rmfigure*3$ Hd*$1$^a$OJ QJ _HmH sH tHr/Br rmabcd-sub/4$  d*$1$^` a$OJ QJ _HmH sH tH|/R| rmnum-sub;5$ 0d(*$1$]^`0a$OJQJ_HmH sH tHh/bh rmquote,6$d*$1$]^a$OJ QJ _HmH sH tHr rm table-endF7d$d&d(d*$NPR^CJOJQJhtHh/h rmcode Char Char8 *$1$CJOJQJ_HmH sH tHTT rm WW-Plain Text 9$*$a$CJOJQJaJtHHH rm self-codend: *$htHrqrr rm diag-head0;$ Hd&d*$Pa$5CJOJ QJ htHZqrZ rm diag-text< Hd*$CJOJ QJ htHbqb rmChead)= HdF*$^CJOJQJhtHZ/Z rm Chapter Start >*$CJ(OJQJ_HmH sH tHXX rm GeneralForm?$h*$^ha$CJOJQJaJtHR!R rm Numbered list@ @<*$`tHr/r rm Code Char*A h8p@ *$]CJOJQJ_HmH sH tH$"$ rmselfB|/2| rm bullet-subsub,C$ d*$1$^`a$CJOJQJ_HmH sH tHdBd rmWW-List Bullet"D$ & F*$^`a$ CJaJtHhRh rmWW-Document MapE$*$-D M a$CJOJQJaJtHbqbb rm Bidy Text!F Hd*$^CJOJQJhtHRrR rmWW-Normal (Web) G*$ mH-sH-tHHQH rmTable ContentsH$ $*$a$tHNQN rmWW-Table ContentsI$ $*$a$tHPQP rmWW-Table Contents1J$ $*$a$tHHH rm Table HeadingK$a$ 56\]NN rmWW-Table HeadingL$a$ 56\]PP rmWW-Table Heading1M$a$ 56\]FQF rmFrame contents N$*$a$tHLQL rmWW-Frame contents O$*$a$tHNQN rmWW-Frame contents1 P$*$a$tHTT rmAbc/Q hW 8$H$^`tHZZ rmTable code lastRd8$H$CJOJQJaJtHPP rm Table codeSd8$H$CJOJQJaJtH/B rm Tab/fig head2ET$ Ld+&d*$1$7$P]^5\_HmH sH tHBqrB rmSelf endU h8$H$tHRbR rmBH$V d*$1$7$]CJOJQJaJ&ar& rmBHeadWrqrr rm Self code:X 8p@ 8d1$7$]^8 CJaJtHbQb rm!Style Body Text + First line: 0"YtH6a6 rmSelf cheZ8$H$tH:: rmSelf check head[(( rmStye\tHOQ rmSelf Check Head:]$$ d $d*$1$7$Na$6CJ^JaJtHuhQh rm"Style Body Text + First line: 0"1^*$tHZqZ rmSelf-Ch*_ p@ 1$7$]aJtHJJ rm Comment Text `$*$a$ CJaJtHVV rmBody w/o indent Char1CJ_HmH sH tH8!8 rm Code Char2 CJOJQJH1H rmBody text CharCJ_HmH sH tHB^@BB rm Normal (Web)ddd[$\$4/Q4 rm WW8Num10z1OJQJ4/a4 rm WW8Num10z2OJ QJ 4/q4 rm WW8Num10z3OJQJ4/4 rm WW8Num11z0OJQJ4/4 rm WW8Num11z1OJQJ4/4 rm WW8Num11z2OJ QJ 4/4 rm WW8Num16z1OJQJ4/4 rm WW8Num16z2OJ QJ J/J rmAbsatz-StandardschriftartL/L rmWW-Default Paragraph Font1J/J rm WW8Num44z0B*CJOJQJ^JaJphJ/J rm WW8Num46z0B*CJOJQJ^JaJph4/4 rm WW8Num50z0OJQJ8/!8 rm WW8Num52z0 OJQJ^JJ/1J rm WW8Num54z0B*CJOJQJ^JaJph8/A8 rm WW8Num55z0 OJ QJ ^JF/QF rm WW8Num59z056CJOJQJ^JaJJ/aJ rm WW8Num73z0B*CJOJQJ^JaJph8/q8 rm WW8Num79z0 OJQJ^JJ/J rm WW8Num85z0B*CJOJQJ^JaJphJ/J rm WW8Num87z0B*CJOJQJ^JaJphJ/J rm WW8Num92z0B*CJOJQJ^JaJphJ/J rm WW8Num93z0B*CJOJQJ^JaJph4/4 rm WW8Num98z0OJQJL/L rm WW8Num101z0B*CJOJQJ^JaJph:/: rm WW8Num103z0 OJQJ^J</< rm WW8NumSt48z0 OJQJ^J</< rm WW8NumSt66z0 OJQJ^JD/D rm WW8NumSt79z0CJ@OJ QJ ^JaJ@D/!D rm WW8NumSt80z0CJ"OJQJ^JaJ"D/1D rm WW8NumSt82z0CJ(OJQJ^JaJ(D/AD rm WW8NumSt83z0CJ OJQJ^JaJ D/QD rm WW8NumSt84z0CJ<OJ QJ ^JaJ<D/aD rm WW8NumSt85z0CJ@OJQJ^JaJ@D/qD rm WW8NumSt86z0CJ OJ QJ ^JaJ D/D rm WW8NumSt87z0CJOJQJ^JaJD/D rm WW8NumSt88z0CJOJQJ^JaJD/D rm WW8NumSt89z0CJOJQJ^JaJD/D rm WW8NumSt90z0CJOJ QJ ^JaJD/D rm WW8NumSt91z0CJOJ QJ ^JaJD/D rm WW8NumSt94z0CJ$OJQJ^JaJ$D/D rm WW8NumSt96z0CJ8OJ QJ ^JaJ8D/D rm WW8NumSt99z0CJ OJQJ^JaJ F/F rm WW8NumSt100z0CJ,OJQJ^JaJ,HH rmWW-Comment ReferenceCJaJD!D rm C head Char5\_HmH sH tH<>B< rmTitle $*$a$ CJaJtH8JaR8 rmSubtitle$a$6]JRJ rmWW-Comment Text*$ CJaJtHVbV rmWW-Balloon Text*$CJOJQJ^J aJtHFjF rmComment Subject$a$5\2/2 rm WW8Num3z0OJQJ4/4 rm WW8Num25z4OJQJ4/4 rm WW8Num43z0OJ QJ 4/4 rm WW8Num53z1OJQJ4/4 rm WW8Num53z2OJ QJ 4/4 rm WW8Num54z2OJ QJ 4/4 rm WW8Num54z4OJQJ4/4 rm WW8Num65z1OJQJ4/4 rm WW8Num65z2OJ QJ 4/4 rm WW8Num77z0OJQJ4/!4 rm WW8Num77z1OJQJ4/14 rm WW8Num77z2OJ QJ 4/A4 rm WW8Num79z1OJQJ4/Q4 rm WW8Num79z2OJ QJ 4/a4 rm WW8Num93z1OJQJ4/q4 rm WW8Num93z2OJ QJ 4/4 rm WW8Num99z1OJQJ4/4 rm WW8Num99z2OJ QJ 4/4 rm WW8Num99z3OJQJ</< rm WW8NumSt54z0 CJ$OJQJ`` rmCode Char1 Char CharCJOJQJ_HmH sH tHu~/~ rmCode Char1 Char* h8p@ 0*$]0CJOJQJ_HmH sH tHPQP rmStyle Body Text + Left*$tH44 rm UnitTestCode"" rmBheVV rmcode Char Char1CJOJQJ_HmH sH tHuT/!T rmWW-Absatz-Standardschriftart116/16 rm WW8Num1z1 CJOJQJ6/A6 rm WW8Num1z2 CJOJ QJ 6/Q6 rm WW8Num2z1 CJOJQJ6/a6 rm WW8Num2z2 CJOJ QJ 2/q2 rm WW8Num3z1OJQJ2/2 rm WW8Num3z2OJ QJ 2/2 rm WW8Num3z3OJQJ2Q2rmArial 5CJaJ4/4 rm WW8Num27z0OJ QJ 4/4 rm WW8Num59z1OJQJ4/4 rm WW8Num59z2OJ QJ 8/8 rm WW8Num80z1 OJQJ^J4/4 rm WW8Num80z2OJ QJ ZZ rmCode Char Char CharCJOJQJ_HmH sH tH6Q6 rmsPACER $*$a$tH/" rm(Code Char2 Char Char Char Char Char Char/ h8p@ h]^hCJOJQJ_HmH sH tH 1 rm-Code Char2 Char Char Char Char Char Char CharCJOJQJ_HmH sH tH BRB rmDefinition Term*$tHJBJ rmDefinition List h*$^htH@@ rmH3$dd*$5CJ\aJtHvrv rm Preformatted+ # ~= z9!v%*$CJOJQJ^JaJtH2/2 rm WW8Num4z1OJQJ2/2 rm WW8Num4z2OJ QJ 2/2 rm WW8Num4z3OJQJ^C^ rmBody Text Indent$ h*$`a$aJtHfRf rmBody Text Indent 2$ h*$`a$ CJaJtHHZH rm Plain Text*$CJOJQJaJtHqr rm Exercise codeQ -@ ` 0Wd*$1$7$]^W CJaJtHTT rm Sub table end  *$8$H$^tHNN rmSub table text*$8$H$^tHp!"p rm Exercise text3 hWd*$1$7$]^WCJtHe" rmHTML Preformatted: 2( Px 4 #\'*.25@9*$CJOJQJ^JaJtH>Q2> rm Body Text 3xCJaJ4/A4 rm WW8Num39z1OJQJ4/Q4 rm WW8Num39z2OJ QJ 4/a4 rm WW8Num79z3OJQJ:/q: rm WW8Num116z0 CJOJQJ6/6 rm WW8Num118z1OJQJ6/6 rm WW8Num118z2OJ QJ </< rm WW8NumSt11z0 CJ@OJ QJ </< rm WW8NumSt12z0 CJOJQJ>/> rm WW8NumSt111z0 CJ$OJQJ>/> rm WW8NumSt112z0 CJ"OJQJ>/> rm WW8NumSt121z0 CJ$OJQJ4/4 rm WW8Num48z1OJQJ4/4 rm WW8Num48z2OJ QJ 4/4 rm WW8Num48z3OJQJ4/!4 rm WW8Num51z0OJQJ8/18 rm WW8Num76z0 CJOJQJ:/A: rm WW8Num108z0 CJOJQJ:/Q: rm WW8Num109z0 CJOJQJ8/a8 rm WW8NumSt69z0OJQJ</q< rm WW8NumSt98z0 CJ$OJQJ>/> rm WW8NumSt108z0 CJ@OJ QJ >/> rm WW8NumSt109z0 CJ$OJQJ6/Q6 rmList $*$a$^JtH88 rmStyle16CJOJQJN!N rmB Hea* hx^`gd{4q4 rm Body TestgdxY0Q0 rmCpde CJOJQJ4q4 rm Body TexrgdgaB4 4 rmFooter  !DD rm Balloon TextCJOJQJaJPK![Content_Types].xmlj0Eжr(΢Iw},-j4 wP-t#bΙ{UTU^hd}㨫)*1P' ^W0)T9<l#$yi};~@(Hu* Dנz/0ǰ $ X3aZ,D0j~3߶b~i>3\`?/[G\!-Rk.sԻ..a濭?PK!֧6 _rels/.relsj0 }Q%v/C/}(h"O = C?hv=Ʌ%[xp{۵_Pѣ<1H0ORBdJE4b$q_6LR7`0̞O,En7Lib/SeеPK!kytheme/theme/themeManager.xml M @}w7c(EbˮCAǠҟ7՛K Y, e.|,H,lxɴIsQ}#Ր ֵ+!,^$j=GW)E+& 8PK!Ptheme/theme/theme1.xmlYOo6w toc'vuر-MniP@I}úama[إ4:lЯGRX^6؊>$ !)O^rC$y@/yH*񄴽)޵߻UDb`}"qۋJחX^)I`nEp)liV[]1M<OP6r=zgbIguSebORD۫qu gZo~ٺlAplxpT0+[}`jzAV2Fi@qv֬5\|ʜ̭NleXdsjcs7f W+Ն7`g ȘJj|h(KD- dXiJ؇(x$( :;˹! I_TS 1?E??ZBΪmU/?~xY'y5g&΋/ɋ>GMGeD3Vq%'#q$8K)fw9:ĵ x}rxwr:\TZaG*y8IjbRc|XŻǿI u3KGnD1NIBs RuK>V.EL+M2#'fi ~V vl{u8zH *:(W☕ ~JTe\O*tHGHY}KNP*ݾ˦TѼ9/#A7qZ$*c?qUnwN%Oi4 =3ڗP 1Pm \\9Mؓ2aD];Yt\[x]}Wr|]g- eW )6-rCSj id DЇAΜIqbJ#x꺃 6k#ASh&ʌt(Q%p%m&]caSl=X\P1Mh9MVdDAaVB[݈fJíP|8 քAV^f Hn- "d>znNJ ة>b&2vKyϼD:,AGm\nziÙ.uχYC6OMf3or$5NHT[XF64T,ќM0E)`#5XY`פ;%1U٥m;R>QD DcpU'&LE/pm%]8firS4d 7y\`JnίI R3U~7+׸#m qBiDi*L69mY&iHE=(K&N!V.KeLDĕ{D vEꦚdeNƟe(MN9ߜR6&3(a/DUz<{ˊYȳV)9Z[4^n5!J?Q3eBoCM m<.vpIYfZY_p[=al-Y}Nc͙ŋ4vfavl'SA8|*u{-ߟ0%M07%<ҍPK! ѐ'theme/theme/_rels/themeManager.xml.relsM 0wooӺ&݈Э5 6?$Q ,.aic21h:qm@RN;d`o7gK(M&$R(.1r'JЊT8V"AȻHu}|$b{P8g/]QAsم(#L[PK-![Content_Types].xmlPK-!֧6 +_rels/.relsPK-!kytheme/theme/themeManager.xmlPK-!Ptheme/theme/theme1.xmlPK-! ѐ' theme/theme/_rels/themeManager.xml.relsPK] U U &&&&&&) FS\! "r$O';+.01'478S9:>A@CEFZGHHyIK MOPBQSUVXY1Z[]]/135689;<=>@ACDFGIKLNOQRSUWXY[\]^`abcefgiklmoprXUp %%+0?3M8:?BFHUMSV%Z>]]0247:?BEHJMPTVZ_dhjnqU } UX )!8@0(  B S  ?U _1077519718 _1077529009 _1083592457 _1083592726 _1083592788 _1083592795 _1083592874 _1083592898 _1083593001 _1083593065 _1083593073 _1083593092 _1083593116 _1083593360 _1083593365 _1083593438 _1083593442 _1083593503 _1083593508 _1083652435 _1084087504 _1084164019 _1188561430 _1083663894 _1181144398 _1181147843!!!!!!!!!!!!!!!!!!!!!!!!!!U N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:N:U#hr,6x|` j u    o y z  T[HKehknW`jm !-y| $/<GOXen~'25<EQ`ltELU`ozBM.B^`qs~4<[^_dgo47bepsN!Q!""'#2#?#J#P#Y#n#w#####N$X$Z$d$g$o$;%>%b%g%%%%%%%B&G&n&v&&&&&&&&&&&''8';'<'O'R'\'''''"(-(:(E(K(T(\(e(((((()))))N*V*r*y*}*************++ ++'+*+2+++++++,,I,Q,l,t,w,,,,,,,---/0E0H0V0r000Y1e1112+2222223L3h3v33333333W4b4 5555556 6 66G6c6666667w77777777881848C8F8G8H8N8O8R8\8`8a8p8y8z8{8[;w;;;;;;< <<<!<>>????C@H@@@@@!A&AAA-C9C`ChCCCCCD%D)D;DNDWDdDmD|DDDDDDDDDDDDEEE1E'F3FFFFFFF@GKGTG_GpGxGyGGGGGGGGGGGGGGH HHHHIII4I>IIIIIAJEJYJ]JdJlJ{JJJJJJKKKKKKKKKLLLLLEMMMNNNNNNNNOO O)O:OCOFONOTOYOaOfOOOOOOOOOP!PSBSTSSSSSSSSSSSSTTTT(T8TDTHTZTkTwT{TTTTTTTTTTTTTTTTUU U2UBULUMUYUiUuUyUUUUUUUUUUUUUUUUUx!JNouu  % ( b e o z 0 5 biRYehy} '.ci{34gm<HOYeo '3)/`mt9?o{BN\_s[^os " J S y ?#K#P#Z#n#x#####n%v%%%&&)'1'8';':(F(K(U(\(f((( ))))))))]*d********++'+C+K+++++l,t,----//// 0'0=0D0O0U0{000000 1&1)1/1K1T1k1l1111122H3K333445555 66.62666666667w7777771848>8A8i8l899 ;;C;M;;;;;;<<"<<<E>L>w>}>>>>>Y?????@@@Q@T@{@@AAAACCCCD&DNDXDdDnD|DDDDDDDDEEG!GGGGGGGGGHHHHHII I4I?III JJtJvJ{JJJJJJKKKKKKKKKLM"MMMN,NNNNNNNOO:OCOOOOO3 A4 (=DZvI_NlKLb.#ZEfF4lFYr9t6 R*mx{ xX_YT :|Dhh^h`.0^`0OJQJhh^h`OJQJhh^h`.^`CJOJQJ^JaJ77^7`CJOJQJ^JaJRR^R`CJOJQJ^JaJnn^n`CJOJQJ^JaJw^`wCJOJQJ^JaJ[^`[CJOJQJ^JaJ@^`@CJOJQJ^JaJ$^`$CJOJQJ^JaJ   ^ ` CJOJQJ^JaJ^`CJOJQJ^JaJ^`CJOJQJ^JaJ^`CJOJQJ^JaJ  ^ `CJOJQJ^JaJ w ^ `wCJOJQJ^JaJ, [, ^, `[CJOJQJ^JaJG @G ^G `@CJOJQJ^JaJc$c^c`$CJOJQJ^JaJ~ ~^~` CJOJQJ^JaJ^`CJOJQJ^JaJ77^7`CJOJQJ^JaJRR^R`CJOJQJ^JaJnn^n`CJOJQJ^JaJw^`wCJOJQJ^JaJ[^`[CJOJQJ^JaJ@^`@CJOJQJ^JaJ$^`$CJOJQJ^JaJ   ^ ` CJOJQJ^JaJ hh^h`OJQJCJhh^h`OJQJB*CJ^`.h.h 88^8`hH.h ^`hH.h  L ^ `LhH.h   ^ `hH.h xx^x`hH.h HLH^H`LhH.h ^`hH.h ^`hH.h L^`LhH.^`OJQJo(hH^`OJQJo(hHopp^p`OJ QJ o(hH@ @ ^@ `OJQJo(hH^`OJQJo(hHo^`OJ QJ o(hH^`OJQJo(hH^`OJQJo(hHoPP^P`OJ QJ o(hHh 88^8`hH.h ^`hH.h  L ^ `LhH.h   ^ `hH.h xx^x`hH.h HLH^H`LhH.h ^`hH.h ^`hH.h L^`LhH.h 88^8`hH.h ^`hH.h  L ^ `LhH.h   ^ `hH.h xx^x`hH.h HLH^H`LhH.h ^`hH.h ^`hH.h L^`LhH.h ^`hH.h ^`hH.h pLp^p`LhH.h @ @ ^@ `hH.h ^`hH.h L^`LhH.h ^`hH.h ^`hH.h PLP^P`LhH.h 88^8`hH.h ^`hH.h  L ^ `LhH.h   ^ `hH.h xx^x`hH.h HLH^H`LhH.h ^`hH.h ^`hH.h L^`LhH.h^`OJQJo(hHh^`OJQJo(hHohpp^p`OJ QJ o(hHh@ @ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJo(hHohPP^P`OJ QJ o(hHhhh^h`OJQJo(hHh88^8`OJQJo(hHoh^`OJ QJ o(hHh  ^ `OJQJo(hHh  ^ `OJQJo(hHohxx^x`OJ QJ o(hHhHH^H`OJQJo(hHh^`OJQJo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJo(hHohpp^p`OJ QJ o(hHh@ @ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJo(hHohPP^P`OJ QJ o(hH hh^h`OJ QJ o(h ^`o(hH.h^`OJQJo(hHohpp^p`OJ QJ o(hHh@ @ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJo(hHohPP^P`OJ QJ o(hHh^`OJQJo(hHh ^`o(hH.hpp^p`OJ QJ o(hHh@ @ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJo(hHohPP^P`OJ QJ o(hHh ^`hH.h ^`hH.h pLp^p`LhH.h @ @ ^@ `hH.h ^`hH.h L^`LhH.h ^`hH.h ^`hH.h PLP^P`LhH.h 88^8`hH.h ^`hH.h  L ^ `LhH.h   ^ `hH.h xx^x`hH.h HLH^H`LhH.h ^`hH.h ^`hH.h L^`LhH. hh^h`OJ QJ o(h^`OJQJo(hHh^`OJQJo(hHohpp^p`OJ QJ o(hHh@ @ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJo(hHohPP^P`OJ QJ o(hHh ^`hH.h ^`hH.h pLp^p`LhH.h @ @ ^@ `hH.h ^`hH.h L^`LhH.h ^`hH.h ^`hH.h PLP^P`LhH.h^`OJQJo(hHh^`OJQJ^Jo(hHohp^p`OJ QJ o(hHh@ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJ QJ o(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohP^P`OJ QJ o(hHYr9tIT :| A4(=D>3kX KLb_NZEf xx( 4l.0"O*mxL tWW8Num1WW8Num2WW8Num3WW8Num4WW8Num5WW8Num6WW8Num9WW8Num37WW8Num45WW8Num88                                                                                                                                                V4^tC M'?)ICGgk>5n1T"ME'sDn~ [UU@U@UnknownSanooshiG* Times New Roman5Symbol3. * Arial71 Courier?= * Courier New5. *aTahomaSjoLucida GrandeCourierABook AntiquayCorporateCondensed-PlainTimes New Roman] Century-90Times New Roman9Palatino;" HelveticaY StarSymbol0000҉0 Pro W3;WingdingsARZapfDingbats9 WebdingsEMonotype Sorts?Wingdings 2;Desdemona=^Colonna MTUHiragino Mincho Pro W3S&Albertus MediumArialA BCambria Math 1hDD+ H+ H+!4rUrUj2QPLX2!xx Chapter 13Mac Usermercer                        Oh+'0Ȟ  0 < H T`hpx Chapter 13 Mac User Normal.dotmmercer3Microsoft Office Word@F#@H@.g7@g7 HG@aD N&" WMFCZh Ool >aD EMFoNDn1    >% % Rp8@"Arial' <+(RO`2<+4( ) +$O`2<+4( o.14(<+ |Bo.1LsX3. * Arial`2`k`2G\BHdh(9'1((z%1(|Bdv% % %   ThZL@J@= L >`Chapter 1_ooo8oC8oTThZL@J@=L >P4tjpTThZL@J@=L >P iK! >" Rp@"Arial' <+(RO`2<+4( ) +$O`2<+4( o.14(<+ LBo.1LsX3. * Arial4+(.1(472h(9'1((z%1(LBdv% % %  TTZL@J@L >P 6! >" Rp@"Arial' <+(RO`2<+4( ) +$O`2<+4( o.14(<+ \Bo.1LsX3. * Arial`2X`2GtGeneric CollectionsN4u@44uA4tTT _ aZL@J@ 0L >P }! >" Rp@"Arial' <+(RO`2<+4( ) +$O`2<+4( o.14(<+ ܢBo.1LsX3. * Arial4+(.1(472h(9'1((z%1(ܢBdv% % %  TT~ZL@J@L >P K! >"  TTNZL@J@;L >P K! >" Rp@"Arial' <+(RO`2<+4( ) +$O`2<+4( o.14(<+ Bo.1LsX3. * Arial4+(.1(472h(9'1((z%1(Bdv% % %  TlOZL@J@L >XGoalsTB<=TTO ZL@J@L >P <! >" Rp@Symbol'x*'RO`2x*p'(\*$O`2x*p' o.1p'x* Bo.1wLsX5Symbol`28[ `2|Bhg'9'1''z%1(Bdv% % % Rp@"Arial' x*'RO`2x*p' (\*$O`2x*p' o.1p'x* Bo.1LsX3. * Arial`2 b`2B4['9'1''z%1(Bdv% % % Rp@Times New Roman& H*'RO`2H*@' (,*$O`2H*@' o.1@'H* Bo.1LsXG* Times ew Romandt'9'1''z%1'Bdv% % %  % % % TT8ZL@J@%L >P*% % % TT98ZL@J@%L >P l% % % T0::ZL@J@:%&L >Introduce class Object and inheritance....))()#$B-)))....)(.)(TT:ZL@J@%L >P )! >" Rp @1Courier&H*'RO`2H*@'(,*$O`2H*@' o.1@'H* |Bo.1LsX71 Couriel'472t'9'1''z%1'|Bdv% % %  % % % TT9ZL@J@L >PN *% % % TTB9ZL@J@L >P LFl% % % T:C ZL@J@:<L >Show how one collection can store any type of element using 3..B..B..)(.)(..().$.)).--.).()F)..#.-% % % T| R ZL@J@ L >\Object[]22222222% % % TT C ZL@J@ L >P )! >"  TTZL@J@L >P )! >" Rp j@"Arial' <+(RO`2<+4( ) +$O`2<+4( o.14(<+ Bo.1LsX3. * Arial`2[ `2G|Beh(9'1((z%1(Bdv% % % Rp j@1Courier New'<+(RO`2<+4() +$O`2<+4( o.14(<+ Bo.1&LsX?= * Courie NewGlBdh(9'1((z%1(Bdv% % % % % %  TT0KZL@J@+L >P1STT1KZL@J@1+L >P4STxWKZL@J@+L >\.1&" WMFC /o The *S*]SS*% % % TpXsWZL@J@X+L >XObjectZZZZZZ% % % TTtKZL@J@t+L >P *TlKZL@J@+L >XclassK!SKKTTCKZL@J@+L >P Q! > ' % Ldhqmh!??% "  % % % TdzIZL@J@L >TThe 9.(% % % TJ ZL@J@J L >`StringBag/P222222222% % % TT z"ZL@J@ L >P T#z5ZL@J@#GL >class shown of Chapter 9 could only store one type of element. It is de))$$$.-B..=.)-(.)-..-.-$-).-)-.)-))F).$.)T6zzZL@J@66L >sirable to have a collection class to store any type. $)-)..)-))).))..(($$.#.)).--.)! >"  T85K ZL@J@6 'L >Java provides at least two approaches: s$)-)..-.)#)()$B.(...().)#TT6^K ZL@J@66 L >P )! >" Rp @Times New Roman' <+(RO`2<+4( ) +$O`2<+4( o.14(<+ ܀Bo.1LsXG* Times ew Roman^h(9'1((z%1(܀Bdv% % %  TTL  ZL@J@y L >P 4! >" Rp@1Courier'<+(RO`2<+4() +$O`2<+4( o.14(<+ |Bo.1LsX71 Couriev(472h(9'1((z%1(|Bdv% % % Rp@1Courier New'<+(RO`2<+4() +$O`2<+4( o.14(<+ ̡Bo.1&LsX?= * Courie NewGBd[h(9'1((z%1(̡Bdv% % %  % % % T  ZL@J@ L >|1. Store references to 49.3-))()-))$.% % % Tp  ZL@J@ L >XObject---,--% % % TT  ZL@J@ L >P T B ZL@J@ L >objects rather than just .-()$(.(.)..#% % % TpC m ZL@J@C L >XString122222% % % TTn ZL@J@n L >P T ` ZL@J@ L >h(this section)-$#)(.-TTa ZL@J@a L >P )! >"  Tx m ZL@J@X 2L >2. Use Java generics (in the chapter that follows).B$)%)-)-).)($..().)-).(..B$TT m ZL@J@X L >P rm)! >" % % %  TTXn m ZL@J@X L >P ! >"  TTX m ZL@J@X L >P ! >"  % % % T I ZL@J@4 L >We'll consider the first optionifW))..#.(.)$....TT I ZL@J@4 L >P {T< I ZL@J@4 (L >now, which requires knowledge of Java's ..BB.(.)..)#-..B).-).$)-)$% % % Tp  B ZL@J@ 4 L >XObject------% % % TT  I ZL@J@ 4 L >P etT  xI ZL@J@ 4 L >class, inheritance, and casting.))$$..()-))(..)($--TTy I ZL@J@y4 L >P )! >"  % % % TTL 9 ZL@J@ L >P Tx:L & ZL@J@: L >\Java's f$)-)$% % % Tp'[ R ZL@J@' L >XObject222222% % % TTSL i ZL@J@S L >P epTjL : ZL@J@j CL >class has one constructor (no arguments) and 11 methods, including p))$$&" WMFC o.($.-))..#.)...(-.F).$)-...F)...$-).---% % % Tp;b H ZL@J@; L >Xequals------% % % TTIL _ ZL@J@I L >P kTd`L  ZL@J@` L >Tand )..% % % T|b c ZL@J@ L >\toString--------% % % TdL V ZL@J@d L >. All classes in Java extend B))$#)$.$)-)).(..! >"  % % % Td + ZL@J@ L >Tthe .)% % % Tp, 9 ZL@J@, L >XObject------% % % TT: P ZL@J@: L >P Y1TQ  ZL@J@Q "L >class or another class that extend(($$-).-.()($$.))-).-TX > ZL@J@ L >Ps $% % % Tp? L  ZL@J@? L >XObject------% % % T\M [ ZL@J@M  -L >. There is no exception to this. All classes 9.()$-.).().....$B))$#)$Tx\ J ZL@J@\ L >\inherit ..(TTK a ZL@J@K L >P Tb  ZL@J@b L >tthe methods of the HP-)F)...$..)% % % Tp! . ZL@J@! L >XObject------% % % TT/ D ZL@J@/ L >P TxE $ ZL@J@E L >\class. c)($$TT% M ZL@J@% L >P e)! >"  % % % TT 9 ZL@J@q L >P rcT\:  ZL@J@:q XL >One class inherits the methods and instance variables of another class with the keyword B.)))$$..($.)F)-..$)...#)-))-))-)$.).-.(()#$B..)-)-B..% % % Tx5  ZL@J@q L >\extendsef-------% % % T   ZL@J@q #L >. For example, the following class on3.).)F.).)..B.-()$#! >"  % % % T  ZL@J@ L >heading explicitly states that.))..-)..)-#))$.(TT  ZL@J@ L >P STd X ZL@J@ L >Tthe -)% % % TY  ZL@J@Y L >`EmptyClass----------% % % TT 1 ZL@J@ L >P TH2 ZL@J@2 *L >class inherits all of the method of class ()#$.-($(..)F)...-(($$% % % Tp  ZL@J@ L >XObject------% % % T   ZL@J@ #L >. If a class heading does not have ))($$-))---..)$..-)-)% % % Tx  ZL@J@ L >\extendsls-------% % % TX  ZL@J@ L >P, ! >"  % % % T  QX ZL@J@C L >the compiler automatically adds .)(.F.))..F))(-)..$% % % TxR Q ZL@J@RC L >\extends-9-------% % % TT X ZL@J@C L >P % % % Tp Q ZL@J@C L >XObject------% % % TT X ZL@J@C L >P.TT X ZL@J@C L >P )! >"  % % % TTXZ m ZL@J@X L >P ! >" Rp@1Courier'<+(RO`2<+4() +$O`2<+4( o.14(<+ Bo.1LsX71 Courie(472h(9'1((z%1(Bdv% % %  % % % T, $ ZL@J@ %L >//&WMFCo This class extends Object even if -------------------------------------% % %  UT% ZL@J@% L >hextends Object--------------% % %  TT ZL@J@ L >P an-T ZL@J@ L >`is omitted----------TT ZL@J@ L >P --! >"  % % %  UTp )ZL@J@L >Xpublic------% % %  TT )ZL@J@L >P rd-% % %  UTl )ZL@J@L >Xclasse-----% % %  TT )ZL@J@L >P Bo-T )ZL@J@ L >dEmptyClass v-----------% % %  UTx )ZL@J@L >\extendsol-------% % %  TT C)ZL@J@L >P l-TdD )ZL@J@DL >TObje----Td )ZL@J@L >Tct {----TT )ZL@J@L >P ol-! >"  TT*tZL@J@fL >P}l-TT*tZL@J@fL >P ta-! >" % % ( 6>6 >6 66=6 =6 66<6<666;6;666:6:66696966686866676766666666 6 5656 6  6 4646 6  6 3636 6  6 2626 6  6 1616 6 6060666/6/666.6.666-6-666,6,66  3."System--@"Arial--- 2 N9 3Chapter 1  2 N34i 2 N3 i ,3'@"Arial--- 2 e93 i,3'@"Arial---(2 93Generic Collections    2 K3 i,3'@"Arial--- 2 93 i ,3' 2 93 i ,3'@"Arial---2 93Goalsd  2 b3 i,3'@Symbol---@"Arial---@Times New Roman------ 2 93i--- 2 ?3 i---D2 M&3Introduce class Object and inheritance  2 3 i,3'@1Courier- - - --- 2 93i--- 2 ?3 i---e2 M<3Show how one collection can store any type of element using    - - - 2 3Object[]--- 2 3 i,3' 2 93 i,3'@"Arial- - - @1Courier New- - - - - -  2 31i 2 )34i 2 43.1 The ]  - - - 2 t3Object - - - 2 3 i2 3classt  2 3 i ,3- @ !- '---2 193The - - - 2 1O 3StringBag--- 2 13 iv2 1G3class shown of Chapter 9 could only store one type of element. It is de   \2 163sirable to have a collection class to store any type. ,3'F2 ?9'3Java provides at least two approaches:   2 ?3 i,3'@Times New Roman--- 2 H93 i,3'@1Courier---@1Courier New------.2 V931. Store references to ---2 V3Object--- 2 V3 i12 V3objects rather than just ---2 VA3String--- 2 Vi3 i 2 Vl3(this section) 2 V3 i,3'V2 f9232. Use Java generics (in the chapter that follows)   2 f+3 i,3'--- 2 oQ3 i,3' 2 wQ3 i,3'---:2 93We'll consider the first option  2 3 iG2 (3now, which requires knowledge of Java's    ---2 3Object--- 2 3 i;2  3class, inheritance, and casting. 2 ]3 i,3'--- 2 93 i2 M3Java's ]- - - 2 m3Object--- 2 3 ip2 C3class has one constructor (no arguments) and 11 methods, including s  ---2 3equals--- 2 3 i2 3and ---2 *3toString---72 Z3. All classes in Java extend  ,3'---2 93the ---2 K3Object--- 2 p3 i>2 s"3class or another class that extend2 3s ---2 3Object---O2 B-3. There is no exception to this. All classes  2 3inheritg 2 43 i(2 73the methods of the  ---2 3Object--- 2 3 i2 3class. g 2 3 i,3'--- 2 93 i2 MX3One class inherits the methods and instance variables of another class with the keyword   ---2 3extendsg---@2 .#3. For example, the following class   ,3'---82 93heading explicitly states that 2 3 i2 3the ---2  3EmptyClass--- 2 3 iJ2 *3class inherits all of the method of class  ---2 3Object---@2 #3. If a class heading does not have ---2 3extendsg---2 3, ,3'---;2 9 3the compiler automatically adds   ---2 3extendsg--- 2 3 i---2  3Object--- 2 -3.i 2 03 i,3'--- 2 Q3 i,3'@1Courier------C2 9%3// This class extends Object even if --- U 2 3extends Object---  2 o3 i2 u 3is omitted 2 3 i,3'--- U2 93public---  2 ]3 i--- U2 c3classc---  2 3 i2  3EmptyClass --- U2 3extendsg---  2 3 i2 3Obje2 3ct { 2 ,3 i,3' 2 93}i 2 ?3 i,3'-- 33222222222222221111111111111111000000՜.+,D՜.+,L hp  University of Arizona+rU  Chapter 13 Title 8@ _PID_HLINKSAlMhmailto:EmptyClass@8813f2  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsuvwxyz{}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQSTUVWXY^_bRoot Entry Fg7aData t1Table| WordDocument 3SummaryInformation(DocumentSummaryInformation8RMsoDataStore|g7qg7MZ4P1EOPX1KNQ==2|g7qg7Item  PropertiesUCompObj y   F'Microsoft Office Word 97-2003 Document MSWordDocWord.Document.89q