读书人

有关composition的有关问题请求高手

发布时间: 2012-01-16 23:36:51 作者: rapoo

有关composition的问题,请求高手回答???
public class CommissionEmployee
{
protected String firstName;
protected String lastName;
protected String socialSecurityNumber;
protected double grossSales; // gross weekly sales
protected double commissionRate; // commission percentage

// five-argument constructor
public CommissionEmployee( String first, String last, String ssn,
double sales, double rate )
{
// implicit call to Object constructor occurs here
firstName = first;
lastName = last;
socialSecurityNumber = ssn;
setGrossSales( sales ); // validate and store gross sales
setCommissionRate( rate ); // validate and store commission rate
} // end five-argument CommissionEmployee constructor

// set first name
public void setFirstName( String first )
{
firstName = first;
} // end method setFirstName

// return first name
public String getFirstName()
{
return firstName;
} // end method getFirstName

// set last name
public void setLastName( String last )
{
lastName = last;
} // end method setLastName

// return last name
public String getLastName()
{
return lastName;
} // end method getLastName

// set social security number
public void setSocialSecurityNumber( String ssn )
{
socialSecurityNumber = ssn; // should validate
} // end method setSocialSecurityNumber

// return social security number
public String getSocialSecurityNumber()
{
return socialSecurityNumber;


} // end method getSocialSecurityNumber

// set gross sales amount
public void setGrossSales( double sales )
{
grossSales = ( sales < 0.0 ) ? 0.0 : sales;
} // end method setGrossSales

// return gross sales amount
public double getGrossSales()
{
return grossSales;
} // end method getGrossSales

// set commission rate
public void setCommissionRate( double rate )
{
commissionRate = ( rate > 0.0 && rate < 1.0 ) ? rate : 0.0;
} // end method setCommissionRate

// return commission rate
public double getCommissionRate()
{
return commissionRate;
} // end method getCommissionRate

// calculate earnings
public double earnings()
{
return commissionRate * grossSales;
} // end method earnings

// return String representation of CommissionEmployee2 object
public String toString()
{
return String.format( "%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f ",
"commission employee ", firstName, lastName,
"social security number ", socialSecurityNumber,
"gross sales ", grossSales,
"commission rate ", commissionRate );
} // end method toString
} // end class CommissionEmployee


public class BasePlusCommissionEmployee extends CommissionEmployee
{
private double baseSalary; // base salary per week

// six-argument constructor
public BasePlusCommissionEmployee( String first, String last,
String ssn, double sales, double rate, double salary )


{
super( first, last, ssn, sales, rate );
setBaseSalary( salary ); // validate and store base salary
} // end six-argument BasePlusCommissionEmployee constructor

// set base salary
public void setBaseSalary( double salary )
{
baseSalary = ( salary < 0.0 ) ? 0.0 : salary;
} // end method setBaseSalary

// return base salary
public double getBaseSalary()
{
return baseSalary;
} // end method getBaseSalary

// calculate earnings
public double earnings()
{
return baseSalary + ( commissionRate * grossSales );
} // end method earnings

// return String representation of BasePlusCommissionEmployee
public String toString()
{
return String.format(
"%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f\n%s: %.2f ",
"base-salaried commission employee ", firstName, lastName,
"social security number ", socialSecurityNumber,
"gross sales ", grossSales, "commission rate ", commissionRate,
"base salary ", baseSalary );
} // end method toString
} // end class BasePlusCommissionEmployee

class BasePlusCommissionEmployeeTest
{
public static void main( String args[] )
{
// instantiate BasePlusCommissionEmployee object
BasePlusCommissionEmployee basePlusCommissionEmployee =
new BasePlusCommissionEmployee(
"Bob ", "Lewis ", "333-33-3333 ", 5000, .04, 300 );

// get base-salaried commission employee data


System.out.println(
"Employee information obtained by get methods: \n " );
System.out.printf( "%s %s\n ", "First name is ",
basePlusCommissionEmployee.getFirstName() );
System.out.printf( "%s %s\n ", "Last name is ",
basePlusCommissionEmployee.getLastName() );
System.out.printf( "%s %s\n ", "Social security number is ",
basePlusCommissionEmployee.getSocialSecurityNumber() );
System.out.printf( "%s %.2f\n ", "Gross sales is ",
basePlusCommissionEmployee.getGrossSales() );
System.out.printf( "%s %.2f\n ", "Commission rate is ",
basePlusCommissionEmployee.getCommissionRate() );
System.out.printf( "%s %.2f\n ", "Base salary is ",
basePlusCommissionEmployee.getBaseSalary() );

basePlusCommissionEmployee.setBaseSalary( 1000 ); // set base salary

System.out.printf( "\n%s:\n\n%s\n ",
"Updated employee information obtained by toString ",
basePlusCommissionEmployee.toString() );
} // end main
} // end class BasePlusCommissionEmployeeTest

本来是用继承来完成的,现在要改成组成。。composition怎么做啊。。。

[解决办法]
public class BasePlusCommissionEmployee //extends CommissionEmployee
{
private double baseSalary; // base salary per week
private CommissionEmployee ce;


// six-argument constructor
public BasePlusCommissionEmployee( String first, String last,
String ssn, double sales, double rate, double salary )
{
ce = new CommissionEmployee( String first, String last, String ssn,
double sales, double rate );
setBaseSalary( salary ); // validate and store base salary
} // end six-argument BasePlusCommissionEmployee3 constructor

public String getFirstName(){
return ce.getFirstName();
}
// set base salary
public void setBaseSalary( double salary )
{
baseSalary = ( salary < 0.0 ) ? 0.0 : salary;
} // end method setBaseSalary

// return base salary
public double getBaseSalary()


{
return baseSalary;
} // end method getBaseSalary

// calculate earnings
public double earnings()
{
return baseSalary + ( ce.getGrossSales() *ce.getCommissionRate());
} // end method earnings

// return String representation of BasePlusCommissionEmployee3
public String toString()
{
return String.format(
"%s: %s %s\n%s: %s\n%s: %.2f\n%s: %.2f\n%s: %.2f ",
"base-salaried commission employee ", firstName, lastName,
"social security number ", socialSecurityNumber,
"gross sales ", grossSales, "commission rate ", commissionRate,
"base salary ", baseSalary );
} // end method toString
} // end class BasePlusCommissionEmployee3

class BasePlusCommissionEmployeeTest
{
public static void main( String args[] )
{
// instantiate BasePlusCommissionEmployee3 object
BasePlusCommissionEmployee basePlusCommissionEmployee =
new BasePlusCommissionEmployee(
"Bob ", "Lewis ", "333-33-3333 ", 5000, .04, 300 );

// get base-salaried commission employee data
System.out.println(
"Employee information obtained by get methods: \n " );
System.out.printf( "%s %s\n ", "First name is ",
basePlusCommissionEmployee.getFirstName() );
System.out.printf( "%s %s\n ", "Last name is ",
basePlusCommissionEmployee.getLastName() );
System.out.printf( "%s %s\n ", "Social security number is ",
basePlusCommissionEmployee.getSocialSecurityNumber() );
System.out.printf( "%s %.2f\n ", "Gross sales is ",
basePlusCommissionEmployee.getGrossSales() );
System.out.printf( "%s %.2f\n ", "Commission rate is ",
basePlusCommissionEmployee.getCommissionRate() );
System.out.printf( "%s %.2f\n ", "Base salary is ",
basePlusCommissionEmployee.getBaseSalary() );

basePlusCommissionEmployee.setBaseSalary( 1000 ); // set base salary

System.out.printf( "\n%s:\n\n%s\n ",
"Updated employee information obtained by toString ",
basePlusCommissionEmployee.toString() );
} // end main
}


发现如下提示错误是什么原因啊。。???。。。。

ce = new CommissionEmployee( String first, String last, String ssn,
^
1 error

Process completed.

读书人网 >J2SE开发

热点推荐