Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 6 của 6
  1. #1
    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>

  2. #2
    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); } }  
    2. Các class kế thừa từ Equation

    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); } }  
    b. Subtraction:

    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); } }  
    c. Multiply:

    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); } }  
    d. Division:

    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); } }  
    2. Class Statement:

    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(); } }  
    Vậy là bạn đã có được một bài về OOP đơn giản rồi.

  3. #3
    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]

  4. #4
    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# à?

  5. #5
    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.

  6. #6
    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

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •