Professional Documents
Culture Documents
1
en programación con objetos y clases de la vida diaria porque esa correspondencia exacta
no existe y te llevará a confusión. Al escribir un programa en un lenguaje orientado a
objetos tratamos de modelar un problema del mundo real pensando en objetos que forman
parte del problema y que se relacionan entre sí. Daremos ahora una primera definición de
objeto y clase, que tendremos que ir matizando conforme avancemos en el curso.
Objeto: entidad existente en la memoria del ordenador que tiene unas propiedades
(atributos o datos sobre sí mismo almacenados por el objeto) y unas operaciones
disponibles específicas (métodos).
Estas definiciones son quizás poco clarificadoras. Con un ejemplo vamos a entenderlo
mejor. En primer lugar, pensemos en un programa que trata de gestionar datos sobre los
vehículos de transporte público de una ciudad.
Una vez teniendo en claro que es un objeto y que es una clase procederemos a explicar
los Tipos de Datos.
2
TIPOS ENTEROS
Los tipos de datos enteros se dividen en cuatro grupos de acuerdo al rango de valores que
pueden almacenar es así que tenemos:
byte: byte es el valor más pequeño en el que se puede almacenar una variable de
tipo entero, el rango que almacena va desde -128 hasta 127, es decir si deseamos
almacenar un valor como 200 el compilador dará error, el valor por defecto si no
se inicializa es de 0.
short: También denominado entero corto, almacena un valor entero, pero en un
rango superior a byte, el rango de valores que puede almacenar va desde -32768
hasta 32767, su valor de inicialización por defecto es 0.
int: int es el valor más utilizado por los programadores para almacenar valores
enteros su rango va desde -2147486648 hasta 2147486647, su valor de
inicialización por defecto es 0.
long: long es utilizado cuando queremos almacenar valores enteros
extremadamente grandes, su rango va desde -9223372036854775808 hasta
9223372036854775807, su valor de inicialización por defecto es 0.
TIPOS REAL
Los tipos de datos real son aquellos que no se pueden representarse como un entero,
aquellos cálculos en los cuales necesitamos números como por ejemplo 0.50, 2.75, es
necesario usar ya sea float o double. En este tipo de datos encontramos:
float: Este tipo es utilizado cuando necesitamos almacenar valores decimales,
float permite almacenar valores decimales, su valor de inicialización por defecto
es 0.0F. En una declaración de variable la F, no es imprescindible solo indica al
programador que esa variable almacena tipos de datos float.
double: Permite almacenar valores decimales pero con doble precisión, su valor
de inicialización por defecto es 0.0D. En una declaración de variable la D, no es
imprescindible solo indica al programador que esa variable almacena tipos de
datos double.
TIPOS BOOLEANOS
Los tipos de datos boolean representan valores true (verdadero) false (falso) y son útiles
en nuestros programas, por defecto se inicializan con false.
TIPOS CHAR
Almacena caracteres por ejemplo ‘A’, su valor por defecto es 0, bueno y porque si es
caracter almacena un valor numérico, esto se da porque en realidad almacena su carácter
unicode, ejemplo cuando almacenamos ‘A’ lo que en realidad se almacena es su caracter
ASCII que es 65.
3
TIPOS DE DATOS OBJETO O REFERENCIA
En este grupo está la clase String que almacena datos alfanuméricos (texto, números,
caracteres especiales), también están los objetos creados por el usuario, Clases envoltorio
(Wrapper), arreglos y clases que están en el API de Java.
4
POLIMORFISMO EN JAVA.
El Polimorfismo es uno de los 4 pilares de la programación orientada a objetos (POO)
junto con la Abstracción, Encapsulación (de la cual hablaremos más
adelante) y Herencia. Para entender que es el polimorfismo es muy importante que
tengas bastante claro el concepto de la Herencia.
Para empezar con esta entrada, se ha de decir que el término "Polimorfismo" es una
palabra de origen griego que significa "muchas formas". Este término se utiliza en la
POO para "referirse a la propiedad por la que es posible enviar mensajes
sintácticamente iguales a objetos de tipos distintos". Como esta definición quizás sea
algo difícil de entender, vamos a explicarla con el ejemplo que pusimos en la entrada de
la herencia en la que queríamos simular el comportamiento que tendrían los diferentes
integrantes de la selección española de fútbol; tanto los Futbolistas como el cuerpo técnico
(Entrenadores, Masajistas, etc…). Para este ejemplo nos vamos a basar en el siguiente
diagrama de clases:
CLASIFICACIÓN.
Se puede clasificar el polimorfismo en dos grandes clases:
Polimorfismo dinámico (o polimorfismo paramétrico) es aquél en el que el
código no incluye ningún tipo de especificación sobre el tipo de datos sobre el que
se trabaja. Así, puede ser utilizado a todo tipo de datos compatible.
Polimorfismo estático (o polimorfismo ad hoc) es aquél en el que los tipos a los
que se aplica el polimorfismo deben ser explícitos y declarados uno por uno antes
de poder ser utilizados.
5
El polimorfismo dinámico unido a la herencia es lo que en ocasiones se conoce
como programación genérica.
También se clasifica en herencia por redefinición de métodos abstractos y por método
sobrecargado. El segundo hace referencia al mismo método con diferentes parámetros.
Otra clasificación agrupa los polimorfismo en dos tipos: Ad-Hoc que incluye a su vez
sobrecarga de operadores y coerción, Universal (inclusión o controlado por la herencia,
paramétrico o genericidad).
Como hemos visto el polimorfismo es un concepto un poco más avanzado que la herencia
y puede ser muy util a la hora de jerarquizar y querer dar un patrón de comportamiento
común a una serie de objetos que heredan de la misma clase. En esta entrada no hemos
visto todo lo referente al polimorfismo ya que nos quedaría ver un concepto un poco más
avanzado en Java (y en otros lenguajes también) como son las "Interface" (clases
abstractas puras) de las cuales hablaremos en otra entrada para terminar de ver lo que es
el polimorfismo.
ENCAPSULAMIENTO EN JAVA.
Imaginemos que se crea una clase, una docena de programadores tienen acceso a dicha
clase y la utilizan a discreción, posteriormente dicha clase comienza a comportarse de
una manera inesperada debido a que los valores que algunas variables han tomado no
fueron anticipados y todo comienza a desmoronarse. Para corregir el problema se crea
una versión más nueva de dicha clase y listo.
Bueno, a esto le llamamos flexibilidad y capacidad de mantenimiento, ambas son
características y beneficios de la Programación Orientada a Objetos (POO) pero para que
una clase pueda cumplir dichas funciones los programadores debemos de hacer algo.
Imaginemos que creamos una clase con variables de instancia públicas a las cuales
podemos acceder sin problemas desde fuera de la misma clase...
6
Analizando el código anterior podemos darnos cuenta de que las variables enteras tipo y
clase son públicas y pueden ser accedidas directamente a través de una instancia de la
clase MiClase, esto compila sin ningún problema, digamos que es 'legal', sin embargo,
¿qué pasa si ingresamos un valor que no se supone debe de tener una variable (en este
caso el -5 que le asignamos a tipo)?, simplemente no hay nada que nos detenga para
hacerlo. La única manera de proteger el código es escribiendo un método que nos permita
regular los valores que cada variable puede tener y escondiendo las variables para que no
se pueda acceder a ellas de manera directa, esto es el principio básico de
encapsulamiento.
7
Si nos fijamos un poquito, en el método setTipo() no existen validaciones para prevenir
que un valor no válido sea asignado a la variable, sin embargo, el proveer de un método
de este tipo desde el diseño inicial de la aplicación nos permite posteriormente modificar
el comportamiento de la misma sin afectar los métodos utilizados, tal vez en un futuro se
desee que dicha variable solamente pueda tener uno entre un rango de valores y se podrán
aplicar posteriormente los cambios sin que haya repercusiones negativas.
Ahora que tenemos una pequeña “BASE” sobre que es un objeto, que tipo de datos
maneja el lenguaje de programación en JAVA, que es el polimorfismo y la encapsulación
podremos ya poder programar en el lenguaje de programación más conocido que es
JAVA.
-GRACIAS-