Vala Programming/Concepts/Objects

Object Oriented Programming

edit

The Vala OO System is very similar to, and is somewhat based on languages like C# and Java. Please note that unlike these languages, Vala does not force you to adopt and Object Oriented Paradigm, but it is highly recommended for maximum productivity; and because most third-party libraries and bindings use Object-Orientation, it will ultimately have to be adopted by you.

Classes

edit

Generally Classes in Vala are declared like this:

/*Simple Class Derived From GLib.Object*/
public class Sample : GLib.Object {
    
    /*Class Fields*/    
    bool my_field; 
    int my_int_field = 2;

    public Sample () {
        /* Constructor */
    }
    public ~Sample () {
        /* Destructor */
    }
    public void my_method () {
        /*Method Code*/
    }
    public int return_method () {
        /*Return Some Integer*/
        return my_int_field;
    }
    public void param_method (int param) {
        /*Use Arguments*/
    }
}
/*Intermediate Hacking...*/

Note that if you declare a base class, it is recommended to derive it from the GLib.Object, otherwise you will not be able to access some of its features.

Polymorphism

edit

Inheritance

edit

Inheritance in Vala is very similar to C#. Vala supports single inheritance only, i.e you cannot inherit an object from more than one base class. The general format is:

/*Inheriting From Other Classes*/
public class Base : GLib.Object {
    public int member;
    public Base (int carg) {
        /*Code Here*/
    }
}
public class Derived : Base {
    public Derived () {
        base (14); // Call base constructor
        /*Code Here*/
    }
}

Interfaces

edit

Construction

edit

Abstract Classes

edit

Properties

edit

Functions

edit

Overriding

edit

Delegates

edit

Signals

edit

Handlers

edit