Forum Java Ptit-Aptech

>>>>> www.java13.tk <<<<<
 
Trang ChínhTrang Chính  CalendarCalendar  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Thành viênThành viên  NhómNhóm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  
Forum has been closed by admin.

Share | 
 

 Bài Employee [Manager, Scientis, Labourer]

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
dohoangdat90
Admin


Tổng số bài gửi : 47
Points : 86
Reputation : 1
Join date : 09/07/2009
Age : 27
Đến từ : Ha Noi

Bài gửiTiêu đề: Bài Employee [Manager, Scientis, Labourer]   25/7/2009, 11:24 pm

Theo yêu cầu của 1 bạn bảo tớ post bài của tớ lên cho mọi người tham khảo!!!
Bài Employee là.
Class Employee là lớp cha.
3 lớp con Manager, Scientis, Labourer kế thừa từ lớp Employee.
Xuất nhập thông tin cho các lớp con.

Code:

import java.util.Scanner;
class Employee //Xay dung class cha.
{
    String name;
    double salary;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getSalary() {
        return salary;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
    void imput() //nhap name, salary for every class con
    {
        Scanner scan = new Scanner(System.in);
        System.out.print("Nhap ten: ");
        name = scan.nextLine();
        System.out.print("Nhap luong co ban: ");
        salary= scan.nextDouble();
    }
    void  display() //in name,salary for every class con
    {
        System.out.printf("Ten can bo: %s \n",getName());
        System.out.printf("Luong co ban: %1.2f \n",getSalary());
    }
}
//----------------------------------------------------------------------------//
class Manager extends Employee
{
    double businessAmount;

    public double getBusinessAmount() {
        return businessAmount;
    }

    double caculatePay() //tinh them tien cho 1 manager
    {
        double commission;
        if(getBusinessAmount()>50000)
            commission=(0.1*getBusinessAmount());
        else
            commission=(0.05*getBusinessAmount());
        return (commission + getSalary());

    }
    void imput()
    {
        super.imput();    //su dung lai ham imput cua lop cha
        System.out.print("Nhap businessAmount[50000]: ");
        Scanner scan = new Scanner(System.in);
        businessAmount = scan.nextDouble();
    }

    void display()
    {
        super.display();
        System.out.printf("Luong sau khi them hoa hong: %1.2f\n",caculatePay());
    }
}
//----------------------------------------------------------------------------//
class Scientis extends Employee
{
    double publicloacation;

    public double getPublicloacation() {
        return publicloacation;
    }

    double caculatePay()  //tinh them tien cho 1 scientis
    {
        double commission;
        if(getPublicloacation()>20)
            commission=(0.2*getSalary());
        else
            commission=(0.1*getSalary());
        return (commission + getSalary());
    }
    void imput()
    {
        super.imput();
        System.out.print("Nhap publicloacation[20]: ");
        Scanner scan = new Scanner(System.in);
        publicloacation = scan.nextDouble();
    }

    void display()
    {
        super.display();
        System.out.printf("Luong sau khi them hoa hong: %1.2f\n",caculatePay());
    }
}
//---------------------------------------------------------------------------//

class Labourer extends Employee
{
    double hoursWorker;

    public double getHoursWorker() {
        return hoursWorker;
    }

    double caculatePay()  //tinh them tien cho 1 labourer
    {
        double commission;
        if(getHoursWorker()>50)
            commission=(0.15*getSalary());
        else
            commission=(0.08*getSalary());
        return (commission + getSalary());
    }
    void imput()
    {
        super.imput();
        System.out.print("Nhap hoursWorker[50]: ");
        Scanner scan = new Scanner(System.in);
        hoursWorker = scan.nextDouble();
    }
    void display()
    {
        super.display();
        System.out.printf("Luong sau khi them hoa hong: %1.2f\n",caculatePay());
    }
}
//----------------------------------------------------------------------------//
public class test2
{
        Manager man = new Manager();
        Scientis sci = new Scientis();
        Labourer lab = new Labourer();

        void imput()
        {
            System.out.print("\nNhap thong tin cho Manager.\n");
            man.imput();
            System.out.print("\nNhap thong tin cho Scientis.\n");
            sci.imput();
            System.out.print("\nNhap thong tin cho Labourer.\n");
            lab.imput();
        }
        void display()
        {
            System.out.print("\nXuat thong tin cho Manager.\n");
            man.display();
            System.out.print("\nXuat thong tin cho Scientis.\n");
            sci.display();
            System.out.print("\nXuat thong tin cho Labourer.\n");
            lab.display();
        }

