224
Contents at a glance Introduction xix Part I INTRODUCING MICROSOFT VISUAL C# AND MICROSOFT VISUAL STUDIO 2013 Chapter 1 Welcome to C# 3 Chapter 2 Working with variables, operators, and expressions 39 Chapter 3 Writing methods and applying scope 65 Chapter 4 Using decision statements 93 Chapter 5 Using compound assignment and iteration statements 113 Chapter 6 Managing errors and exceptions 135 Part II UNDERSTANDING THE C# OBJECT MODEL Chapter 7 Creating and managing classes and objects 161 Chapter 8 Understanding values and references 183 Chapter 9 Creating value types with enumerations and structures 207 Chapter 10 Using arrays 227 Chapter 11 Understanding parameter arrays 251 Chapter 12 Working with inheritance 263 Chapter 13 Creating interfaces and defining abstract classes 287 Chapter 14 Using garbage collection and resource management 317 Part III DEFINING EXTENSIBLE TYPES WITH C# Chapter 15 Implementing properties to access fields 341 Chapter 16 Using indexers 363 Chapter 17 Introducing generics 381 Chapter 18 Using collections 411 Chapter 19 Enumerating collections 435 Chapter 20 Decoupling application logic and handling events 451 Chapter 21 Querying in-memory data by using query expressions 485 Chapter 22 Operator overloading 511 Chapter 16 Using indexers 363 Chapter 17 Introducing generics 381 Chapter 18 Using collections 411 Chapter 19 Enumerating collections 435 Chapter 20 Decoupling application logic and handling events 451 Chapter 21 Querying in-memory data by using query expressions 485 Chapter 22 Operator overloading 511 iv Contents at a glance Part IV BUILDING PROFESSIONAL WINDOWS 8.1 APPLICATIONS WITH C# Chapter 23 Improving throughput by using tasks 537 Chapter 24 Improving response time by performing asynchronous operations 581 Chapter 25 Implementing the user interface for a Windows Store app 623 Chapter 26 Displaying and searching for data in a Windows Store app 673 Chapter 27 Accessing a remote database from a Windows Store app 721 Index 763 v Contents Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix Part I INTRODUCING MICROSOFT VISUAL C# AND MICROSOFT VISUAL STUDIO 2013 Chapter 1 Welcome to C# 3 Beginning programming with the Visual Studio 2013 environment. . . . . . 3 Writing your first program. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Using namespaces. . . . . . . .

Naslov 4

  • Upload
    salasko

  • View
    218

  • Download
    3

Embed Size (px)

DESCRIPTION

sadrzina o programiranju-content

Citation preview

Page 1: Naslov 4

Contents at a glance Introduction xix Part I INTRODUCING MICROSOFT VISUAL C# AND MICROSOFT VISUAL STUDIO 2013 Chapter 1 Welcome to C# 3 Chapter 2 Working with variables, operators, and expressions 39 Chapter 3 Writing methods and applying scope 65 Chapter 4 Using decision statements 93 Chapter 5 Using compound assignment and iteration statements 113 Chapter 6 Managing errors and exceptions 135 Part II UNDERSTANDING THE C# OBJECT MODEL Chapter 7 Creating and managing classes and objects 161 Chapter 8 Understanding values and references 183 Chapter 9 Creating value types with enumerations and structures 207 Chapter 10 Using arrays 227 Chapter 11 Understanding parameter arrays 251 Chapter 12 Working with inheritance 263 Chapter 13 Creating interfaces and defining abstract classes 287 Chapter 14 Using garbage collection and resource management 317 Part III DEFINING EXTENSIBLE TYPES WITH C# Chapter 15 Implementing properties to access fields 341 Chapter 16 Using indexers 363 Chapter 17 Introducing generics 381 Chapter 18 Using collections 411 Chapter 19 Enumerating collections 435 Chapter 20 Decoupling application logic and handling events 451 Chapter 21 Querying in-memory data by using query expressions 485 Chapter 22 Operator overloading 511

