User Tools

Site Tools


5.7 Interfaces

An interface in Gambas is an interface between a class and the interpreter. Interfaces are currently only available for native classes - classes that are not written in gambas. In addition, only Gambas developers can use interfaces and very few classes implement interfaces.

The description of the effects when using interfaces should be shown with the example of the class Matrix, because the class Matrix (gb. gsl) internally uses both the _convert interface and the _operator interface.

Example 1:

Private Sub CreateAndShowMatrix()
  mMatrix = New Matrix(Columns.Value, Rows.Value, True) ' Columns, lines
  mMatrix = [[1, 1, 1, 7 + 2i, 8], [2, 2, 2, 4, 5], [1, 0, 3, 9, 5], [-1, -2i, -3, 4, 5 + 1i]]     ***
' Matrix-Display items in the TableView
End ' CreateMatrix()

The _convert interface allows you to perform automatic data type conversions. A class that implements the _convert interface accepts certain data types as convertible and provides a method for converting suitable data. In this case, the array of arrays (in the background) is converted to a matrix and the assignment (3*) succeeds. The _operator interface specifies the behavior of objects when operators are applied to them. Whenever two objects (or an object and a value of native data type) are linked to an operator, the _operator interface is in play.

The Gambas user is only interested in this fact, that you can write matrix = [[z1, z2],[z3, z4]] and the interpreter recognizes this as matrix in certain assignment contexts.

The class Matrix (gb. gsl) also partially implements the _operator interface, which controls the applicability of certain operators to matrices. This is sure to succeed

  • multiply a matrix with a scalar or
  • to calculate a matrix-matrix-product - with a matrix as result.

Example 2:

Public Sub btnMatrixMatrixProdukt_Click()
  Dim mMatrix As New Matrix(3, 3, False)  ' Real coefficients only
  Dim mResult As Matrix
  mMatrix = [[1, 5, 6], [4, -3.3, -9], [7, 2, 8.8]]
  Print mMatrix.ToString(True) ' True → Local language setting active
  mMatrix = 2 * mMatrix ' Skalar-Matrix-Produkt
  Print mMatrix.ToString(True)
  mResult = mMatrix * mMatrix.Trans() ' Matrix-Matrix-Product
  Print mResult.ToString(True)

The display in the console of the Gambas IDE shows these results:

[[1 5 6][4 -3,3 -9][7 2 8,8]]
[[2 10 12][8 -6,6 -18][14 4 17,6]]
[[248 -266 279,2][-266 431,56 -231,2][279,2 -231,2 521,76]]

There are two other specialized interfaces - Paint and PaintMatrix - that have something to do with drawing operations on selected classes.

The website uses a temporary session cookie. This technically necessary cookie is deleted when the browser is closed. You can find information on cookies in our privacy policy.
k5/k5.7/start.txt · Last modified: 30.01.2022 (external edit)

Page Tools