Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Xây dựng Calculator bằng C#

  1. #1
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Thumbs down 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.

    Mô hình Diagram xây dựng trên cơ sở ý tưởng


    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    None!

  2. #2
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Thumbs down [2]

    Tên cơ sở đã có ta viết code triển khai mô hình đã có

    1. Class Equation
    PHP Code:
        class Equation
        
    {
            private 
    double _param1;
            private 
    double _param2;

            protected 
    Equation()
            {
                
    _param1 _param2 0;
            }
            protected 
    Equation(double param1double 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.Param1this.Param2);
            }
        } 
    2. Các class kế thừa từ Equation

    a. Addition:

    PHP Code:
        class Addition Equation
        
    {
            public 
    Addition()
                : 
    base()
            {
            }
            public 
    Addition(double param1double param2
                : 
    base(param1param2)
            {
            }

            public 
    override double Calculate()
            {
                return (
    this.Param1 this.Param2);
            }
            public 
    override Equation CreateObject()
            {
                return new 
    Addition(this.Param1,this.Param2);
            }
        } 
    b. Subtraction:

    PHP Code:
        class Subtraction Equation
        
    {
            public 
    Subtraction()
                : 
    base()
            {
            }
            public 
    Subtraction(double param1double param2)
                : 
    base(param1param2)
            {
            }

            public 
    override double Calculate()
            {
                return (
    this.Param1 this.Param2);
            }   
            public 
    override Equation CreateObject()
            {
                return new 
    Subtraction(this.Param1,this.Param2);
            }
        } 
    c. Multiply:

    PHP Code:
        class Multiply Equation
        
    {
            public 
    Multiply()
                : 
    base()
            {
            }
            public 
    Multiply(double param1double param2)
                : 
    base(param1param2)
            {
            }

            public 
    override double Calculate()
            {
                return (
    this.Param1 this.Param2);
            }
            public 
    override Equation CreateObject()
            {
                return new 
    Multiply(this.Param1,this.Param2);
            }
        } 
    d. Division:

    PHP Code:
        class Division Equation
        
    {
            public 
    Division()
                : 
    base()
            {
            }
            public 
    Division(double param1double param2)
                : 
    base(param1param2)
            {
            }

            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:

    PHP Code:
        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.
    None!

  3. #3
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Thumbs down [3]

    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
    None!

  4. #4
    Ngày gia nhập
    04 2008
    Nơi ở
    Hue city
    Bài viết
    40

    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 gia nhập
    04 2008
    Bài viết
    37

    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 gia nhập
    06 2010
    Nơi ở
    TP. Hồ Chí Minh
    Bài viết
    90

    Mặc định Xây dựng Calculator bằng C#

    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
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    TIN HỌC LÀ PHẢI TIN MỚI HỌC

Các đề tài tương tự

  1. Lập trình Socket java Calculator
    Gửi bởi hackerbaria trong diễn đàn Nhập môn lập trình Java
    Trả lời: 1
    Bài viết cuối: 04-12-2012, 10:27 AM
  2. Tính giá trị biểu thức trong calculator?
    Gửi bởi kenzyler trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 07-09-2012, 10:42 AM
  3. Xử Lý Số Âm Trong Biểu Thức(Calculator)
    Gửi bởi kenzyler trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 14-06-2011, 09:04 AM
  4. Calculator viết bằng MFC của vc++
    Gửi bởi langtudatinh_2509 trong diễn đàn Dự án & Source code VC++
    Trả lời: 5
    Bài viết cuối: 13-10-2010, 09:31 PM
  5. Mã nguồn C | Chương trình Calculator viết bằng C
    Gửi bởi Romantic123 trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 22-11-2008, 01:59 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn