![]() |
![]() |
![]() |
![]() |
![]() |
|
Suppose that you develop a big program around trade structures only to discover
that you are more often interested in total trade costs than in prices per
share. For efficiency, you might want to switch from a price
structure variable to a total_cost structure variable, so that
multiplication is not needed when you want a total_cost delivered.
If you work with the information in trade objects using
constructors, readers, and writers exclusively, you need only to change the
definitions of those constructors, readers, and writers to work with a
total_cost structure variable instead of a price structure
variable. Instead of computing total_cost from price and
number values, you compute price from
total_cost and number values:
struct trade {double total_cost; int number;};
struct trade* construct_trade (double price, int number) {
struct trade *tptr;
tptr = (struct trade*) malloc (sizeof (struct trade));
tptr -> total_cost = price * number;
tptr -> number = number;
return tptr;
}
double read_trade_price (struct trade *tptr) {
return (tptr -> total_cost) / (tptr -> number);
}
int read_trade_number (struct trade *tptr) {
return tptr -> number;
}
double read_total_cost (struct trade *tptr) {
return tptr -> total_cost;
}
void write_trade_price (double price, struct trade *tptr) {
tptr -> total_cost = price * tptr -> number;
}
void write_trade_number (int number, struct trade *tptr) {
tptr -> number = number;
}
void write_total_cost (double total_cost, struct trade *tptr) {
tptr -> total_cost = total_cost;
}