Building a very basic calculator
Welcome to the world of OOP &mdash; hopefully there are a few things we can teach you. ;)

I'm going to show you an alternative implementation first, to help you see how OOP truly should be used, then I'll discuss your specific issues.



When building a calculator it's hard to effectively build something dynamic, you are always concerned about how things should relate (for example, how do we represent \$a+b+c\$, as \$(a + b) + c\$, as \$a + (b + c)\$, or some other way?), but it's often easiest if you consider each term and operation on it's own.

Let's take \$+\$, for example, we should have two terms: a left and a right. But what is a term?

A term can be any of the following:


A value (\$1\$, for example);
Another expression / operation (\$a + b\$, for example);


What do they have in common? They all have a Value property. So, in order to represent this we start with an interface:

Public Interface ITerm
    Property Value As Double
End Interface


Pretty simple, and we'll define a ConstantTerm:

Public Class ConstantTerm
    Implements ITerm

    Public Sub New(value As Double)
        Me.Value = value
    End Sub

    Public Property Value As Double Implements ITerm.Value
End Class


So far so good, we have a ConstantTerm which is just set to a value, so we can now build an AdditionTerm:

Public Class AdditionTerm
    Implements ITerm

    Public Sub New(left As ITerm, right As ITerm)
        Me.Value = left.Value + right.Value
    End Sub

    Public Property Value As Double Implements ITerm.Value
End Class


So now, to do our math, we just need to do:

Dim result As Double = _
    New AdditionTerm( _
        New ConstantTerm(CDbl(TextBox1.Text.Trim)), _
        New ConstantTerm(CDbl(TextBox2.Text.Trim))).Value


But even better: this sets us up for success later when we want to add a SubtractionTerm:

Public Class SubtractionTerm
    Implements ITerm

    Public Sub New(left As ITerm, right As ITerm)
        Me.Value = left.Value - right.Value
    End Sub

    Public Property Value As Double Implements ITerm.Value
End Class


And it also sets us up for parsing things later on down the road. (Since we don't care about values, we only care about terms, a parser just has to define a term as it goes and supply them as arguments to the next term.)



Regarding your specific code, there are a few things to take note of:


In .NET we pretty much always try to name classes, interfaces, enums, and properties PascalCase &mdash; instead of Cls_addition we would use ClsAddition;
When you set totalAddition.TermA and TermB, you should try to use a safer parsing system, via {NumericType}.TryParse:

Dim value As Integer = 0
If Integer.TryParse(TextBox1.Text.Trim(), value) Then
    'Parse was successful
Else
    'Show the user an error message, perhaps
End If

Always name things what they mean, and not what they are: TextBox1 is a bad name, it should be firstTermInput, etc.;
More recent versions of VB.NET support automatically-implemented properties, such as Property TermA As Integer, instead of manually specifying a Getter and Setter;




Overall, good start, and I hope you continue to learn and improve as you experiment and continue. :)