Chapter 16 Using indexers 363 Chapter 17 Introducing generics 381 Chapter 18 Using collections 411 Chapter 19 Enumerating collections 435 Chapter 20 Decoupling application logic and handling events 451 Chapter 21 Querying in-memory data by using query expressions 485 Chapter 22 Operator overloading 511 iv Contents at a glance Part IV BUILDING PROFESSIONAL WINDOWS 8.1 APPLICATIONS WITH C# Chapter 23 Improving throughput by using tasks 537 Chapter 24 Improving response time by performing asynchronous operations 581 Chapter 25 Implementing the user interface for a Windows Store app 623 Chapter 26 Displaying and searching for data in a Windows Store app 673 Chapter 27 Accessing a remote database from a Windows Store app 721 Index 763 v Contents Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix Part I INTRODUCING MICROSOFT VISUAL C# AND MICROSOFT VISUAL STUDIO 2013 Chapter 1 Welcome to C# 3 Beginning programming with the Visual Studio 2013 environment. . . . . . 3 Writing your first program. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Using namespaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Creating a graphical application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Examining the Windows Store app. . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Examining the WPF application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Adding code to the graphical application. . . . . . . . . . . . . . . . . . . . . . 34 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 Quick Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Chapter 2 Working with variables, operators, and expressions 39 Understanding statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Using identifiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Identifying keywords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Using variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Naming variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Declaring variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Working with primitive data types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Unassigned local variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Displaying primitive data type values. . . . . . . . . . . . . . . . . . . . . . . . . 44 What do you think of this book? We want to hear from you! Microsoft is interested in hearing your feedback so we can continually improve our books and learning resources for you. To participate in a brief online survey, please visit: www.microsoft.com/learning/booksurvey/ vi Contents Using arithmetic

Page 2: Naslov 4

operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Operators and types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Examining arithmetic operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Controlling precedence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Using associativity to evaluate expressions. . . . . . . . . . . . . . . . . . . . . 60 Associativity and the assignment operator. . . . . . . . . . . . . . . . . . . . . 60 Incrementing and decrementing variables. . . . . . . . . . . . . . . . . . . . . . . . . . .61 Prefix and postfix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Declaring implicitly typed local variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 Quick Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Chapter 3 Writing methods and applying scope 65 Creating methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Declaring a method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Returning data from a method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Calling methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Applying scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Defining local scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Defining class scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Overloading methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Writing methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Using optional parameters and named arguments. . . . . . . . . . . . . . . . . . . 83 Defining optional parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Passing named arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Resolving ambiguities with optional parameters and named arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91 Quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Chapter 4 Using decision statements 93 Declaring Boolean variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Using Boolean operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Contents vii Understanding equality and relational operators. . . . . . . . . . . . . . . 94 Understanding conditional logical operators. . . . . . . . . . . . . . . . . . . 95 Short-circuiting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Summarizing operator precedence and associativity. . . . . . . . . . . . 96 Using if statements to make decisions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Understanding if statement syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Using blocks to group statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Cascading if statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Using switch statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Understanding switch statement syntax. . . . . . . . . . . . . . . . . . . . . . 106 Following the switch statement rules. . . . . . . . . . . . . . . . . . . . . . . . . 107 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Chapter 5 Using compound assignment and iteration statements 113 Using compound assignment operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Writing while statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Writing for Statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Understanding for statement scope. . . . . . . . . . . . . . . . . . . . . . . . . . 123 Writing do statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132 Quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Chapter 6 Managing errors and exceptions 135 Coping with errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Trying code and catching exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Unhandled Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Using multiple catch handlers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Catching multiple

Page 3: Naslov 4

exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Propagating exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Using checked and unchecked integer arithmetic. . . . . . . . . . . . . . . . . . . 147 Writing checked statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 viii Contents Writing checked expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Throwing exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Using a finally block. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158 Quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Part II UNDERSTANDING THE C# OBJECT MODEL Chapter 7 Creating and managing classes and objects 161 Understanding classification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 The purpose of encapsulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Defining and using a class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Controlling accessibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Working with constructors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Overloading constructors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Understanding static methods and data. . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Creating a shared field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Creating a static field by using the const keyword. . . . . . . . . . . . . . 177 Understanding static classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Anonymous classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 Quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Chapter 8 Understanding values and references 183 Copying value type variables and classes. . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Understanding null values and nullable types. . . . . . . . . . . . . . . . . . . . . . . 189 Using nullable types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Understanding the properties of nullable types. . . . . . . . . . . . . . . 191 Using ref and out parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Creating ref parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Creating out parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 How computer memory is organized. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Using the stack and the heap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Contents ix The System.Object class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Boxing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Unboxing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Casting data safely. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 The is operator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 The as operator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 Quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Chapter 9 Creating value types with enumerations and structures 207 Working with enumerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Declaring an enumeration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Using an enumeration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Choosing enumeration literal values. . . . . . . . . . . . . . . . . . . . . . . . . 209 Choosing an enumeration’s underlying type. . . . . . . . . . . . . . . . . . 210 Working with structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Declaring a structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Understanding structure and class differences. . . . . . . . . . . . . . . . 215 Declaring structure variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Understanding structure initialization. . . . . . . . . . . . . . . . . . . . . . . . 217 Copying structure

Page 4: Naslov 4

variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225 Quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Chapter 10 Using arrays 227 Declaring and creating an array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 Declaring array variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227 Creating an array instance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Populating and using an array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Creating an implicitly typed array. . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Accessing an individual array element. . . . . . . . . . . . . . . . . . . . . . . . 231 Iterating through an array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 x Contents Passing arrays as parameters and return values for a method. . . 233 Copying arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Using multidimensional arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Creating jagged arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248 Quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Chapter 11 Understanding parameter arrays 251 Overloading—a recap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Using array arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Declaring a params Array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Using params object[ ]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Using a params array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Comparing parameter arrays and optional parameters. . . . . . . . . . . . . . 259 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262 Quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 Chapter 12 Working with inheritance 263 What is inheritance?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Using inheritance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 The System.Object class revisited. . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 Calling base class constructors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 Assigning classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Declaring new methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Declaring virtual methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Declaring override methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Understanding protected access. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Understanding extension methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284 Quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 Contents xi Chapter 13 Creating interfaces and defining abstract classes 287 Understanding interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Defining an interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 Implementing an interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 Referencing a class through its interface. . . . . . . . . . . . . . . . . . . . . . 290 Working with multiple interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 Explicitly implementing an interface. . . . . . . . . . . . . . . . . . . . . . . . . 292 Interface restrictions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Defining and using interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 Abstract classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Abstract methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Sealed classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Sealed methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Implementing and using an abstract class. . . . . . . . . . . . . . . . . . . . 307 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313 Quick reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 Chapter 14 Using garbage collection and resource management 317 The life and times of an object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 Writing destructors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 Why use the garbage collector?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 How does the garbage collector work?. . . . . . . . . . . . . . . . . .

Page 5: Naslov 4

. . . . . 322 Recommendations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 Resource management. . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 Disposal methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . 323 Exception-safe disposal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 The using statement and the IDisposable interface. . . . . . . . . . . . . 324 Calling the Dispose method from a destructor. . . . . . . . . . . . . . . . . 326 Implementing exception-safe disposal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .336 Quick reference.

Knjiga ”Programski jezik C++ sa rešenim zadacima”, nastala je

Page 6: Naslov 4

kao prate i  materijal za kurseve koje su autori držali na UniverzitetuSingidunum (Fakultet za informatiku i ra unarstvo i

Page 7: Naslov 4

Fakultet zamenadžment).Knjiga je orijentisana ka poslovnim aplikacijama i sadrži veliki

Page 8: Naslov 4

brojrešenih zadataka sa objašnjenjima.U dodatku knjige detaljno su opisana Microsoftova integrisanarazvoj

Page 9: Naslov 4

na okruženja Visual Studio C++ verzije 6 i 2008.Autori su uložili veliki napor da ova knjiga ne sadrži greške.

Page 10: Naslov 4

Svesugestije, korekcije i primedbe su više nego dobrodošle.- 3 - 

Page 11: Naslov 4

 

Sadržaj

Page 12: Naslov 4

Predgovor ....................................................................................................... 3Sadržaj .......................................................................................

Page 13: Naslov 4

