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.