Mục lục chương I: ĐỐi tưỢng và LỚP


Xây dựng một lớp phân số với tên là phanso và đa năng hoá toán tử trên lớp. Thực hiện các nhiệm vụ sau



tải về 1.36 Mb.
trang18/28
Chuyển đổi dữ liệu21.12.2018
Kích1.36 Mb.
1   ...   14   15   16   17   18   19   20   21   ...   28

Xây dựng một lớp phân số với tên là phanso và đa năng hoá toán tử trên lớp. Thực hiện các nhiệm vụ sau:


+ Hiển thị các phân số ban đầu và phân số sau khi đã sử lí trên màn hình.

+ Cộng hai phân số.

+ Cộng một phân số với một số.

+ So sánh hai phân số và hiển thị kết quả trên màn hình.

a, Hướng dẫn:

Chúng ta xây dựng một lớp phân số như sau:

public class phanso

{

// Xây dựng một phân số có tử số và mẫu số



public phanso(int tuso1,int mauso1)

//Xây dựng một phân số chỉ chứa một toán hạng.

public phanso(int tuso2)

//Chuyển một số nguyên thành một phân số có mẫu là 1

public static implicit operator phanso(int theInt)

//Chuyển một phân số thành một số nguyên.

public static explicit operator int(phanso thephanso)

// So sánh hai phân số bằng toán tử (= =) và (! =).

public static bool operator = =(phanso lhs, phanso rhs)

public static bool operator !=(phanso lhs, phanso rhs)

//Sử dụng chồng toán tử (+): cộng hai phân số public static phanso operator +(phanso lhs,phanso rhs)

}

b,Bài giải mẫu:



using system;

namespace lop_phan_so

{

public class phanso

{

//Biến thành viên lưu trữ tử số và mẫu số

private int tuso1;

private int mauso1;

public phanso(int tuso1,int mauso1)

{

this.tuso1 = tuso1;



this.mauso1 = mauso1;

}

public phanso(int tuso2)

{

this.tuso1= tuso2;

mauso1 = 1;

}

public static implicit operator phanso(int theInt)

{

return new phanso(theInt);

}

public static explicit operator int(phanso thephanso)

{

return thephanso.tuso1 / thephanso.mauso1;

}

public static bool operator = =(phanso lhs, phanso rhs)

{

if (lhs.tuso1 = = rhs.tuso1 && lhs.mauso1 = = rhs.mauso1)



{

// Khi hai phân số bằng nhau



return true;

}

// Khi hai phân số không bằng nhau



return false;

}

public static bool operator !=(phanso lhs, phanso rhs)

{

Console.WriteLine("su dung toan tu !=");



return !(lhs = = rhs);

}

public override bool Equals(object obj)

{

Console.WriteLine("phuong thuc equals");

if (!(obj is phanso))

{

return false;

}

return this = = (phanso)obj;

}

public static phanso operator +(phanso lhs,phanso rhs)

{

if(lhs.mauso1 = = rhs.mauso1)

{

Console.WriteLine("-Sử dụng toán tử + với hai phân số");



return new phanso(lhs.tuso1 + rhs.tuso1,lhs.mauso1);

}

Console.WriteLine("Sử dụng toán tử+cho một phân số với một số”);

int fist = lhs.tuso1 * rhs.mauso1;

int second = rhs.tuso1 * lhs.mauso1;



return new phanso(fist+ second, lhs.mauso1 * rhs.mauso1);

}

public override string ToString()

{

string s = tuso1.ToString() + "/" + mauso1.ToString();



return s;

}

public class tester

{

static void Main()

{

Console.WriteLine("-Phân số thứ nhất là:");



phanso ps1=new phanso(2,4);

Console.WriteLine("ps1:{0}",ps1.ToString());

Console.WriteLine("-Phân số thứ hai là:");

phanso ps2 = new phanso(1,4);

Console.WriteLine(" ps2:{0} ",ps2.ToString());

phanso ps3 = ps1 + ps2;

Console.WriteLine(" ps1+ps2=ps3 ");

Console.WriteLine(" ps2:{0} ",ps2.ToString());

phanso ps3 = ps1 + ps2;

Console.WriteLine(" ps1+ps2=ps3 ");

Console.WriteLine(" ps3:{0} ",ps3.ToString());

phanso ps4 = ps3 + 5;

Console.WriteLine(" ps4=ps3+5:{0}",ps4.ToString());

phanso ps5 = new phanso(2, 4);

Console.WriteLine(" phanso(2,4)");

Console.WriteLine("-So sánh ps1 va ps5 ");

if (ps5 = = ps1)

{

Console.WriteLine(" ps5:{0}==ps1:{1}",ps5.ToString(), ps1.ToString());



Console.WriteLine("->Hai phân số này bằng nhau");

}

Console.WriteLine("-So sanh ps2 va ps3 ");



if (ps2 = = ps3)

{

Console.WriteLine("->Hai phân số này bằng nhau ");



Console.WriteLine("ps2:{0}==ps3:{1}", ps2.ToString(), ps3.ToString());

}

Console.WriteLine("ps2:{0}!=ps3:{1}", ps2.ToString(), ps3.ToString());



Console.WriteLine("->Hai phân số này không bằng nhau");

Console.ReadLine();

}

}



}

}


Kết quả sau khi thực hiện chương trình:


-Phan so thu nhat la: ps1 = 2/4

- Phan so thu hai la: ps2 = 1/4

- Su dung toan tu + voi hai phan so

ps1 + ps2 = ps3

ps3 = 3/4

- Su dung toan tu + voi mot phan so va mot so

ps4 = ps3 + 5

ps4 = 23/4

- So sanh ps1 va ps5

Ps5 : 2/4 = = ps1:2/4  Hai phan so nay bang nhau

- So sanh ps2 va ps3

Ps2:1/4 != ps3:3/4 Hai phan so khong bang nhau





Chú ý:

+ Nếu như trong chương trình trên ta không dùng phương thức Equals thì chương trình vẫn chạy bình thường mà không báo lỗi. Nhưng nó lại rất cân thiết vì phương thức Equals cung cấp một đối tượng cho phép các ngôn ngữ khác có thể gọi.

+ Ta có thể nhập giá trị của phân số ngoài màn hình mà không cấp giá trị trước trong chương trình.




    1. Поделитесь с Вашими друзьями:
1   ...   14   15   16   17   18   19   20   21   ...   28


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©tieuluan.info 2019
được sử dụng cho việc quản lý

    Quê hương