Contents
8.8.2 Example: Random growth . . . . . . . . . . . . . . . . . . . . 494
8.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
9 Object-oriented programming . . . . . . . . . . . . . . . . . . . . . . . 517
9.1 Inheritance and class hierarchies . . . . . . . . . . . . . . . . . . . . . 517
9.1.1 A class for straight lines . . . . . . . . . . . . . . . . . . . . . . 518
9.1.2 A first try on a class for parabolas . . . . . . . . . . . . . 519
9.1.3 A class for parabolas using inheritance. . . . . . . . . . 519
9.1.4 Checking the class type . . . . . . . . . . . . . . . . . . . . . . . 521
9.1.5 Attribute vs inheritance: has-a vs is-a relationship 522
9.1.6 Superclass for defining an interface . . . . . . . . . . . . . 524
9.2 Class hierarchy for numerical differentiation . . . . . . . . . . . 526
9.2.1 Classes for differentiation . . . . . . . . . . . . . . . . . . . . . 527
9.2.2 Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
9.2.3 A flexible main program . . . . . . . . . . . . . . . . . . . . . . 532
9.2.4 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
9.2.5 Alternative implementation via functions . . . . . . . 536
9.2.6
Alternative implementation via functional
programming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
9.2.7 Alternative implementation via a single class . . . . 538
9.3 Class hierarchy for numerical integration . . . . . . . . . . . . . 540
9.3.1 Numerical integration methods . . . . . . . . . . . . . . . . 540
9.3.2 Classes for integration . . . . . . . . . . . . . . . . . . . . . . . . 542
9.3.3 Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
9.3.4 Using the class hierarchy . . . . . . . . . . . . . . . . . . . . . 546
9.3.5 About object-oriented programming . . . . . . . . . . . . 548
9.4 Class hierarchy for making drawings . . . . . . . . . . . . . . . . . 550
9.4.1 Using the object collection . . . . . . . . . . . . . . . . . . . . 551
9.4.2 Example of classes for geometric objects . . . . . . . . 560
9.4.3 Adding functionality via recursion . . . . . . . . . . . . . 565
9.4.4 Scaling, translating, and rotating a figure . . . . . . . 568
9.5 Classes for DNA analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
9.5.1 Class for regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
9.5.2 Class for genes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
9.5.3 Subclasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
9.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
9.6.1 Chapter topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
9.6.2 Example: Input data reader . . . . . . . . . . . . . . . . . . . 579
9.7 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
A Sequences and difference equations . . . . . . . . . . . . . . . . . . 595
A.1 Mathematical models based on difference equations . . . . 596
A.1.1 Interest rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
A.1.2 The factorial as a difference equation . . . . . . . . . . . 600
A.1.3 Fibonacci numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . 600