.................... 41. Uvod .......................................................................................................... 61.1 Programski jezik C++ ...........

Page 14: Naslov 4

............................

............................

....... 61.2 Proširenja programskog jezika C .........................................................

Page 15: Naslov 4

71.3 Jednostavan C++ program ................................................................... 91.4 Celi brojevi i aritmetika .....................................

Page 16: Naslov 4

............................

.... 162. Realni brojevi, iteracije i donošenje odluka ............................................ 232.1 Realni brojevi ................................

Page 17: Naslov 4

............................

......................... 232.2 Iteracije (petlje) .................................................................................. 302.3 Donošenje odluk

Page 18: Naslov 4

e .............................................................................. 382.4 Pravila prioriteta ................................................................................

Page 19: Naslov 4

423. Koncept funkcije ...................................................................................... 493.1 Definicija funkcije .....................................................

Page 20: Naslov 4

........................ 493.2 Prosle ivanje  parametara po vrednosti .............................................. 523.3 Promenljive

Page 21: Naslov 4

kao atributi .................................................................... 544. Nizovi ............................................................................................

Page 22: Naslov 4

.......... 574.1 Definicija niza .................................................................................... 574.2 Višedimenzionalni nizovi ...

Page 23: Naslov 4

............................

............................

....... 645. Pokaziva i  ................................................................................................ 685.1

Page 24: Naslov 4

Deklarisanje i inicijalizacija pokaziva a ........................................... 685.2 Pokaziva

i  i nizovi ....................................

Page 25: Naslov 4

............................

............. 716. C-stringovi, pokaziva i, nizovi, funkcije, korisni ki definisani tipovi podataka i

Page 26: Naslov 4

tabele .......................................................................................... 766.1 Definicija i inicijalizacija stringa .................................................

Page 27: Naslov 4

...... 766.2 String konstante i pokaziva i  ............................................................. 796.3 Nizovi stringova i pokaziva a ................................

Page 28: Naslov 4

........................... 836.4 Pokaziva i, reference na promenljive i funkcije ................................ 866.5 Nizovi i

Page 29: Naslov 4

funkcije ................................................................................ 936.6 Stringovi i funkcije ......................................................................

Page 30: Naslov 4

...... 986.7. Korisni ki definisani tipovi podataka i tabele ................................ 1106.8 Strukture ............................

Page 31: Naslov 4

............................

............................

...... 1126.9 Nizovi struktura: tabele .................................................................... 1177. Uvod

Page 32: Naslov 4

u klase i objekte ........................................................................... 1197.1 Objekti, klase i objektno orijentisani siste

Page 33: Naslov 4

mi ................................... 119- 4 - 

Page 34: Naslov 4

 

7.2 Uvod u string objekte ....................................................................... 1217.3 Donošenje odluka u radu sa stringovima ....

Page 35: Naslov 4

............................

......... 1317.4 Funkcije i string objekti ................................................................... 1337.5 Primeri rada sa string

Page 36: Naslov 4

objektima ...................................................... 1387.6 Nizovi stringova ............................................................................... 1478. Programers

Page 37: Naslov 4

ki definisane klase i objekti ................................................ 1488.1 Deklarisanje objekata i klasa..................

Page 38: Naslov 4

............................

.............. 1488.2 Konstruktor klase ............................................................................. 1508.3 Preklapanje konstruktora..........

Page 39: Naslov 4

............................

............................ 1608.4 Destruktori ....................................................................................... 1648.5 Opšte preklapanj

Page 40: Naslov 4

e funkcija i šabloni funkcija .................................. 1749. Rad sa objektima ..............................................................................

Page 41: Naslov 4

...... 1789.1 Koriš enje  nizova, pokaziva a  i dinami ka  alokacija memorije ..... 1789.2 Konstruktor kopije ..........

Page 42: Naslov 4

............................

............................

......... 1859.3 Koriš enje rezervisane re i  const u radu sa klasama ..............

Page 43: Naslov 4

......... 1979.4 Objekti, funkcije i pokaziva i  .......................................................... 2159.5 Dinami ka alokacija objekat

Page 44: Naslov 4

a .......................................................... 2419.6 Stati