    public static void main(String[] args)
    {
        test2 ts = new test2();
        ts.imput();
        ts.display();
    }
}

Đã test thử với output:
Code:

Nhap thong tin cho Manager.
Nhap ten: do
Nhap luong co ban: 10000
Nhap businessAmount[50000]: 60000

Nhap thong tin cho Scientis.
Nhap ten: hoang
Nhap luong co ban: 15000
Nhap publicloacation[20]: 15

Nhap thong tin cho Labourer.
Nhap ten: dat
Nhap luong co ban: 20000
Nhap hoursWorker[50]: 60

Xuat thong tin cho Manager.
Ten can bo: do
Luong co ban: 10000.00
Luong sau khi them hoa hong: 16000.00

Xuat thong tin cho Scientis.
Ten can bo: hoang
Luong co ban: 15000.00
Luong sau khi them hoa hong: 16500.00

Xuat thong tin cho Labourer.
Ten can bo: dat
Luong co ban: 20000.00
Luong sau khi them hoa hong: 23000.00

Process completed.

Các bạn có gì tham khảo & góp ý nhé Very Happy Very Happy Very Happy Very Happy
Về Đầu Trang Go down
Xem lý lịch thành viên http://java13.tk/
phanandainhan



Tổng số bài gửi : 2
Points : 2
Reputation : 0
Join date : 26/07/2009

Bài gửiTiêu đề: Re: Bài Employee [Manager, Scientis, Labourer]   26/7/2009, 3:14 am

abstract on the floor .đề nghị coi kỹ đề bài trước khi post.nếu dùng để tham khảo về kế thừa thì Very Happy bt :bounce:
Về Đầu Trang Go down
Xem lý lịch thành viên
river_11576



Tổng số bài gửi : 7
Points : 12
Reputation : 3
Join date : 26/07/2009

Bài gửiTiêu đề: Re: Bài Employee [Manager, Scientis, Labourer]   26/7/2009, 8:39 am

Hôm nay đang buồn thì tình cờ phát hiện ra chú Đạt lập cái 4rum này, thật may là bài Employee anh cũng làm rồi:
Employee.zip


Được sửa bởi river_11576 ngày 26/7/2009, 9:35 am; sửa lần 4.
Về Đầu Trang Go down
Xem lý lịch thành viên
dohoangdat90
Admin


Tổng số bài gửi : 47
Points : 86
Reputation : 1
Join date : 09/07/2009
Age : 27
Đến từ : Ha Noi

Bài gửiTiêu đề: Re: Bài Employee [Manager, Scientis, Labourer]   26/7/2009, 9:10 am

3 lớp con Manager, Scientis, Labourer có cái imput,output của name và salary giống nhau.
Nếu viết như tớ sẽ sử dụng lại đc cái im,out cho 3 lớp trên. ->code ngắn.
Viết abstract thì code nó sẽ dài. Sẽ phải viết đi viết lại 3 lần cái im, out.

code nó sẽ như này đây:

Code:

import java.util.Scanner;
abstract class Employee //Xay dung class cha.
{
    String name;
    double salary;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getSalary() {
        return salary;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
    abstract double caculatePay();
    abstract void imput();
    abstract void  display();

}
//----------------------------------------------------------------------------//
class Manager extends Employee
{
    double businessAmount;

    public double getBusinessAmount() {
        return businessAmount;
    }

    double caculatePay() //tinh them tien cho 1 manager
    {
        double commission;
        if(getBusinessAmount()>50000)
            commission=(0.1*getBusinessAmount());
        else
            commission=(0.05*getBusinessAmount());
        return (commission + getSalary());
    }
    void imput()
    {
        Scanner scan = new Scanner(System.in);
        System.out.print("Nhap ten: ");
        name = scan.nextLine();
        System.out.print("Nhap luong co ban: ");
        salary= scan.nextDouble();
        System.out.print("Nhap businessAmount[50000]: ");
        businessAmount = scan.nextDouble();
    }

    void display()
    {
        System.out.printf("Ten can bo: %s \n",getName());
        System.out.printf("Luong co ban: %1.2f \n",getSalary());
        System.out.printf("Luong sau khi them hoa hong: %1.2f\n",caculatePay());
    }
}
//----------------------------------------------------------------------------//
class Scientis extends Employee
{
    double publicloacation;

