Contents xii
17.2 Sequences . . . . . . . . . . . . . . . . . . . . . . . . 361
17.3 Sets and maps . . . . . . . . . . . . . . . . . . . . . . 367
17.4 Selecting mutable versus immutable collections . . . . 377
17.5 Initializing collections . . . . . . . . . . . . . . . . . . 380
17.6 Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . 383
17.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . 386
18 Stateful Objects 387
18.1 What makes an object stateful? . . . . . . . . . . . . . 387
18.2 Reassignable variables and properties . . . . . . . . . . 390
18.3 Case study: Discrete event simulation . . . . . . . . . . 393
18.4 A language for digital circuits . . . . . . . . . . . . . . 394
18.5 The Simulation API . . . . . . . . . . . . . . . . . . 397
18.6 Circuit Simulation . . . . . . . . . . . . . . . . . . . . 401
18.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . 409
19 Type Parameterization 410
19.1 Functional queues . . . . . . . . . . . . . . . . . . . . 410
19.2 Information hiding . . . . . . . . . . . . . . . . . . . . 414
19.3 Variance annotations . . . . . . . . . . . . . . . . . . . 417
19.4 Checking variance annotations . . . . . . . . . . . . . . 421
19.5 Lower bounds . . . . . . . . . . . . . . . . . . . . . . 424
19.6 Contravariance . . . . . . . . . . . . . . . . . . . . . . 426
19.7 Object private data . . . . . . . . . . . . . . . . . . . . 429
19.8 Upper bounds . . . . . . . . . . . . . . . . . . . . . . 431
19.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . 434
20 Abstract Members 435
20.1 A quick tour of abstract members . . . . . . . . . . . . 435
20.2 Type members . . . . . . . . . . . . . . . . . . . . . . 436
20.3 Abstract vals . . . . . . . . . . . . . . . . . . . . . . . 437
20.4 Abstract vars . . . . . . . . . . . . . . . . . . . . . . . 438
20.5 Initializing abstract vals . . . . . . . . . . . . . . . . . 439
20.6 Abstract types . . . . . . . . . . . . . . . . . . . . . . 447
20.7 Path-dependent types . . . . . . . . . . . . . . . . . . 449
20.8 Enumerations . . . . . . . . . . . . . . . . . . . . . . . 452
20.9 Case study: Currencies . . . . . . . . . . . . . . . . . . 454
20.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . 463
Cover · Overview · Contents · Discuss · Suggest · Glossary · Index