1 / 128

Classes and Objects: A Deeper Look

2. Instead of this absurd division into sexes, they ought to class people as static and dynamic.Evelyn WaughIs it a world to hide virtues in?William ShakespeareBut what, to serve our private ends, Forbids the cheating of our friends?Charles Churchill. 3. This above all: to thine own self be t

alaula
Télécharger la présentation

Classes and Objects: A Deeper Look

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. 1 10 Classes and Objects: ADeeperLook

    2. 2 Instead of this absurd division into sexes, they ought to class people as static and dynamic. Evelyn Waugh Is it a world to hide virtues in? William Shakespeare But what, to serve our private ends, Forbids the cheating of our friends? Charles Churchill

    3. 3 This above all: to thine own self be true. William Shakespeare Dont be consistent, but be simply true. Oliver Wendell Holmes, Jr.

    4. 4 OBJECTIVES In this chapter you will learn: Encapsulation and data hiding. The concepts of data abstraction and abstract data types (ADTs). To use keyword this. To use indexers to access members of a class. To use static variables and methods. To use readonly fields. To take advantage of C#s memory-management features.

    5. 5 OBJECTIVES How to create a class library. When to use the internal access modifier. To use object initializers to set property values as you create a new object. To add functionality to existing classes with extension methods. To use delegates and lambda expressions to pass methods to other methods for execution at a later time. To create objects of anonymous types.

    6. 6 10.1 Introduction 10.2 Time Class Case Study 10.3 Controlling Access to Members 10.4 Referring to the Current Objects Members with the this Reference 10.5 Indexers 10.6 Time Class Case Study: Overloaded Constructors 10.7 Default and Parameterless Constructors 10.8 Composition 10.9 Garbage Collection and Destructors 10.10static Class Members 10.11readonly Instance Variables

    7. 7 10.12 Software Reusability 10.13 Data Abstraction and Encapsulation 10.14 Time Class Case Study: Creating Class Libraries 10.15 internal Access 10.16 Class View and Object Browser 10.17 Object Initializers 10.18 Time Class Case Study: Extension Methods 10.19 Delegates 10.20 Lambda Expressions 10.21 Anonymous Types

    8. 8

    9. 9

    10. 10 10.2Time Class Case Study (Cont.) A classs public methods are the public services or the public interface that the class provides to its clients. When instance variables are declared in the class body, they can be initialized using the same initialization syntax as a local variable.

    11. 11

    12. 12

    13. 13 Notes on the Time1 Class Declaration The actual data representation used within the class is of no concern to the classs clients, so fields are noramlly declared private. Clients could use the same public methods and properties to get the same results without being aware a change in the internal representation. 10.2Time Class Case Study (Cont.)

    14. 14 10.2Time Class Case Study (Cont.)

    15. 15 10.3Controlling Access to Members The access modifiers public and private control access to a classs variables and methods. The primary purpose of public methods is to present to the classs clients a view of the services the class provides. Clients of the class need not be concerned with how the class accomplishes its tasks. A classs private variables, properties and methods are not directly accessible to the classs clients.

    16. 16

    17. 17

    18. 18

    19. 19

    20. 20

    21. 21 10.4Referring to the Current Objects Members with the this Reference (Cont.) If the constructors parameter names are identical to the classs instance-variable names, so they hide the corresponding instance variables. You can use the this reference to refer to hidden instance variables explicitly. If a member is not hidden, the this keyword is implied, but can be included explicitly.

    22. 22 10.4Referring to the Current Objects Members with the this Reference (Cont.)

    23. 23 10.4Referring to the Current Objects Members with the this Reference (Cont.)

    24. 24 10.5Indexers A class that encapsulates lists of data can use keyword this to define property-like class members called indexers that allow array-style indexed access to lists of elements. You can define both integer indices and noninteger indices. Indexers can return any type, even one that is different from the type of the underlying data. Unlike properties, for which you can choose an appropriate property name, indexers must be defined with keyword this.

    25. 25 10.5Indexers (Cont.) Indexers have the general form: accessModifier returnType this[ IndexType1 name1, IndexType2 name2,] { get { // use name1, name2, ... here to get data } set { // use name1, name2, ... here to set data } } The IndexType parameters are accessible to the get and set accessors.

    26. 26 10.5Indexers (Cont.) The accessors define how to use the index (or indices) to retrieve or modify the appropriate data member. The indexers get accessor must return a value of type returnType. As in properties, the set accessor can use the implicit parameter value to reference the value that should be assigned to the element.

    27. 27

    28. 28

    29. 29

    30. 30

    31. 31

    32. 32

    33. 33

    34. 34

    35. 35

    36. 36

    37. 37

    38. 38 10.6Time Class Case Study: Overloaded Constructors (Cont.) Constructor initializers are a popular way to reuse initialization code provided by one of the classs constructors.

    39. 39 Notes Regarding Class Time2s Methods, Properties and Constructors Consider changing the representation of the time to a single int value representing the total number of seconds that have elapsed since midnight. Only the bodies of the methods that access the private data directly would need to change. There would be no need to modify the bodies of methods SetTime, ToUniversalString or ToString. 10.6Time Class Case Study: Overloaded Constructors (Cont.)

    40. 40 10.6Time Class Case Study: Overloaded Constructors (Cont.) When there is no access modifier before a get or set accessor, the accessor inherits the access modifier preceding the property name.

    41. 41

    42. 42

    43. 43

    44. 44 10.7Default and Parameterless Constructors

    45. 45 10.7Default and Parameterless Constructors (Cont.)

    46. 46

    47. 47

    48. 48

    49. 49

    50. 50

    51. 51

    52. 52

    53. 53 10.9Garbage Collection and Destructors

    54. 54 10.9Garbage Collection and Destructors (Cont.)

    55. 55 10.9Garbage Collection and Destructors (Cont.)

    56. 56 10.10static Class Members

    57. 57 10.10static Class Members (Cont.)

    58. 58 10.10static Class Members (Cont.)

    59. 59

    60. 60

    61. 61

    62. 62

    63. 63 10.10static Class Members (Cont.) string objects in C# are immutablethey cannot be modified after they are created. Therefore, it is safe to have many references to one string object. String-concatenation operations result in a new string object containing the concatenated values. The original string objects are not modified. C# does not guarantee when, or even whether, the garbage collector will execute. When the garbage collector does run, it is possible that no objects or only a subset of the eligible objects will be collected.

    64. 64 10.10static Class Members (Cont.) A method declared static cannot access non-static class members directly, because a static method can be called even when no objects of the class exist. The this reference cannot be used in a static method.

    65. 65 10.11readonly Instance Variables The principle of least privilege states that code should be granted only the amount of privilege and access needed to accomplish its designated task, but no more. Constants declared with const must be initialized to a constant value when they are declared. C# provides keyword readonly to specify that an instance variable of an object is not modifiable and that any attempt to modify it after the object is constructed is an error. Like constants, readonly variables are declared with all capital letters by convention readonly instance variables can be initialized when they are declared, but this is not required.

    66. 66 10.11readonly Instance Variables (Cont.) A readonly instance variable doesnt become unmodifiable until after the constructor completes execution.

    67. 67

    68. 68

    69. 69

    70. 70

    71. 71

    72. 72 10.12Software Reusability

    73. 73 10.12Software Reusability (Cont.)

    74. 74 10.13Data Abstraction and Encapsulation

    75. 75 10.13Data Abstraction and Encapsulation (Cont.)

    76. 76 10.13Data Abstraction and Encapsulation (Cont.)

    77. 77 10.14Time Class Case Study: Creating Class Libraries

    78. 78 10.14Time Class Case Study: Creating Class Libraries (Cont.)

    79. 79

    80. 80

    81. 81 10.14Time Class Case Study: Creating Class Libraries (Cont.)

    82. 82 10.14Time Class Case Study: Creating Class Libraries (Cont.)

    83. 83 10.14Time Class Case Study: Creating Class Libraries (Cont.)

    84. 84 10.14Time Class Case Study: Creating Class Libraries (Cont.)

    85. 85 10.14Time Class Case Study: Creating Class Libraries (Cont.)

    86. 86 10.14Time Class Case Study: Creating Class Libraries (Cont.)

    87. 87

    88. 88

    89. 89

    90. 90 10.15internal Access

    91. 91

    92. 92

    93. 93

    94. 94 10.16Class View and Object Browser

    95. 95 10.16Class View and Object Browser (Cont.)

    96. 96 10.16Class View and Object Browser (Cont.)

    97. 97 10.16Class View and Object Browser (Cont.)

    98. 98 10.16Class View and Object Browser (Cont.)

    99. 99 10.16Class View and Object Browser (Cont.)

    100. 100

    101. 101

    102. 102

    103. 103

    104. 104

    105. 105

    106. 106 10.17Object Initializers (Cont.)

    107. 107

    108. 108

    109. 109

    110. 110 10.18Time Class Case Study: Extension Methods (Cont.)

    111. 111 10.18Time Class Case Study: Extension Methods (Cont.)

    112. 112 10.18Time Class Case Study: Extension Methods (Cont.)

    113. 113

    114. 114

    115. 115

    116. 116

    117. 117

    118. 118

    119. 119

    120. 120

    121. 121

    122. 122 10.20Lambda Expressions

    123. 123 10.20Lambda Expressions (Cont.)

    124. 124

    125. 125

    126. 126

    127. 127 10.21Anonymous Types

    128. 128 10.21Anonymous Types (Cont.)

More Related