martes, 26 de junio de 2012

Variables, Clases y Métodos


Las variables son como cajitas donde metemos datos. Sin embargo, hay diferentes tipos de cajitas, en algunas caben números, en otras letras, en otras objetos... Veamos algunas de las más usadas y como se inicializan.

numero : int  // para números enteros pos y negativos / uint para solo positivos
decimal : float // para numeros decimales, para grandes números double.
cadena : string // para cadenas de caracteres y usaremos " "
caracter: char // un solo caracter y usaremos ' ' . uchar 0-255 caracteres?
u_caracter: unichar // Es un offset o carácter unicode
boleano : bool // para guardar datos lógicos --> true, false

Se pueden declarar también así.


var i=0  // se sobreentenderá que es int
var o= "hola" // o será string
var 
      a ="hola"
      b= "adios"


Declarar variables como objetos.

a: Gtk.TextView  // la variable a contendrá el tipo de objetos Textview.


¿Qué son los objetos?

Los objetos y clases se pueden explicar a través del típico ejemplo del coche. Un coche es una clase. Este coche tiene unas características y unas funcionalidades. Ser de color rojo es una característica que además es variable puesto que puedo cambiar el color. Y también tiene unas funciones o metodos, por ejemplo la función de arranque, frenado, embragado, abertura de puertas....

Una ventana que se abre en nuestra pantalla es como un coche, es un objeto que tiene sus propias caracteristicas (color, titulo, ) y también tiene unos (botones) que cumplen ciertas funciones. A todo esto también podemos añadir, que las ventanas de nuestra pantalla producen eventos.

 ¿Que es un evento? Un evento es cuando algo sucede, cuando el ratón hace click en un botón, cuando la ventana se abre, cuando la ventana se cierra, cuando el usuario ha introducido una palabra en un cuadro de texto, etc.

Resumiendo (sin eventos) y traduciendo a lengua Genie de un modo sencillo:

[indent =4]

init
    var mi_coche = new Coche ()                  // creamos nuestro coche
    print mi_coche.color                         // vemos su color
    print "velocidad = %i " ,mi_coche.velocidad  // observamos su velocidad
    mi_coche.arrancar()                          // Arrancamos el coche
    print "velocidad = %i " ,mi_coche.velocidad  // La velocidad ha cambiado.

class Coche : Object

    // Propiedades variables de los coches

    prop color: string ="negro"
    prop velocidad: int =0    


    // Este es método, es decir una funcionalidad del coche
 
    def arrancar() 
        velocidad=10
        print "coche en funcionamiento"


Podríamos crear una clase donde el coche nos podría responder si esta en movimiento o no.





[indent =4]

init
    var mi_coche = new Coche ()       // creamos mi coche
    print "%s",mi_coche.estado        // la funcion estado devuelve una cadena
    mi_coche.arrancar()               // Arrancamos el coche
    
print "%s",mi_coche.estado        // Esto devuelve una cadena que imprimimos

class Coche : Object

    // Propiedades variables de los coches

    prop color: string ="negro"
    prop velocidad: int =0    


    // Esta es una funcionalidad del coche
 
    def arrancar() 
        velocidad=10
        print "coche en funcionamiento"

    // Esta es un método de devuelve una cadena de caracteres
    // Es decir mi_coche.estado se convierte literalmente en un String
    // que es devuelto con return st


    def estado () :string
        var st= ""
        if velocidad>0
           st= "Andando"
        else
           st= "Parado"
        return st


Todavía no hemos hecho ningún evento. Este tema lo realizaremos con la librería GTK que nos servirá para crear ventanas en nuestro escritorio Gnome o Windows.

Por otro lado hemos visto como manejar una estructura if y else. Que significa que si se cumple algo realice algo y que en caso contrario realice otra cosa.

Que conste que mientras escribo yo también aprendo. Todo esto lo voy probando y cuando veo que el ensayo no da error lo cuelgo aquí para compartirlo. Aunque yo sepa programar estoy aprendiendo la sintaxis de este lenguaje. Sin embargo pondré las explicaciones para que cualquier iniciado pueda entender lo que hago.





No hay comentarios:

Publicar un comentario