    public double getPublicloacation() {
        return publicloacation;
    }

    double caculatePay()  //tinh them tien cho 1 scientis
    {
        double commission;
        if(getPublicloacation()>20)
            commission=(0.2*getSalary());
        else
            commission=(0.1*getSalary());
        return (commission + getSalary());
    }
    void imput()
    {
        Scanner scan = new Scanner(System.in);
        System.out.print("Nhap ten: ");
        name = scan.nextLine();
        System.out.print("Nhap luong co ban: ");
        salary= scan.nextDouble();
        System.out.print("Nhap publicloacation[20]: ");
        publicloacation = scan.nextDouble();
    }

    void display()
    {
        System.out.printf("Ten can bo: %s \n",getName());
        System.out.printf("Luong co ban: %1.2f \n",getSalary());
        System.out.printf("Luong sau khi them hoa hong: %1.2f\n",caculatePay());
    }
}
//---------------------------------------------------------------------------//

class Labourer extends Employee
{
    double hoursWorker;

    public double getHoursWorker() {
        return hoursWorker;
    }

    double caculatePay()  //tinh them tien cho 1 labourer
    {
        double commission;
        if(getHoursWorker()>50)
            commission=(0.15*getSalary());
        else
            commission=(0.08*getSalary());
        return (commission + getSalary());
    }
    void imput()
    {
        Scanner scan = new Scanner(System.in);
        System.out.print("Nhap ten: ");
        name = scan.nextLine();
        System.out.print("Nhap luong co ban: ");
        salary= scan.nextDouble();
        System.out.print("Nhap hoursWorker[50]: ");
        hoursWorker = scan.nextDouble();
    }
    void display()
    {
        System.out.printf("Ten can bo: %s \n",getName());
        System.out.printf("Luong co ban: %1.2f \n",getSalary());
        System.out.printf("Luong sau khi them hoa hong: %1.2f\n",caculatePay());
    }
}
//----------------------------------------------------------------------------//
public class test2
{
        Manager man = new Manager();
        Scientis sci = new Scientis();
        Labourer lab = new Labourer();

        void imput()
        {
            System.out.print("\nNhap thong tin cho Manager.\n");
            man.imput();
            System.out.print("\nNhap thong tin cho Scientis.\n");
            sci.imput();
            System.out.print("\nNhap thong tin cho Labourer.\n");
            lab.imput();
        }
        void display()
        {
            System.out.print("\nXuat thong tin cho Manager.\n");
            man.display();
            System.out.print("\nXuat thong tin cho Scientis.\n");
            sci.display();
            System.out.print("\nXuat thong tin cho Labourer.\n");
            lab.display();
        }

    public static void main(String[] args)
    {
        test2 ts = new test2();
        ts.imput();
        ts.display();
    }
}


Về Đầu Trang Go down
Xem lý lịch thành viên http://java13.tk/
river_11576



Tổng số bài gửi : 7
Points : 12
Reputation : 3
Join date : 26/07/2009

Bài gửiTiêu đề: Re: Bài Employee [Manager, Scientis, Labourer]   26/7/2009, 9:25 am

Chú code thế là chưa thể hiện đc tính đa hình!
Ít ra phải có cái upcast như này:
Code:

            Manager man = new Manager();
Scientis sci = new Scientis();
 Labourer lab = new Labourer();
Employee emp = null;

System.out.println("\nWhich employee you want to test?");
            System.out.println("1.Manager 2.Laborer 3.Scientist");
            System.out.print("Select one: ");
            byte choice=input.nextByte();

            if(choice==1) emp=man;
            else if(choice==2) emp=lab;
            else emp=sci;

            System.out.println("\nWhat you want to do?");
            System.out.println("1.Enter information");
            System.out.println("2.Display information");

            System.out.print("Select one: ");
            choice=input.nextByte();
           
