Previous | Home | Next |
The Interpreter is used to move the object by the help of the list of the collection or aggregate object. this feature hide the internal representation of the moving object.
- Used the distinguish variations in the traversal of aggregation object.
- For representation of the object Use a standard interface.
- It is used list, sort and map in build each standard collection.
- It is similar to Enumeration class, but more effective.
Example
Teacher is an interface, principle, Voiceprinciple , Worker and broker are implementation classes of interface teacher. Teachertest class is the main class which will create a list of ArrayList and traverse the element of this list.
package r4r; import java.util.*; interface Teacher { public abstract double earn(); } class Principle implements Teacher { private double weeklySalary; private String name; public Principle(String name, double s) { this.name = name; setWeeklySalary(s); } void setWeeklySalary(double s) { if (s > 0) { weeklySalary = s; } else weeklySalary = 0; } public double earnings() { return weeklySalary; } public String getName() { return name; } public String toString() { return "Principle: " + getName(); } @Override public double earn() { // TODO Auto-generated method stub return 0; } } class Voiceprinciple implements Teacher{ private double wagePerPiece; private int quantity; private String name; public Voiceprinciple(String name, double w, int q) { this.name = name; setWagePerPiece(w); setQuantity(q); } void setWagePerPiece(double w) { if (w > 0) wagePerPiece = w; else wagePerPiece = 0; } void setQuantity(int q) { if ( q > 0) quantity = q; else quantity = 0; } public String getName() { return name; } public double earnings() { return quantity * wagePerPiece; } public String toString() { return "Voice Principle: " + getName(); } @Override public double earn() { // TODO Auto-generated method stub return 0; } } class Worker implements Teacher { private double hourlyWage; private double hours; private String name; public Worker(String name, double w, double h) { this.name = name; setHourlyWage(w); setHours(h); } void setHourlyWage(double w) { if (w > 0) hourlyWage = w; else hourlyWage = 0; } void setHours(double h) { if ( 0 <= h && h < 168) hours = h; else hours = 0; } public String getName() { return name; } public double earnings() { return hourlyWage * hours; } public String toString() { return "Worker: " + getName(); } @Override public double earn() { // TODO Auto-generated method stub return 0; } } class Broker implements Teacher { private double salary; private double commission; private double totalSales; private String name; public Broker(String name, double salary, double commission, double totalSales) { this.name = name; setSalary(salary); setCommission(commission); setTotalSales(totalSales); } void setSalary(double s) { if( s > 0) salary = s; else salary = 0; } void setCommission(double c) { if ( c > 0) commission = c; else commission = 0; } void setTotalSales(double ts) { if (ts > 0 ) totalSales = ts; else totalSales = 0; } public String getName() { return name; } public double earnings() { return salary + commission/100*totalSales; } public String toString() { return "Broker name:"+ getName(); } @Override public double earn() { // TODO Auto-generated method stub return 0; } } public class interpretertest { public static void main(String[] args) { java.util.List list = new ArrayList(); list.add(new Principle("Bill",800.00)); list.add(new Broker("Newt", 400.0, 3.75, 159.99)); list.add(new Voiceprinciple("Al", 2.5, 200)); list.add(new Worker("Babara", 13.75, 40)); list.add(new Principle("Peter", 1200.00)); list.add(new Broker("Margret", 600.0,5.5, 200.25)); list.add(new Voiceprinciple("Mark", 4.5, 333)); list.add(new Worker("William", 31.25, 50)); System.out.println("Use built-in iterator:"); Iterator iterator = list.iterator(); while(iterator.hasNext()) { Teacher em = (Teacher)iterator.next(); if (em instanceof Principle) { System.out.print(em + " earns $"); System.out.println(em.earn()); } } } }
Previous | Home | Next |