Introducción a la Programación en Java



Documentos relacionados
La sintaxis básica para definir una clase es la que a continuación se muestra:

Tema 3. Programación orientada a objetos en Java (Parte 1)

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Forma Básica Clase Java

Tema 7: Polimorfismo. Índice

1.2. Es Java un lenguaje ideal para aprender a programar? 1.4. Cuáles son las versiones y distribuciones Java y cuál usar?

Examen Teórico Convocatoria de Junio de 2012

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores

Modulo 11. Clases y Objetos en Java

Herencia Java y Servicios Web I Master en Ingeniería Matemática

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

3.4 Clases y Objetos 05/04/2004. Conceptos Generales. Modificadores de la Clase. Estructura de una Clase. Variables Miembros

En este capitulo se estudiarán los conceptos relacionados a métodos, como lo son sobrecarga, métodos estáticos.

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Entiendo los métodos de Java equals y hashcode

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

POO: Clases y objetos

Clases abstractas e interfaces en Java

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Java en 2 horas. Rodrigo Santamaría

Java en 2 horas. Rodrigo Santamaría

Examen Teórico. Convocatoria de Febrero de 2015

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

JAVA 1. Introducción

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Clases y herencia. FJP Unidad 8. Diseño de clases

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Polimorfismo Java y Servicios Web I Master en Ingeniería Matemática

Estructura de datos y Programación

Tema 3b: Estructura General de un programa en Java

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Clases en Java. Declaración

EJEMPLO DE CÓDIGO JAVA BÁSICO. CREAR CLASES CON CAMPOS, CONSTRUCTOR Y MÉTODOS. LA PALABRA CLAVE THIS (CU00652B)

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

! Fundamentos de la POO. ! Comportamiento y estado. ! Clases y objetos en Java

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

Programación orientada a objetos I

12. Tipos de atributos

Tema 2: Programación basada en Objetos

Práctica No. 5. Estructuras con Memoria Dinámica

Clases Abstractas e Interfaces

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

Conceptos Básicos. Programación Orientada a Objetos 2

Derechos de Acceso: COMPOSICION

Guía práctica de estudio 07: Herencia

TEMA 5. Agenda. Herencia

Curso de Java POO: Programación orientada a objetos

CLAVE ASIGNATURA REQUISITOS HORA/SEMANA CREDITOS TI-8 PROGRAMACION II 80% DE ASISTENCIA 4 6

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

INTRODUCCION A LA PROGRAMACION EN JAVA

4/14/2010. Objetivos. Que es JAVA. JAVA como plataforma. Reglas Sintácticas y de Codificación Básicas de JAVA

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Soluciones Ejercicios Tema 1

Curso de Java POO: Programación orientada a objetos

Examen Teórico. Convocatoria de Julio de 2015

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Definición. Mónica E. García García Feb 07

Identidad, igualdad y equivalencia

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

Aplicaciones de Escritorio

Estructuras de control selectivas

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Clases y Objetos en C++

PHP5 Orientado a Objetos

Categorías de métodos. Métodos constructores y destructores

RTTI y reflexión Modelos de datos

Encapsulación: clases y objetos

Clase adicional 2. Estructuras básicas de control. Temas

Estructuras de control condicionales

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura).

HOJA DE EJERCICIOS 4 INTERFACES Y CLASES ABSTRACTAS EN JAVA Y C++

Transcripción:

Introducción a la Programación en Java Clases, Métodos y Atributos Ángel Lucas González Martínez Jaime Ramírez DLSIIS. Facultad de Informática Universidad Politécnica de Madrid Clase Las clases son el elemento fundamental de los programas en Java Todo programa consta de al menos una clase Recordemos: Clase: Tipo de datos, compuesto de atributos y métodos, que representa a una entidad o elemento de la realidad Instancia u objeto: Es un individuo particular de una clase, es decir, una variable de tipo clase 1

Declaración de una Clase [modif_clase] class nombre_clase [extends nombre_clase] [implements nombre_interfaz{, nombre_interfaz] { {[modif_atributos] tipo id_atributo [= valor_inicial]; {[modif_métodos] tipo_retorno id_método ([list_parám]) {cuerpo_método modifi_clase = abstract public final modif_atributos = private public protected final static modif_métodos = abstract private public protected final static Declaración de una Clase Recomendación metodológica: Los atributos deben ser privados Las métodos: Privado: si se utiliza como función aux Público: si va a ser utilizada fuera de la clase Cuando se expliquen los paquetes, se distinguirán más niveles de acceso 2

Ciclo de vida de un objeto Supuesta la definición de la clase NombreClase 1. Declaración de un objeto NombreClase obj; // declaración 2. Creación de una instancia obj= new NombreClase (); // declaración 3. Utilización de la instancia obj.función(...); // invocación de un método a = obj.atributo; // acceso a un atributo //función y atributo tienen que ser accesibles por //quien lo utiliza*. Ciclo de vida de un objeto 4. Destrucción del objeto o instancia Automática El objeto ya no es referenciado por nadie: A null todas las referencias del objeto Se sale del ámbito NombreClase obj= new NombreClase (); { NombreClase obj2= obj; // declaración... //Eliminación de una referencia obj= null; // Eliminación de la última referencia obj Entra en juego el GC 3

Modificadores de una clase Los modificadores de una clase son: abstract: La clase no está completa y no se pueden crear instancia final: No puede ser extendida public: Pública nada (friendly): Sólo se puede utilizar dentro del paquete en que se define (crear instancias o uso de métodos de clase) Herencia y especializaciones: extends e implements Modificadores de atributos y métodos De acceso para Atributos y Métodos: private: Nadie puede acceder al método o atributo nada (friendly): sólo es visible dentro del paquete que incluye la clase que lo definió protected: es friendly, y además es visible para todas las subclases de la clase que lo definió public: es visible para todos static: define atributo o método de clase final: en atributos junto con static define una constante. En métodos indica que no puede ser sobre escrito Sólo para métodos: abstract y la clase ha sido declarada como abstract 4

Recomendaciones sobre control de acceso Los atributos deben ser siempre privados Los métodos deben ser: friendly : si se desea que sólo sean utilizados dentro del paquete (no suele ser muy recomendable) protected: si se desea permitir que posibles subclases definidas en otros paquetes tengan acceso public: si se desea permitir el acceso a ellos desde cualquier parte del programa Ejemplo de clase public class Empleado { private String nombre; private double sueldo; public String getnombre() { return nombre; public void setnombre(string nombre1) { nombre = nombre1; public double getsueldo() { return sueldo; public void setsueldo(double sueldo1) { sueldo = sueldo1; 5

Ejemplo de clase import Empleado; public class TestEjemplo { public static void main(string[] args) { Empleado emp1; emp1 = new Empleado(); emp1.setnombre("pepe"); emp1.setsueldo(1000); System.out.print("El sueldo de " + emp1.getnombre() + " es " + emp1.getsueldo()); Constructor Método especial Permite inicializar un objeto al crearlo Mismo nombre que la clase No puede devolver valor o dato Si no se define java proporciona uno por defecto que asigna a cada atributo de instancia su valor por defecto: 0, false, 0l, 0.0f, null, \0 No se inicializan las variables locales de un método 6

Constructor El constructor se ejecuta al crear el objeto con el new El constructor puede tener parámetros Los parámetros se utilizan para inicializar los atributos Los parámetros se pasan al invocar a new Para notificar problemas al inicializar se utilizan excepciones Ejemplo de constructores public class Date { private int day, month, year; public Date(String date) { String [] partes = date.split("/"); day = Integer.parseInt(partes[0]); month = Integer.parseInt(partes[1]); year = Integer.parseInt(partes[2]); public Date(int d, int m, int y) { day=d; month=m; year=y; public String tostring() { return day + "/" + month + "/" + year; 7

Ejemplo de constructores import Date; public class TestDate { public static void main(string[] args) { Date ob1, ob2; ob1 = new Date(4, 11, 1996); ob2 = new Date( 22/10/2001"); System.out.println("La primera fecha es " + ob1); System.out.print("La segunda fecha es " + ob2); Garbage Collection (GC) Recoge la memoria que no es accesible (basura) Es activado de forma automática por la JVM Se puede sugerir su ejecución por medio de System.gc() La invocación manual se ha de realizar con cuidado GC sólo se encarga de recuperar memoria 8

Destructor Java no proporciona un destructor al uso El método finalize () es llamado por el GC Libera la memoria que ocupa el objeto Debe usarse sólo para liberar memoria No se debe utilizar para realizar tareas correspondientes a un destructor: Liberar recursos hardware Conexiones vía sockets Cerrar ficheros Etc. Definir métodos para la desinicialización Puntero this Todo método de instancia lleva un parámetro implícito Este parámetro una referencia al objeto sobre el que se hace la llamada Esta referencia se llama this Se puede usar para evitar colisiones de identificadores dentro de un método public class Date {... public Date(int day, int month, int year) { this.day=day; this.month=month; this.year=year; 9

Paquetes Permite agrupar en una misma librería varias clases e interfaces Un paquete crea un espacio de nombres Dos clases pertenecientes a distintos paquetes se pueden llamar igual Un paquete puede contener otros paquetes Si no se especifica nada la clase pertenece al paquete por defecto Cómo crear un paquete Al comienzo de todos los ficheros pertenecientes a un mismo paquete a : package a; Todos los.java perteneciente a un paquete debería colgar del mismo directorio Si el paquete a está dentro del paquete b, y éste a su vez está dentro de c, entonces: package c.b.a; 10

Cómo crear un paquete En un mismo fichero se pueden definir varias clases y/o interfaces, sólo una puede ser pública Todos los ficheros del paquete a deben: o estar localizados en un directorio llamado A que cuelgue de un directorio incluido en la variable CLASSPATH (por ejemplo: c/b/a) o estar incluidos en un file.jar, y el path del fichero debe estar incluido en la variable CLASSPATH Cómo usar un paquete Escribiendo la referencia completa al elemento: nombre_paquete.nombre_elem Importando: el paquete entero: import nombre_paquete.*; o sólo el elemento a ser utilizado: import nombre_paquete.nombre_elem; 11

Igualdad y Asignación Una variable declarada como de una cierta clase es una referencia o alias de un objeto NombreClase obj= new NombreClase (); { NombreClase obj2= obj; // declaración... //Eliminación de una referencia obj= null; // Eliminación de la última referencia obj obj obj2 Instancia NombreClase Igualdad y Asignación public static void main(string[] args) { Date ob1, ob2, ob3; ob1 = new Date(12, 4, 96); ob2 = ob1; // ambos se refieren al mismo objeto Date System.out.println("La primera fecha es " + ob1); System.out.println("La segunda fecha es " + ob2); ob1.setdia(10); // cambio el día por medio de ob1 if (ob1==ob2) // pero siguen siendo iguales System.out.println( Son iguales ); else System.out.println( Son distintos ); ob3 = new Date(10, 4, 96); if (ob1==ob3) // son distintos!? System.out.println( Son iguales ); else System.out.println( Son distintos ); 12

Igualdad y Asignación Por qué ob1 y ob3 son distintos? El operador de igualdad comprueba si ambas referencias son dos alias del mismo objeto, ob1 y ob3 son dos objetos con el mismo contenido, pero alias o referencias a instancias distintas Cómo podemos comparar dos objetos de modo que el resultado sea cierto si ambos objetos tienen el mismo contenido? Solución: definir un método equals() en la clase Date. Esta solución es la que se ha adoptado en la API (véase la clase String) Ejemplo con equals public boolean equals (Object o) { return (day==((date) o).day) && (month==((date) o).month) && (year==((date) o).year); public static void main(string[] args) { Date ob1, ob2; ob1 = new Date(12, 4, 96); ob2 = new Date("12/4/96"); System.out.println("La primera fecha es " + ob1); System.out.println("La segunda fecha es " + ob2); System.out.println(ob1 == ob2); System.out.println(ob1.equals(ob2)); 13

Paso de parámetros a funciones El paso de parámetros en Java no es por referencia, sino por valor Los cambios en los parámetros se pierden al terminar la función. static void intercambiar (Date d1, Date d2) { Date aux = d1; d1 = d2; d2 = aux; static void intercambiar (Date d1, Date d2) { "intercambiar d1.day y d2.day" "intercambiar d1.month y d2.month" "intercambiar d1.year y d2.year" Ejercicios Hacer una clase Menu que reciba un conjunto de cadenas de caracteres, el tipo de numeración que se desea: usando letras (a-z) o números (1-n) Definir una clase agenda y un programa de prueba que utilice la clase Menu. Debe permitirse insertar, borrar, buscar y Listar. Cada entrada de la agenda contendrá: Datos personales Datos de contacto 14