// // This file contains the C# code from Program 7.19 of // "Data Structures and Algorithms // with Object-Oriented Design Patterns in C#" // by Bruno R. Preiss. // // Copyright (c) 2001--2002 by Bruno R. Preiss, P.Eng. All rights reserved. // // http://www.brpreiss.com/books/opus6/programs/pgm07_19.txt // public class Term : ComparableObject { protected double coefficient; protected int exponent; public Term(double coefficient, int exponent) { this.coefficient = coefficient; this.exponent = exponent; } public override int CompareTo(object obj) { Term term = (Term)obj; if (exponent == term.exponent) { if (coefficient < term.coefficient) return -1; else if (coefficient > term.coefficient) return +1; else return 0; } else return exponent - term.exponent; } public void Differentiate() { if (exponent > 0) { coefficient *= exponent; exponent -= 1; } else coefficient = 0; } } // ...