            if(choice==1) emp.init();
            else emp.display();


Được sửa bởi river_11576 ngày 26/7/2009, 10:27 am; sửa lần 1.
Về Đầu Trang Go down
Xem lý lịch thành viên
dohoangdat90
Admin


Tổng số bài gửi : 47
Points : 86
Reputation : 1
Join date : 09/07/2009
Age : 27
Đến từ : Ha Noi

Bài gửiTiêu đề: Re: Bài Employee [Manager, Scientis, Labourer]   26/7/2009, 9:59 am

ừa, cái này hay phết. h mới biết, đã test thử rồi. thank phát Smile
Về Đầu Trang Go down
Xem lý lịch thành viên http://java13.tk/
phanandainhan



Tổng số bài gửi : 2
Points : 2
Reputation : 0
Join date : 26/07/2009

Bài gửiTiêu đề: Re: Bài Employee [Manager, Scientis, Labourer]   26/7/2009, 3:40 pm

mấy cái phần chọn này dùng switch tiện nhất Sad ,mà ở cái abstract kia tui nghĩ là overriding nhap() trong test là có thể dùng đc ,còn trong mấy lớp kia chỉ cẩn kb bt Very Happy Sad
Về Đầu Trang Go down
Xem lý lịch thành viên
lacon



Tổng số bài gửi : 15
Points : 17
Reputation : 0
Join date : 10/07/2009

Bài gửiTiêu đề: Re: Bài Employee [Manager, Scientis, Labourer]   27/7/2009, 2:07 am

dùng switch vừa hay lại vừa dễ hiểu, thanks phanandainhan phát, hí hí
Về Đầu Trang Go down
Xem lý lịch thành viên
dohoangdat90
Admin


Tổng số bài gửi : 47
Points : 86
Reputation : 1
Join date : 09/07/2009
Age : 27
Đến từ : Ha Noi

Bài gửiTiêu đề: Re: Bài Employee [Manager, Scientis, Labourer]   27/7/2009, 9:16 am

cái hay ở bài của river ko phải là ở if hay swich gì cả. Mà hay ở chỗ gán được lớp cha cho lớp con ý. Cái đó gọi là tính đa hình.
Về Đầu Trang Go down
Xem lý lịch thành viên http://java13.tk/
Lee87

avatar

Tổng số bài gửi : 71
Points : 107
Reputation : 5
Join date : 10/07/2009
Age : 30
Đến từ : Hà Nội

Bài gửiTiêu đề: Re: Bài Employee [Manager, Scientis, Labourer]   27/7/2009, 11:04 am

dohoangdat90 đã viết:
cái hay ở bài của river ko phải là ở if hay swich gì cả. Mà hay ở chỗ gán được lớp cha cho lớp con ý. Cái đó gọi là tính đa hình.

đúng rùi đó, nhưng bài của bạn ý viết không rõ ràng cho lắm, vì nếu người khác mới đọc ngay từ dòng đầu tiên sẽ bị nhầm tưởng rằng chỉ là kế thừa bình thường. bên trong mới gán cho no cái biến của class cha. :pirat:

river_11576 đã viết:

Chú code thế là chưa thể hiện đc tính đa hình!
Ít ra phải có cái upcast như này:
Code:

Manager man = new Manager();
Scientis sci = new Scientis();
Labourer lab = new Labourer();
Employee emp = null;

System.out.println("\nWhich employee you want to test?");
System.out.println("1.Manager 2.Laborer 3.Scientist");
System.out.print("Select one: ");
byte choice=input.nextByte();

if(choice==1) emp=man;
else if(choice==2) emp=lab;
else emp=sci;

System.out.println("\nWhat you want to do?");
System.out.println("1.Enter information");
System.out.println("2.Display information");

System.out.print("Select one: ");
choice=input.nextByte();

if(choice==1) emp.init();
else emp.display();
Bài viết rất hay nhưng nên rõ ràng hơn.
ví dụ: Employee man = new Manager();
một chút ý kiển riêng của mình thôi. Smile .
Chúc các bạn học tốt. :lol!:
Về Đầu Trang Go down
Xem lý lịch thành viên
mitdac



Tổng số bài gửi : 2
Points : 2
Reputation : 0
Join date : 09/07/2009

Bài gửiTiêu đề: Re: Bài Employee [Manager, Scientis, Labourer]   4/8/2009, 12:29 pm

Mình muốn tạo class manager extends employee và implements Tax thì phải khai báo như thế nào. Các bạn chỉ giùm mình với! Thanks!
Về Đầu Trang Go down
Xem lý lịch thành viên
Sponsored content




Bài gửiTiêu đề: Re: Bài Employee [Manager, Scientis, Labourer]   

Về Đầu Trang Go down
 
Bài Employee [Manager, Scientis, Labourer]
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Forum Java Ptit-Aptech :: THẢO LUẬN VỀ JAVA :: KẾ THỪA-
Chuyển đến 
Free forum | © phpBB | Free forum support | Report an abuse | Sosblogs.com