martes, 27 de diciembre de 2011

2.- Iniciación a Android - Conceptos antes del "Hola Mundo"

- no title specified
2.- Iniciación a Android – Unos conceptos antes del "Hola Mundo"

   Ahora que tenemos preparado nuestro entorno para comenzar a programar en Java y en Android, y antes de realizar nuestro primer programa, voy a dar unas pequeñas nociones sobre algunos terminos con los que nos estaremos encontrando constantemente y que si no los tenemos claros nos van a dar unos quebraderos de cabeza, como pueden ser las clases, herencias, métodos, etc., aunque es posible que al verlo en el código nos hagamos mejor una idea de lo que estamos hablando.

Conceptos fundamentales de la programación orientada a objetos (OOP o POO)

Programación procedimental o estructurada.

   Los algoritmos se implementan como funciones o procedimientos y tienen unas determinadas reglas de ámbitos de acceso para las llamadas entre módulos.  En la programación estructurada, normalmente se tiende a organizar las funciones como un árbol, en el que hay un nodo raíz del que dependen las funciones y procedimientos de los que se compone el programa.  Normalmente, las partes que están más cerca del nodo raíz son más abstractas (generales) y cuanto más nos alejamos del nodo principal, estas partes se van especializando hasta llegar al nivel máximo de detalle, el cual se halla en las capas inferiores.
   En este tipo de programación la representación de los datos se determina por los algoritmos empleados y reflejan su estructura interna.  Los datos son pasivos, son zonas de memoria con valores que pueden estar organizados en forma de estructuras de datos.
   Estas metodologías de programación se suelen llamar programación estructurada, que aunque en su momento fué una gran mejora con respecto a la calidad del código con respecto a metodologías anteriores, seguía teniendo algunos problemas, como pueden ser la mantenibilidad del código y la dificultad de crear componentes de software, esto es módulos con entradas y salidas bien definidas y  con propósitos diversos.
   Las unidades básicas de un programa estructurado son las funciones o procedimientos, y los datos son zonas de memoria que serán modificadas por los algoritmos.  Sólo con las reglas de ámbitos de acceso que hay en estos lenguajes no se puede unir de forma lógica y coherente los datos y el código que los utilizará.

La programación orientada a objetos (POO o OOP)

   Las personas, cuando miramos a nuestro alrededor, vemos objetos, los cuales tienen un estado y un conjunto de acciones que se pueden ejercer en él, y la programación orientada a objetos intenta reflejar ésta característica.  Ya no hay funciones y estructuras separadas, las entidades mantienen juntos los datos y el código que los utiliza.  Estas entidades se denominan OBJETOS.
Un objeto está compuesto por variables, que contienen el estado actual del mismo y por métodos, que son funciones que permiten alterar los estados de las variables.  La única forma de acceder a las variables privadas del objeto es a través de los métodos que tiene asociados.  Esta forma de unir el código y los datos se llama encapsulación.  Con la encapsulación podemos modificar la forma en que un objeto implementa sus métodos sin afectar a los demás objetos, con lo cual hemos conseguido la modularidad, y podemos acceder a los servicios del objeto sin saber los detalles de su implementación (abstracción de datos).

Clases

Las clases son modelos que se utilizan para crear objetos de ese tipo.  A un modelo de una determinada clase se le llama instancia de esa clase.  El modelo describe el estado y el comportamiento que comparten todos los objetos de esa clase.  Las clases normalmente contienen variables y métodos.
Los métodos son fragmentos de código reutilizables.  Las variables se llaman también atributos o variables miembro o variables de instancia.
Las clases son contenedores de datos y de las operaciones que los manipulan.  Normalmente se denominan con nombres abstractos (generales), como Persona, Animal, etc,.  Se puede definir una clase a partir de otra, con lo que la nueva hereda parte de su funcionalidad, y además se le pueden añadir nuevos métodos.

Clases abstractas

   Las clases abstractas son clases que incluyen en su definición uno o más métodos abstractos (funciones virtuales en C++), estos son métodos que la clase acepta como propios, pero para los que no tiene implementación.  Esa implementación se debe hacer posteriormente en alguna clase heredada.  En JAVA, los interfaces, son tipos abstractos que pueden contener cabeceras de métodos y variables finales (constantes), pero no implementan los métodos o variables no finales.  Sirven para modelar conceptos.

Variables miembro

Son características de los objetos y contienen los datos relacionados con estos.  Normalmente son privadas, para ocultar los datos, y el acceso a las mismas se realiza a través de los métodos o propiedades.  También pueden ser públicas y no estar ocultas, e incluso permitir que se realizen cambios sin ser a través de los métodos, pero no es recomendable ya que puede producir estados indeterminados.

Métodos

   Son a las clases lo que las funciones a la programación estructurada.  Pueden acceder a las variables de la clase de forma implícita.

Propiedades

  Son un tipo especial de métodos utilizados para controlar el acceso a las variables privadas.

//Esta es la clase:
public class UnaClase extends Activity
{
        //Esta es una variable o atributo CONSTANTE (final)
        private final String LOGGLOBAL = "CorrectoIncorrecto";

        //Esta es una variable o atributo booleano (true o false)
        protected boolean prueba = false;

        //Esta es una variable tipo int (integer o entero)
        public int entero = 4096;

        //Esta es una variable tipo float (en coma flotante, con decimales)
        private float decimal = (float) 3.1416;

        //Éste es un método de la clase:
        public void onCreate(Bundle savedInstanceState)

                {
                //Esta es una variable del método.
                int entero2 = 4096;
                //Se accede de forma implícita a la variable de la clase:
                entero += entero2;
                // Llamada a un método de la clase Activity (de la clase
                // "Padre" o de la que hemos heredado con el extends)
                setContentView(R.layout.splash);
                {

        //Propiedad getdecimal: devuelve el valor de la variable privada.
        public float getdecimal()
                {
                return decimal;
                }

        //Propiedad setdecimal: establece el valos de la variable privada.
        public void setdecimal(float f)
                {
                decimal = f;
                }

}
//Aquí termina la clase
Ver. 1.1 - Rev. 18-1-2012

No hay comentarios:

Publicar un comentario