ki  podaci  lanovi i funkcije ..................................................... 24710. Nasle ivanj

Page 45: Naslov 4

e ......................................................................................... 25610.1 Primeri nasle ivanja  i osnovna terminologija .....................

Page 46: Naslov 4

........... 25610.2 Polimorfizam .................................................................................. 27810.3 Apstraktne osnovne

Page 47: Naslov 4

klase............................................................... 29711. Fajlovi .................................................................................................. 29911.1 Ulazno/i

Page 48: Naslov 4

zlazni tokovi ..................................................................... 29911.2 Procesiranje fajla karakter po karakter...........................................

Page 49: Naslov 4

32111.3 Slu ajni pristup fajlu ...................................................................... 32511.4 Procesiranje binarnog fajla sekvencijaln

Page 50: Naslov 4

o...................................... 33212. Specijalne teme: Prijateljske funkcije, preklapanje operatora, makroi iinline funkcije ...

Page 51: Naslov 4

............................

............................

............................

..... 33812.1 Prijateljske (friend) funkcije .......................................................... 33812.

Page 52: Naslov 4

2 Preklapanje osnovnih aritmetikih operatora ................................. 34412.3 Makroi i inline funkcije ............................................................

Page 53: Naslov 4

..... 359Dodatak A: Integrisano razvojno okruženje Microsoft Visual C++ .......... 365Dodatak B: Integrisano razvojno okružen

Page 54: Naslov 4

je Microsoft Visual C++ 2008 . 394Reference: ..........................................................

Page 55: Naslov 4

............................

............ 412- 5 - 

Page 56: Naslov 4

Knjiga ”Programski jezik C++ sa rešenim zadacima”, nastala je kao prate i  materijal za kurseve k

Page 57: Naslov 4

oje su autori držali na UniverzitetuSingidunum (Fakultet za informatiku i ra unarstvo i Fakultet z

Page 58: Naslov 4

amenadžment).Knjiga je orijentisana ka poslovnim aplikacijama i sadrži veliki brojrešenih zadataka sa

Page 59: Naslov 4

objašnjenjima.U dodatku knjige detaljno su opisana Microsoftova integrisanarazvojna okruženja Visual Studio C+

Page 60: Naslov 4

+ verzije 6 i 2008.Autori su uložili veliki napor da ova knjiga ne sadrži greške. Svesugestije, korekcije i

Page 61: Naslov 4

primedbe su više nego dobrodošle.- 3 - 

Page 62: Naslov 4

 

SadržajPredgovor ....................................................................................................... 3Sadržaj ...........................................................

Page 63: Naslov 4

............................

.................... 41. Uvod .......................................................................................................... 61.1 Programski

Page 64: Naslov 4

jezik C++ .......................................................................... 61.2 Proširenja programskog jezika C ................................................

Page 65: Naslov 4

......... 71.3 Jednostavan C++ program ................................................................... 91.4 Celi brojevi i aritmetika .........

Page 66: Naslov 4

............................

............................

.... 162. Realni brojevi, iteracije i donošenje odluka ............................................ 232.1 Realni brojevi ....

Page 67: Naslov 4

............................

............................

......................... 232.2 Iteracije (petlje) .................................................................................. 302.3

Page 68: Naslov 4

Donošenje odluke .............................................................................. 382.4 Pravila prioriteta ........................................................

Page 69: Naslov 4

........................ 423. Koncept funkcije ...................................................................................... 493.1 Definicija funkcije .........................

Page 70: Naslov 4

............................

........................ 493.2 Prosle ivanje  parametara po vrednosti .............................................. 523.3

Page 71: Naslov 4

Promenljive kao atributi .................................................................... 544. Nizovi ................................................................

Page 72: Naslov 4

............................

.......... 574.1 Definicija niza .................................................................................... 574.2 Višedimen

Page 73: Naslov 4

zionalni nizovi .................................................................. 645. Pokaziva i  ....................................................................................

Page 74: Naslov 4

............ 685.1 Deklarisanje i inicijalizacija pokaziva a ........................................... 685.2 Pokaziva

i  i nizovi ........

Page 75: Naslov 4

............................

............................

