earlier column I discussed how inheritance can let you use simple code to solve a complicated problem. In that column I outlined how inheritance can simplify the code required to handle two products with different pricing schemes. But then, like life in a Thomas Hardy novel, I pointed out that things can get worse. It turns out that your company, in addition to having two kinds of products (products and services) also has two types of customers: PremiumCustomers and TypicalCustomers. PremiumCustomers get a 10 percent discount on Products and TypicalCustomers aren't allowed to buy ServiceProducts at any price."> earlier column I discussed how inheritance can let you use simple code to solve a complicated problem. In that column I outlined how inheritance can simplify the code required to handle two products with different pricing schemes. But then, like life in a Thomas Hardy novel, I pointed out that things can get worse. It turns out that your company, in addition to having two kinds of products (products and services) also has two types of customers: PremiumCustomers and TypicalCustomers. PremiumCustomers get a 10 percent discount on Products and TypicalCustomers aren't allowed to buy ServiceProducts at any price.">