Chủ đề: Xây dựng Calculator bằng C#
-
05-02-2008, 04:41 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Xây dựng Calculator bằng C#
Tớ đang mới tập tành lập trình nên có một số kiến thức vụn góp nhặt được muốn chia sẻ và cùng được mọi người thảo luận.
Bài tập: Xây dựng một bộ Calculator đơn giản gồm các phép tính Cộng Trừ Nhân Chia với 2 toán hạng trên mô hình Hướng Đối Tượng.
Theo sự hướng dẫn của đồng chí Nguyễn Hùng Cường và ví dụ mẫu của hắn nên có code thế này (tuy nhiên, cũng chả biết sao, trông giống code của đồng chí Cường lắm, đặc biệt cái đoạn CreateObject() không biết xử lý sao đành làm thế) ...
Ý tưởng xây dựng cơ bản
1. Lớp cơ bản:
a. Equation: cơ bản cấu trúc về các phép tính thực hiện như cộng, trừ, nhân chia...sau này có thể được mở rộng ra với các phép tính khác nếu có thể như: sin, cos ,....ý tưởng chung là vậy
b. Statement: là lớp thực hiện tính toán biểu thức toán 2 hạng tử.
2. Lớp kế thừa:
a. Addition: kế thừa từ Equation với phép tính cộng
b. Subtraction: kế thừa từ Equation với phép tính trừ
c. Multiply: kế thừa từ Equation với phép tính nhân
d. Division: kế thừa từ Equation với phép tính chia.
<font color="Magenta">Mô hình Diagram xây dựng trên cơ sở ý tưởng
</font>View more random threads:
- [Tìm kiếm - hiển thị dữ liệu datagridview-addcolummns]
- Hướng dẫn làm chương trình đố vui nho nhỏ
- Code đổi số thành chữ trong C#
- Video hướng dẫn xây dựng website bán hàng bằng ASP.NET
- tính tổng
- Windowsform | Dòng chữ chạy (không thay đổi location)
- Hướng dẫn sử dụng Class Math trong C#
- [Tutorial Clip] How to use WCF Service - ASP.NET C sharp SQL Server - VS 2012
- Hướng dẫn lấy địa chỉ IP và các thông tin liên quan
- Hướng dẫn tô màu header cho ListView
-
05-02-2008, 04:45 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tên cơ sở đã có ta viết code triển khai mô hình đã có
1. Class Equation
Mã nguồn PHP:class Equation { private double _param1; private double _param2; protected Equation() { _param1 = _param2 = 0; } protected Equation(double param1, double param2) { _param1 = param1; _param2 = param2; } protected double Param1 { get { return _param1; } set { _param1 = value; } } protected double Param2 { get { return _param2; } set { _param2 = value; } } public virtual double Calculate() { return 0; } public virtual Equation CreateObject() { return new Equation(this.Param1, this.Param2); } }
a. Addition:
Mã nguồn PHP:class Addition : Equation { public Addition() : base() { } public Addition(double param1, double param2) : base(param1, param2) { } public override double Calculate() { return (this.Param1 + this.Param2); } public override Equation CreateObject() { return new Addition(this.Param1,this.Param2); } }
Mã nguồn PHP:class Subtraction : Equation { public Subtraction() : base() { } public Subtraction(double param1, double param2) : base(param1, param2) { } public override double Calculate() { return (this.Param1 - this.Param2); } public override Equation CreateObject() { return new Subtraction(this.Param1,this.Param2); } }
Mã nguồn PHP:class Multiply : Equation { public Multiply() : base() { } public Multiply(double param1, double param2) : base(param1, param2) { } public override double Calculate() { return (this.Param1 * this.Param2); } public override Equation CreateObject() { return new Multiply(this.Param1,this.Param2); } }
Mã nguồn PHP:class Division : Equation { public Division() : base() { } public Division(double param1, double param2) : base(param1, param2) { } public override double Calculate() { if (this.Param2 == 0) { throw new DivideByZeroException("Cannot Divide By Zero !"); } else { return (this.Param1 / this.Param2); } } public override Equation CreateObject() { return new Division(this.Param1,this.Param2); } }
Mã nguồn PHP:class Statement { private Equation _equation; public Statement() { } public Statement(Equation equation) { _equation = equation.CreateObject(); } public double Calculate(Equation equation) { _equation = equation.CreateObject(); return _equation.Calculate(); } }
-
05-02-2008, 04:48 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Một vài điểm ghi chú của mình với code trên nhé :
1. Mình không sử dụng abstract vì chỉ có một số method cần thiết và override được còn lại không cần nên dùng virtual cho phương thức có thể viết đè lên được (override).
2. Constructor sử dụng base của lớp trên cho tiện ^^!
3. Có thể có nhiều điểm không hay, tuy nhiên rất muốn được mọi người tham khảo đưa ra ý kiến cùng thảo luận !
4. Bài này tuy đơn giản nhưng nếu làm phức tạp với OOP với người bắt đầu lập trình như tớ, sẽ chắc chắn là một bài toán hay [IMG]images/smilies/online.gif[/IMG]
-
23-03-2010, 06:47 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Pro này không làm admin bên HCE nữa hay sao, chuyển quan nghiên cứu c# à?
-
30-11-2010, 11:06 AM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bạn thử lấy 40tỷ (double) / 0.087(double) thử đi.
Nếu dùng lớp cơ bản của .Net sẽ bị lỗi từa lưa hết.
-
26-03-2011, 07:12 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
theo mình nghĩ bài này mún hoàn thiện thì cần định nghĩa thêm lớp BigNumber
Pallet nhựa Long An đã trở thành một trong những lựa chọn phổ biến cho nhu cầu vận chuyển và lưu trữ hàng hóa trong nhiều ngành công nghiệp. Với đặc tính nhẹ nhàng, chắc chắn và dễ vận chuyển, các...
Thanh lý pallet nhựa Long An giá rẻ