Download 5.1. INTRODUCCIÓN Como se ha estudiado en módulos anteriores

Document related concepts
no text concepts found
Transcript
5.1. INTRODUCCIÓN
Como se ha estudiado en módulos anteriores Java es un lenguaje orientado a objetos. Como
programadores, esto significa que se centra en los datos de la aplicación y en los métodos que
los manipulan, más que hablar estrictamente en términos de procedimientos.
Además, al contrario que C++, Java fue diseñado, desde el principio como un lenguaje
orientado a objetos; de ahí que se hable de un lenguaje orientado a objetos puro. Las clases
son la base de Java y todo el código Java necesariamente está adscrito a una clase: no es
posible escribir código fuera de los límites de una clase.
Desde un punto de vista simplista, una clase es un conjunto de valores (atributos) junto con
las funciones y procedimientos que operan sobre los mismos (métodos), todo ello tratado
como una entidad. Y, como decimos, estas clases constituyen los bloques principales en los
cuales se encuentra contenido el código. Un objeto es la realización de una clase; un
elemento más del programa cuyas propiedades y comportamiento vienen definidos desde la
clase a la que se encuentra vinculado.
Una clase viene a ser a un objeto en Java lo que un datasheet a un
componente electrónico:
Define sus características --- por medio de atributos
Establece su comportamiento/funcionamiento --- mediante los
métodos métodos
Cuando se escribe un programa directamente ejecutable en Java, lo que se suele conocer bajo
el nombre de aplicación standalone, la clase en la que está contenido ese programa, debe
tener un método que se llame main(), y que, como en C/C++, será el método que se ejecute
automáticamente al ejecutar el programa.
Las características propias de este método serán objeto de estudio a lo largo del módulo 6 y
han sido estudiadas en capítulos anteriores ya que todos los ejemplos de este curso se basan
en este tipo de aplicaciones. Y, como decimos, la clase que contenga este método main será la
clase principal de entre el conjunto de clases necesarias para el desarrollo de una aplicación
Java.
Aunque se pueda definir más de una clase en el mismo fichero, para aplicaciones sencillas se
recomienda que sólo se defina una, y en ese caso, el nombre del fichero fuente deberá
coincidir con el nombre de la clase definida en él. Los ficheros fuente en Java tienen extensión
.java.
Recapitulando:
El elemento fundamental de una aplicación ejecutable en java es la clase
principal, clase que:
1) deberá contener necesariamente un método main
2) y cuyo nombre deberá coincidir con el del fichero fuente de
extensión .java
Pero, mejor, vamos a abordar el problema por partes: Ante todo ¿qué es una clase?¿Y un
objeto?¿Qué relación existe entre clases y objetos?
Vamos a tratar de dar respuesta a estas preguntas a través de ejemplos de clases y objetos e
introduciendo el concepto de herencia que será objeto de estudio en módulos posteriores.
5.2. ENTENDIENDO LOS CONCEPTOS DE CLASE Y OBJETOS
Un programa orientado a objetos se compone sólo de objetos. Formalmente, un objeto es una
encapsulación genérica de datos y de los procedimientos para manipularlos.
9
Un objeto tiene unos datos (atributos), que definen su estado, y una forma de
operar con ellos (métodos), que definen su comportamiento.
Una clase se puede considerar como una plantilla para crear objetos de esa clase.
9
Una clase describe los métodos y atributos que definen las características comunes a
todos los objetos de esa clase.
Una clase es un tipo de objeto definido por el usuario. Un objeto es la concreción de una clase
(instancia).
Pero, empecemos mejor a poner ejemplos:
i)
La clase bicicleta permite reunir las características generales comunes a la generalidad de
las bicicletas así como las distintas acciones que estás pueden realizar:
a. Podemos considerar atributos de las bicicletas tales como el número de piñones
y platos, el material a partir del que se ha fabricado el cuadro, el tamaño de este
cuadro, el tipo de suspensión que emplea, etc.
b. Podemos considerar métodos o acciones para dar pedales hacia delante, dar
pedales hacia atrás, frenar ambas ruedas, frenar rueda delantera, frenar rueda
trasera, cambiar de plato, cambiar de piñon, etc.
Las características generales comunes al conjunto de las bicicletas deberán recogerse en la
clase de este nombre; las características específicas a un cierto tipo de bicicletas podrán
recogerse en una clase derivada o subclase de la clase bicicleta como por ejemplo bicicleta de
montaña o bicicleta de paseo.
9
Las clases hablan de la generalidad, y son por tanto inmanejables, son intangibles.
class Bicicleta
{
String MaterialCuadro;
int NumPiñones, NumPlatos;
float TamañoCuadro;
public void FrenarAmbasRuedas()
{
System.out.println("Freno las ruedas delantera y
trasera");
}
// … Muchos más métodos
}
Si queremos trabajar con bicicletas ‘reales’, tangibles, deberemos crear objetos modelados a
partir de estas características y comportamientos genéricos.
Un objeto perteneciente a la clase bicicleta pasa a ser una bicicleta concreta: MiBicicleta, por
ejemplo, que contará con 6 piñones, 3 platos, cuadro de aluminio, y cuadro talla 54.
ii) La clase polígono permite recoger las características comunes de este tipo de figuras
geométricas y el tipo de operaciones que se pueden realizar sobre ellos:
a. Podemos considerar características comunes que comunes a todos ellos tales
como el número lados.
b. Podemos considerar métodos o acciones para calcular su área y perímetro por
ejemplo.
Las características específicas a un cierto tipo de polígono como los triángulos deberán
recogerse en una clase derivada o subclase de la clase polígono, la clase triángulo, que a su
vez podrá tener subclases como por ejemplo triánguloRectángulo o triánguloIsósceles.
class Polígono
{
int NumLados;
public float Area ()
{
System.out.println("Con las operaciones oportunas
calcularé el área del objeto triángulo");
}
public float Perímetro ()
{
System.out.println("Con las operaciones oportunas
calcularé el área del objeto triángulo");
}
// … Muchos más métodos
}
5.2.1. ATRIBUTOS
Los atributos identifican por tanto las propiedades de un objeto, es decir, sus datos. Al definir
un objeto, se deberá indicar el nombre y tipo de todos sus atributos. Por ejemplo, para la clase
Coche: velocidadMaxima de tipo entero, consumo de tipo real, matrícula de tipo texto y
combustible de tipo String.
En ejecución, en cada instancia de la clase, cada objeto, se pueden usar los atributos de
instancia (atributos).
9
Todas las instancias de una misma clase tendrán los mismos atributos (nombre y
tipo), pero su espacio y valores serán independientes.
Hay otro tipo de atributo, los atributos de clase, que son los atributos que sólo existen una vez
para cada clase (p. ej. numDeCoches).
Por tanto diferenciaremos:
Atributos de instancia: cada instancia creada tiene sus propios valores y
almacenamiento en memoria.
Atributos de clase: Se crea un atributo para toda la clase y todos los objetos
acceden a ese atributo, se comparte. Estos atributos se identifican al llevar
antepuesto el modificador static.
5.2.2. METODOS
El comportamiento viene determinado por funciones o métodos, que indican qué puede
hacer una clase, cómo se cambia de estado, cómo se relaciona con otras. Por ejemplo, para la
clase Coche: Arrancar, PararMotor, Acelerar, Decelerar, Girar, Frenar, CambiarMarcha,
Los métodos son funciones definidas en la clase, que operan sobre instancias de esa clase.
Además, también hay métodos de instancia y métodos de clase.
Métodos de instancia:
Método asociado a una instancia en particular
Cuando se llama a un método de instancia, éste tiene acceso a los datos
contenidos
en la instancia a la que está asociada
9 SINTAXIS DE LA LLAMADA:
<objeto>.<nombre_metodo>(arg1, arg2,...,argN)
9
9
Métodos de clase:
Se asocian a toda la clase, no a una instancia particular
Tienen un ámbito más amplio que los métodos de instancia, manejan información
significativa para toda la clase
9 Se declaran como static
9 Los métodos de clase no pueden sobreescribirse
9 SINTAXIS DE LA LLAMADA:
<nombre_clase>.<nombre_metodo>(arg1, arg2,...,argN)
9
9
En programación orientada a objetos se suele hablar de mensaje. Cuando alguien llama al
método X de un objeto, se dice que le está pasando el mensaje X. No sólo el programador
llama a los métodos, los métodos pueden enviarse mensajes entre sí y también el sistema
puede ejecutar algunos métodos, por ejemplo, la gestión de ratón o teclado.
Resumiendo lo estudiado hasta ahora, en la ejecución de un programa orientado a objetos se
realizarán fundamentalmente tres cosas:
1. Crear los objetos necesarios
2. Los mensajes enviados a unos y otros objetos darán lugar a que se procese
internamente la información.
3. Cuando los objetos no son necesarios, serán borrados, liberándose la memoria
ocupada por los mismos.
El trabajo con métodos es el tema fundamental del capítulo 6 por lo que en este se abordarán
únicamente en la medida en la que su uso resulte imprescindible para la comprensión del uso
de clases y objetos.