............. 716. C-stringovi, pokaziva i, nizovi, funkcije, korisni ki definisani

Page 76: Naslov 4

tipovi podataka i tabele .......................................................................................... 766.1 Definicija i inicijalizacija stringa .....................

Page 77: Naslov 4

............................

...... 766.2 String konstante i pokaziva i  ............................................................. 796.3 Nizovi stringova i pokaziva a ....

Page 78: Naslov 4

............................

........................... 836.4 Pokaziva i, reference na promenljive i funkcije ................................ 866.5

Page 79: Naslov 4

Nizovi i funkcije ................................................................................ 936.6 Stringovi i funkcije ..........................................

Page 80: Naslov 4

............................

...... 986.7. Korisni ki definisani tipovi podataka i tabele ................................ 1106.8 Strukture

Page 81: Naslov 4

............................

............................

............................

...... 1126.9 Nizovi struktura: tabele .............................................................

Page 82: Naslov 4

....... 1177. Uvod u klase i objekte ........................................................................... 1197.1 Objekti, klase i objektno

Page 83: Naslov 4

orijentisani sistemi ................................... 119- 4 - 

Page 84: Naslov 4

 

7.2 Uvod u string objekte ...............

Page 85: Naslov 4

............................

............................ 1217.3 Donošenje odluka u radu sa stringovima ......................................... 1317.4

Page 86: Naslov 4

Funkcije i string objekti ................................................................... 1337.5 Primeri rada sa string objektima .......................................

Page 87: Naslov 4

............... 1387.6 Nizovi stringova ............................................................................... 1478. Programerski definisane klase i

Page 88: Naslov 4

objekti ................................................ 1488.1 Deklarisanje objekata i klasa............................................................ 1488.2 

Page 89: Naslov 4

Konstruktor klase ............................................................................. 1508.3 Preklapanje konstruktora.................................................................. 

Page 90: Naslov 4

1608.4 Destruktori ....................................................................................... 1648.5 Opšte preklapanje funkcija i šabloni

Page 91: Naslov 4

funkcija .................................. 1749. Rad sa objektima .................................................................................... 1789.1 Koriš enje  nizov

Page 92: Naslov 4

a, pokaziva a  i dinami ka  alokacija memorije ..... 1789.2 Konstruktor kopije ..................................................................

Page 93: Naslov 4

......... 1859.3 Koriš enje rezervisane re i  const u radu sa klasama ....................... 1979.4 Objekti,

Page 94: Naslov 4

funkcije i pokaziva i  .......................................................... 2159.5 Dinami ka alokacija objekata .....................................................

Page 95: Naslov 4

..... 2419.6 Statiki  podaci  la

novi i funkcije ..................................................... 24710. Nasle ivanje .....................................................

Page 96: Naslov 4

............................

........ 25610.1 Primeri nasle ivanja  i osnovna terminologija ................................ 25610.2 Polimorfizam .......

Page 97: Naslov 4

............................

............................

................... 27810.3 Apstraktne osnovne klase................................................

Page 98: Naslov 4

............... 29711. Fajlovi .................................................................................................. 29911.1 Ulazno/izlazni tokovi ..................................

Page 99: Naslov 4

............................

....... 29911.2 Procesiranje fajla karakter po karakter........................................... 32111.3 Slu ajni pristup fajlu ....

Page 100: Naslov 4

............................

............................

.......... 32511.4 Procesiranje binarnog fajla sekvencijalno...................................... 33212. S

Page 101: Naslov 4

pecijalne teme: Prijateljske funkcije, preklapanje operatora, makroi iinline funkcije ...........................................................

Page 102: Naslov 4

............................

..... 33812.1 Prijateljske (friend) funkcije .......................................................... 33812.2 Preklapanje osnovnih aritmeti

Page 103: Naslov 4

kih operatora ................................. 34412.3 Makroi i inline funkcije ................................................................. 359Dodatak A: Integrisano

Page 104: Naslov 4

razvojno okruženje Microsoft Visual C++ .......... 365Dodatak B: Integrisano razvojno okruženje Microsoft Visual

Page 105: Naslov 4

C++ 2008 . 394Reference: .................................................................................................. 412- 5 - 

Page 106: Naslov 4