Diferencia entre revisiones de «Programación en Vala/Conceptos básicos del lenguaje»

Contenido eliminado Contenido añadido
Sigmar (discusión | contribs.)
Sin resumen de edición
Sigmar (discusión | contribs.)
Sin resumen de edición
Línea 764:
 
=== Espacios de nombres ===
 
En programación orientada a objetos un [http://es.wikipedia.org/wiki/Espacio_de_nombres espacio de nombres] se utiliza para agrupar un conjunto de funcionalidad (clases, constantes, métodos, etc) que deben tener un nombre único. Así un espacio de nombres nos va a servir para desarrollar bibliotecas o módulos.
 
Para definir un espacio de nombres se utiliza la palabra reservada '''namespace''' seguida del identificador único que dará nombre al espacio de nombres. Así un ejemplo de espacio de nombres sería:
 
<source lang=csharp>
namespace EspacioNombres {
// Las clases, métodos, constantes que pertenecen al espacio de nombres
}
</source>
 
Todo lo que se defina dentro de los corchetes pertenecerá la espacio de nombres. Todo aquello definido fuera del espacio de nombres debe usar nombres cualificados ('''EspacioNombres.clase''' para definir un objeto de una clase por ejemplo), o por otra parte si se encuentra dentro de un archivo que contenga la línea con '''using EspacioNombres;''' podrá usar todos los identificadores dentro de ese espacio de nombres sin necesidad de anteponer el nombre del espacio de nombres delante de aquello a lo que quiera acceder. Por ejemplo:
 
'''Código con using'''
<source lang=csharp>
 
// Usamos el espacio de nombres GLib
 
using GLib;
 
o = Object;
 
</source>
 
'''Código sin using'''
<source lang=csharp>
 
o = GLib.Object;
 
</source>
 
Hay una ocasión en la cual es inevitable el uso de los nombres cualificados (independientemente de los espacios de nombres que estemos usando), y es cuando se produce una ambigüedad, es decir, existen dos identificados iguales en distintos espacios de nombres que estamos usando. Por ejemplo existen dos clases '''Object''' definidas una en el espacio de nombres '''GLib''' y otra en '''Gtk''', así si hemos incluido ambos y queremos asegurarnos que usamos una clase y no otra debemos hacerlo mediante los identificadores cualificados; es decir, '''GLib.Object''' o bien '''Gtk.Object''' dependiendo del identificador al que queramos acceder.
 
En todos los programas escritos en Vala el espacio de nombres '''GLib''' se importa por defecto por lo que tenemos que tener en cuenta los identificadores que existen dentro de este espacio de nombres por si surgen casos de ambigüedad como el anteriormente descrito.
 
Todo aquello que no se define dentro de algún espacio de nombres concreto, se supone que está definido en un espacio de nombres genérico. Para acceder a este espacio de nombres global se usa el prefijo '''global::identificador'''.
 
Los espacios de nombres pueden estar anidados, por lo que nos podremos encontrar cosas como '''EspacioNombres1.EspacioNombres1A.identificador'''.
 
Por último decir que la nomenclatura de los espacios de nombres sigue el estándar CamelCase y es muy conveniente que los desarrolladores sigan la norma para conseguir uniformidad en el código desarrollado por toda la comunidad.
 
=== Estructuras ===