Encapsulación: clases y objetos

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

Introducción Java y Servicios Web I Master en Ingeniería Matemática

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

Tema 7: Polimorfismo. Índice

Java para programadores

Aplicaciones de Escritorio

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

12. Tipos de atributos

Forma Básica Clase Java

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

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

Práctica 5a. Práctica 5a. José M. Ordax

PRÁCTICA No 4 POO Encapsulación. El alumno conocerá los principios de la encapsulación, y el uso de constructores para la inicialización de datos

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

Modulo 11. Clases y Objetos en Java

Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos

Derechos de Acceso: COMPOSICION

Curso Informática Lección 2. Introducción a la programación en Java

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?

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Relación entre clases. Ejemplo de Clase: Punto !

Introducción a la Programación en Java

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

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

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

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

Métodos. Los métodos definen el comportamiento de los objetos de una clase dada (lo que podemos hacer con los objetos de esa clase)

Práctica 5c. Práctica 5c. José M. Ordax

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

Programación concurrente

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

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

15. Parámetros o argumentos

Estructuras de control selectivas

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

int[] nombrearray1; int nombrearray2[];

Clases y Objetos en C++

Herencia. public class Persona { private String nombre; private char sexo; public Persona() { nombre = new String(); sexo = ' '; }

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

Taller de Programación I. Tema 06: Orientación al Objeto en Java (parte 2)

Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.

PRÁCTICA 4: DISEÑO DE TIPOS Versión: 1.0.1

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

Guía práctica de estudio 07: Herencia

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

Fundamentos de Programación

Programación II JAVA Dr. Mario Rossainz López

Clases, Objetos y Métodos en Java

PROYECTO FIGURAS DIAGRAMA DE FLUJO

IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA

Programación Orientada a Objetos (POO)

Aspectos de los LP. Diseño de compiladores. Estático vs. Dinámico. Estático vs. Dinámico. Scope. Scope 24/03/2015

Tema 2: Clases y Objetos. Programación Orientada a Objetos Curso 2015/2016

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Estructura de datos y Programación

Curso de Java orientado a Android Parte 2

Clases abstractas e interfaces en Java

Clases en Java. Declaración

o Una clase es un tipo al cual pertenecen objetos o instancias de la clase.

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

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

En Java, un arreglo es un grupo de variables (llamados elementos o componentes) que contienen valores, todos del mismo tipo.

class identificador{ //Bloque de propiedades (datos miembro, atributos, propiedades) //Bloque de métodos (comportamientos) }

LA PALABRA CLAVE THIS EN JAVA. CONTENIDO NULL POR DEFECTO DE UN OBJETO. SOBRECARGA DE NOMBRES. EJEMPLOS (CU00654B)

Diseño de algoritmos paralelos

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

Prueba N o 1. Programación II

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Creación de un objeto. Creación de un objeto. Creación de un objeto

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

Introducción a Java. Introducción a Java. Programación I

PROGRAMACIÓN ORIENTADA A OBJETOS. Java se parece mucho a C pero sin todo lo que nos traía problemas.

Prácticas de Programación

Examen Teórico Convocatoria de Junio de 2012

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase

Java. Introducción a la Programación Orientada a Objetos

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

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

Transcripción:

Encapsulación: clases y objetos Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es

Contenidos Clases y objetos. Atributos. Métodos. Modificadores de acceso (public/private) Constructores. Igualdad de objetos. Ejemplos. Atributos y métodos estáticos. Paquetes. 2

Clases Una clase es un tipo, definido mediante atributos y métodos. Los atributos son variables que definen el estado interno de los objetos de la clase. Los métodos son funciones/procedimientos que acceden y/o modifican los atributos de un objeto. Conceptualmente, representan mensajes destinados a un objeto. 3

Atributos de una clase // Fecha.java public class Fecha { public int dia; public int mes; public int año; Atributos Tipo Nombre 4

Clases vs. Objetos Desde el punto de vista del compilador, las clases son tipos, y los objetos son variables con esos tipos. Un objeto es una asignación de los atributos definidos por la clase a valores concretos. Una clase puede considerarse como una plantilla, a partir de la cual se crean objetos, que son instancias de la clase. Clase Fecha dia = 11 mes = 5 año = 2012 int dia; int mes; int año; dia = 28 mes = 8 año = 1983 Objetos de la clase Fecha 5

Creación de objetos // Test.java public class Test { public static void main(string[] args) { Fecha f; f = new Fecha(); Creación de un objeto f.dia = 12; f.mes = 5; f.año = 2012; System.out.printf( Hoy es día: %d/%d/%d, f.dia, f.mes, f.año); Modificación de atributos Acceso a atributos 6

Creación de objetos // Test.java public class Test { public static void main(string[] args) { Fecha f; f = new Fecha(); Creación de un objeto f.dia = 12; f.mes = 5; f.año = 2012; System.out.printf( Hoy es día: %d/%d/%d, f.dia, f.mes, f.año); Modificación de atributos Acceso a atributos Fecha f = new Fecha(); 7

Contenidos Clases y objetos. Atributos. Métodos. Modificadores de acceso (public/private) Constructores. Igualdad de objetos. Ejemplos. Atributos y métodos estáticos. Paquetes. 8

Métodos de una clase Son funciones que se declaran dentro del cuerpo de la clase. // Fecha.java public class Fecha { public int dia; public int mes; public int año; public void imprimir() { System.out.printf( %d/%d/%d, dia, mes, año); 9

Llamada a métodos // Test.java public class Test { public static void main(string[] args) { Fecha f; f = new Fecha(); f.dia = 12; f.mes = 5; f.año = 2012; System.out.print( Hoy es día: ); f.imprimir(); Llamada a método 10

Métodos de acceso (getters) En general, no conviene que el usuario de la clase maneje directamente los atributos de la misma. type Fecha = record // número de días transcurridos desde el // 1 de enero de 1970 numerodias:integer; end; function DiferenciaFechas(f1, f2:fecha):integer; begin return f2.numerodias f1.numerodias; end; var actual, f: fecha; write(f.dia, '/', f.mes, '/', f.año) if f.año < then diff := DiferenciaFechas(actual, f); end; case f.mes of end; 11

Métodos de acceso (getters) // Fecha.java public class Fecha { public int getdia() { return dia; public int getmes() { return mes; public int getaño() { return año; 12

Métodos de modificación (setters) // Fecha.java public class Fecha { public void setdia(int nuevodia) { dia = nuevodia; public void setmes(int nuevomes) { mes = nuevomes; public void setaño(int nuevoaño) { año = nuevoaño; 13

Métodos de modificación (setters) // Test.java public class Test { public static void main(string[] args) { Fecha f; f = new Fecha(); f.setdia(12); f.setmes(5); f.setaño(2012); System.out.print( Hoy es día: ); f.imprimir(); Ventaja adicional: permite comprobación de errores. 14

Contenidos Clases y objetos. Atributos. Métodos. Modificadores de acceso (public/private) Constructores. Igualdad de objetos. Ejemplos. Atributos y métodos estáticos. Paquetes. 15

Modificadores de acceso Pero esto no impide que el usuario de la clase pueda acceder a los atributos directamente! Fecha f; f = new Fecha(); f.dia = 12; f.setmes(5); Hay alguna manera de prohibir explícitamente el acceso a un atributo o método? 16

Modificadores de acceso public : Puede accederse desde fuera de la clase. private: Sólo es visible desde los métodos de la clase. Los atributos y métodos privados se consideran de uso interno por la clase. public class Fecha { private int dia; private int mes; private int año; 17

Modificadores de acceso public : Puede accederse desde fuera de la clase. private: Sólo es visible desde los métodos de la clase. Los atributos y métodos privados se consideran de uso interno por la clase. public class Fecha { private int dia; private int mes; private int año; Modificadores de acceso Puede ser public, private, o protected 18

Contenidos Clases y objetos. Atributos. Métodos. Modificadores de acceso (public/private) Constructores. Igualdad de objetos. Ejemplos. Atributos y métodos estáticos. Paquetes. 19

Constructores Son métodos que sirven para inicializar un objeto. Se caracterizan por llamarse igual que el nombre de la clase, y no tener tipo de retorno. // Fecha.java public class Fecha { public Fecha(int nuevodia, int nuevomes, int nuevoaño) { dia = nuevodia; mes = nuevomes; año = nuevoaño; 20

Constructores Los constructores son llamados durante la creación del objeto. // Test.java public class Test { public static void main(string[] args) { Fecha f; f = new Fecha(12, 5, 2012); System.out.print( Hoy es día: ); f.imprimir(); Parámetros del constructor 21

Constructores Si una clase no tiene constructor, el compilador añade un constructor por defecto sin parámetros. Inicializa todos los atributos a sus valores por defecto. Fecha f = new Fecha(); Constructor por defecto Cuando se define un constructor en una clase, el constructor por defecto no se añade. Fecha f = new Fecha(); ERROR 22

Manejo interactivo de objetos en BlueJ 23

Contenidos Clases y objetos. Atributos. Métodos. Modificadores de acceso (public/private) Constructores. Igualdad de objetos. Ejemplos. Atributos y métodos estáticos. Paquetes. 24

Igualdad de objetos Los objetos se almacenan en el heap. Las variables son referencias a esos objetos. Fecha f1 = new Fecha(11, 5, 2012); Fecha f2 = f1; f1 f2 dia = 11 mes = 5 año = 2012 La igualdad entre dos variables de tipo objeto (==) es cierta sólo si apuntan al mismo objeto. 25

Igualdad de objetos Si se quiere implementar otro tipo de igualdad, ha de hacerse mediante un método de la clase. // Fecha.java public class Fecha { public boolean iguala(fecha otrafecha) { return (dia == otrafecha.dia) && (mes == otrafecha.mes) && (año == otrafecha.año); 26

Igualdad de objetos Si se quiere implementar otro tipo de igualdad, ha de hacerse mediante un método de la clase. // Test.java f1 = new Fecha(14, 2, 2000); f2 = new Fecha(14, 2, 2000); if (f1.iguala(f2)) { System.out.println( Son iguales ); 27

Contenidos Clases y objetos. Atributos. Métodos. Modificadores de acceso (public/private) Constructores. Igualdad de objetos. Ejemplos. Atributos y métodos estáticos. Paquetes. 28

Ejemplo: clase Punto public class Punto { private int x; private int y; public Punto(int x, int y) { this.x = x; this.y = y; public int getx() { return x; public int gety() { return y; 29

Ejemplo: clase Punto public class Punto { private int x; private int y; public Punto(int x, int y) { this.x = x; this.y = y; Atributos de la clase public int getx() { return this.x; public int gety() { return this.y; this = objeto que está siendo construido this = objeto que recibe el mensaje 30

Ejemplo: clase Rectangulo public class Rectangulo { private Punto posición; // Posición de la esquina superior izquierda private double ancho, alto; public Rectangulo(Punto posicion, double ancho, double alto) { this.posicion = posicion; this.ancho = ancho; this.alto = alto; public Rectangulo(Punto esqsupizqda, Punto esqinfdcha) { this posicion = esqsupizqda; this.ancho = esqinfdcha.getx() - esqsupizqda.getx(); this.alto = esqinfdcha.gety() - esqsupizqda.gety(); Sobrecarga de constructores: puedo tener varios constructores por método, siempre que no coincidan en número y tipo de parámetros. También se aplica a los métodos. 31

Ejemplo: clase Rectangulo public class Rectangulo { public double area() { return ancho * alto; public double perimetro() { return 2*alto + 2*ancho; public void dibujar(ventana v) { v.dibujarrectangulo(origen.getx(), origen.gety(), ancho, alto); 32

Ejemplo: clase Circulo public class Circulo { private Punto centro; private double radio; public Circulo(Punto centro, double radio) { public double getradio() { public Punto getcentro() { public double area() { public double perimetro() { public void dibujar(ventana v) { 33

Contenidos Clases y objetos. Atributos. Métodos. Modificadores de acceso (public/private) Constructores. Igualdad de objetos. Ejemplos. Atributos y métodos estáticos. Paquetes. 34

Atributos y métodos estáticos Un miembro estático de una clase es un atributo o un método que es compartido por todos los objetos de dicha clase. Clase Fecha static int numfechas; int dia; int mes; int año; numfechas = 2 dia = 11 mes = 5 año = 2012 numfechas = 2 dia = 28 mes = 8 año = 1983 35

Atributos y métodos estáticos Una atributo estático representa información a nivel de clase. Los métodos estáticos realizan operaciones que no van asociados a ninguna instancia particular de la clase. Clase Fecha static int numfechas = 2; int dia; int mes; int año; dia = 11 mes = 5 año = 2012 dia = 28 mes = 8 año = 1983 36

Atributos y métodos estáticos // Empleado.java public class Empleado { private String nombre; private int DNI; private Fecha fechanacimiento; private int numeroempleado; private static int contadorempleados = 0; public Empleado(String nombre, int DNI, Fecha fechanacimiento) { this.nombre = nombre; this.dni = DNI; this.fechanacimiento = fechanacimiento; numeroempleado = contadorempleados; contadorempleados++; 37

Atributos y métodos estáticos // Empleado.java public class Empleado { public static int getnumeroempleados() { return contadorempleados; // Test.java public class Test { public static void main (String[] args) { Empleado e1 = new Empleado( Luis Fernández, 46852391, new Fecha(12, 4, 1979)); Empleado e2 = new Empleado( Javier Barajas, 23771829, new Fecha(21, 11, 1980)); System.out.prinln(Empleado.getNumeroEmpleados()); Nombre de la clase 38

Atributos y métodos estáticos 39

La clase Math de Java Es una clase formada exclusivamente por atributos y métodos estáticos. public static double E; public static double PI; public static double abs(double a); public static double sin(double a); public static double exp(double a); public static double pow(double a, double b); public static double random(); Más información: http://docs.oracle.com/javase/6/docs/api/java/lang/math.html 40

Contenidos Clases y objetos. Atributos. Métodos. Modificadores de acceso (public/private) Constructores. Igualdad de objetos. Ejemplos. Atributos y métodos estáticos. Paquetes. 41

Paquetes Un paquete en Java es una agrupación de clases que comparten una temática o funcionalidad similar. Sirven para evitar conflictos de nombres entre clases creadas por distintas personas o empresas. 42

Paquetes Una clase puede acceder a todas las clases públicas que están en su mismo paquete, sin necesidad de indicar el nombre de dicho paquete. // Circulo.java public class Circulo { private Punto centro; 43

Paquetes Si una clase quiere acceder a otras que no están en su mismo paquete, hay dos opciones: Indicar explícitamente el nombre del paquete en el que se encuentran. es.ucm.mat.fecha fecha = new es.ucm.mat.fecha(23, 10, 2011); Utilizar la directiva import. import es.ucm.mat.fecha; Fecha fecha = new Fecha(23, 10, 2011); import es.ucm.mat.*; // Importa todas las clases del paquete 44

Referencias P. Deitel, H. Deitel Java. How to Program (9th Edition) Caps. 3, 6, 8. B. Eckel Thinking in Java (3rd Edition) Caps. 2, 4, 5, 6. Documentación de librerías de Java http://docs.oracle.com/javase/6/docs/api/ Cómo documentar las clases (Javadoc): Deitel & Deitel: Apéndice M. B.Eckel: Cap. 2. 45