Download Programación Orientada a Objetos en Java

Document related concepts
no text concepts found
Transcript
ÁREA DE LENGUAJES Y SISTEMAS INFORMÁTICOS
DPTO. INFORMÁTICA E INGENIERÍA DE SISTEMAS
GRADO EN INGENIERÍA EN DISEÑO INDUSTRIAL Y
DESARROLLO DE PRODUCTO
ESC. UNIV. INGENIERÍA TÉCNICA INDUSTRIAL
UNIVERSIDAD DE ZARAGOZA
INFORMÁTICA 2009/2010
Parámetros en Java
En Java no se permite elegir el tipo de los parámetros. Todos los parámetros son por valor, lo
que supone lo siguiente:
• Si un parámetro es de un tipo de datos primitivo (enteros, reales, char o boolean), se
trata siempre de un parámetro de entrada.
• Si un parámetro es un objeto (de una clase), se trata siempre de un parámetro de
entrada/salida. No obstante, sólo se permite cambiar las propiedades del objeto; no el
objeto completo.
Herencia en Java
La creación de una clase por herencia a partir de otra ya existente, se especifica en Java del
siguiente modo:
// Clase inicial
class ClaseBase{
…
}
// Clase creada por herencia
class ClaseDerivada extends ClaseBase{
…
}
Ejemplo:
class Persona{
String nombre,apellidos;
Fecha fechaDeNacimiento; // Suponemos definida la clase Fecha
int CalculaEdad()
{
…
}
Ejemplo:
}
class Cosa{
int n;
}
class Profesor extends Persona{
int NIP; // Número de Identificación del Profesor
void ImparteClase(String asignatura)
{
…
}
…
void IntercambiaMAL(Cosa c1,Cosa c2)
{
// INCORRECTO: Se intenta cambiar los objetos completos
Cosa aux;
aux = new Cosa();
aux=c1; c1=c2; c2=aux;
}
void IntercambiaBIEN(Cosa c1,Cosa c2)
{
// CORRECTO: Se cambian las propiedades de los objetos
int aux;
aux=c1.n; c1.n=c2.n; c2.n=aux;
}
}
class Alumno extends Persona{
int NIA; // Número de Identificación del Alumno
void AsisteAClase(String asignatura)
{
…
}
}
…
Alumno a;
a=new Alumno();
a.nombre="Bill";
a.apellidos="Gates";
a.AsisteAClase("Informática");
Constructores en Java
Un constructor de una clase es un método especial que se ejecuta automáticamente cuando se
crea un objeto de esa clase. Es siempre un algoritmo no función, y no se incluye void en su
cabecera.
Una clase puede contener varios constructores, aunque obligatoriamente todos ellos deben tener
diferente cabecera.
El fichero que contiene el código fuente de una clase en Java tiene extensión .java. El lenguaje
Java tiene la particularidad de que cuando se compila no se genera código ejecutable. Se crea un
fichero con extensión .class, que contiene lo que se denomina código intermedio, o Byte
Code.
Este código no es código máquina y por lo tanto no es directamente ejecutable por el
computador. Para poder ejecutar Byte Code desde fuera del entorno de programación, se necesita
una herramienta denominada Máquina Virtual Java (JVM). La máquina virtual Java permite
ejecutar el algoritmo principal de una clase compilada (un archivo .class).
Ejemplo:
class Cosa{
int n;
Cosa()
{
}
Algoritmo principal de una clase
// Constructor 1: Sin parámetros
Cosa(int m)
{
this.n=m
}
En Java, el algoritmo principal de una clase debe tener exactamente la siguiente cabecera:
// Constructor 2: Con un parámetro entero
public static void main(String [] args)
{
…
}
}
…
Cosa c1,c2;
c1=new Cosa();
c2=new Cosa(5);
// Se utiliza el Constructor 1
// Se utiliza el Constructor 2
Modificadores de acceso en Java
Se incluyen delante de la definición de una clase, una propiedad o un método para especificar el
ámbito de uso de lo que se está definiendo. En Java son los siguientes, de más a menos
restrictivo:
• private: El elemento sólo es accesible dentro de la clase en que se define.
• Acceso por defecto (sin incluir ningún modificador): El elemento es accesible desde cualquier
clase del paquete (proyecto) en que se define.
• protected: El elemento es accesible desde cualquier clase del paquete, y también desde
cualquier clase derivada (heredada) de la clase en que se define, aunque figure en otro
paquete.
• public: El elemento es accesible desde cualquier sitio.