SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexió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
3. Encapsulación: Clases y objetos11/Mayo/2012 2
Contenidos
●
Clases y objetos. Atributos.
●
Métodos.
●
Modificadores de acceso (public/private)
●
Constructores.
●
Igualdad de objetos.
●
Ejemplos.
●
Atributos y métodos estáticos.
●
Paquetes.
3. Encapsulación: Clases y objetos11/Mayo/2012 3
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. Encapsulación: Clases y objetos11/Mayo/2012 4
Atributos de una clase
// Fecha.java
public class Fecha {
public int dia;
public int mes;
public int año;
} Tipo Nombre
Atributos
3. Encapsulación: Clases y objetos11/Mayo/2012 5
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
int dia;
int mes;
int año;
dia = 11
mes = 5
año = 2012
dia = 28
mes = 8
año = 1983
Objetos de
la clase Fecha
3. Encapsulación: Clases y objetos11/Mayo/2012 6
Creación de objetos
// 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.printf(“Hoy es día: %d/%d/%d”,
f.dia, f.mes, f.año);
}
}
Creación de un objeto
Modificación de atributos
Acceso a atributos
3. Encapsulación: Clases y objetos11/Mayo/2012 7
Creación de objetos
// 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.printf(“Hoy es día: %d/%d/%d”,
f.dia, f.mes, f.año);
}
}
Creación de un objeto
Modificación de atributos
Acceso a atributos
Fecha f = new Fecha();
3. Encapsulación: Clases y objetos11/Mayo/2012 8
Contenidos
●
Clases y objetos. Atributos.
●
Métodos.
●
Modificadores de acceso (public/private)
●
Constructores.
●
Igualdad de objetos.
●
Ejemplos.
●
Atributos y métodos estáticos.
●
Paquetes.
3. Encapsulación: Clases y objetos11/Mayo/2012 9
Métodos de una 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);
}
}
●
Son funciones que se declaran dentro del
cuerpo de la clase.
3. Encapsulación: Clases y objetos11/Mayo/2012 10
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
3. Encapsulación: Clases y objetos11/Mayo/2012 11
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;
3. Encapsulación: Clases y objetos11/Mayo/2012 12
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;
}
}
3. Encapsulación: Clases y objetos11/Mayo/2012 13
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;
}
}
3. Encapsulación: Clases y objetos11/Mayo/2012 14
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.
3. Encapsulación: Clases y objetos11/Mayo/2012 15
Contenidos
●
Clases y objetos. Atributos.
●
Métodos.
●
Modificadores de acceso (public/private)
●
Constructores.
●
Igualdad de objetos.
●
Ejemplos.
●
Atributos y métodos estáticos.
●
Paquetes.
3. Encapsulación: Clases y objetos11/Mayo/2012 16
Modificadores de acceso
Fecha f;
f = new Fecha();
f.dia = 12;
f.setMes(5);
●
¡Pero esto no impide que el usuario de la clase
pueda acceder a los atributos directamente!
●
¿Hay alguna manera de prohibir explícitamente
el acceso a un atributo o método?
3. Encapsulación: Clases y objetos11/Mayo/2012 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;
…
}
3. Encapsulación: Clases y objetos11/Mayo/2012 18
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
3. Encapsulación: Clases y objetos11/Mayo/2012 19
Contenidos
●
Clases y objetos. Atributos.
●
Métodos.
●
Modificadores de acceso (public/private)
●
Constructores.
●
Igualdad de objetos.
●
Ejemplos.
●
Atributos y métodos estáticos.
●
Paquetes.
3. Encapsulación: Clases y objetos11/Mayo/2012 20
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;
}
}
3. Encapsulación: Clases y objetos11/Mayo/2012 21
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
3. Encapsulación: Clases y objetos11/Mayo/2012 22
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.
●
Cuando se define un constructor en una clase,
el constructor por defecto no se añade.
Fecha f = new Fecha(); Constructor por defecto
Fecha f = new Fecha(); ERROR
3. Encapsulación: Clases y objetos11/Mayo/2012 23
Manejo interactivo de objetos en BlueJ
3. Encapsulación: Clases y objetos11/Mayo/2012 24
Contenidos
●
Clases y objetos. Atributos.
●
Métodos.
●
Modificadores de acceso (public/private)
●
Constructores.
●
Igualdad de objetos.
●
Ejemplos.
●
Atributos y métodos estáticos.
●
Paquetes.
3. Encapsulación: Clases y objetos11/Mayo/2012 25
Igualdad de objetos
●
Los objetos se almacenan en el heap.
●
Las variables son referencias a esos objetos.
●
La igualdad entre dos variables de tipo objeto
(==) es cierta sólo si apuntan al mismo objeto.
dia = 11
mes = 5
año = 2012
Fecha f1 = new Fecha(11, 5, 2012);
Fecha f2 = f1;
f1
f2
3. Encapsulación: Clases y objetos11/Mayo/2012 26
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);
}
}
3. Encapsulación: Clases y objetos11/Mayo/2012 27
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”);
}
3. Encapsulación: Clases y objetos11/Mayo/2012 28
Contenidos
●
Clases y objetos. Atributos.
●
Métodos.
●
Modificadores de acceso (public/private)
●
Constructores.
●
Igualdad de objetos.
●
Ejemplos.
●
Atributos y métodos estáticos.
●
Paquetes.
3. Encapsulación: Clases y objetos11/Mayo/2012 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;
}
public int getX() { return x; }
public int getY() { return y; }
}
3. Encapsulación: Clases y objetos11/Mayo/2012 30
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 this.x; }
public int getY() { return this.y; }
}
Atributos de la clase
this = objeto que está siendo construido
this = objeto que recibe el mensaje
3. Encapsulación: Clases y objetos11/Mayo/2012 31
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.
3. Encapsulación: Clases y objetos11/Mayo/2012 32
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);
}
}
3. Encapsulación: Clases y objetos11/Mayo/2012 33
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) { … }
}
3. Encapsulación: Clases y objetos11/Mayo/2012 34
Contenidos
●
Clases y objetos. Atributos.
●
Métodos.
●
Modificadores de acceso (public/private)
●
Constructores.
●
Igualdad de objetos.
●
Ejemplos.
●
Atributos y métodos estáticos.
●
Paquetes.
3. Encapsulación: Clases y objetos11/Mayo/2012 35
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
3. Encapsulación: Clases y objetos11/Mayo/2012 36
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
3. Encapsulación: Clases y objetos11/Mayo/2012 37
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++;
}
…
}
3. Encapsulación: Clases y objetos11/Mayo/2012 38
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
3. Encapsulación: Clases y objetos11/Mayo/2012 39
Atributos y métodos estáticos
3. Encapsulación: Clases y objetos11/Mayo/2012 40
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
3. Encapsulación: Clases y objetos11/Mayo/2012 41
Contenidos
●
Clases y objetos. Atributos.
●
Métodos.
●
Modificadores de acceso (public/private)
●
Constructores.
●
Igualdad de objetos.
●
Ejemplos.
●
Atributos y métodos estáticos.
●
Paquetes.
3. Encapsulación: Clases y objetos11/Mayo/2012 42
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.
3. Encapsulación: Clases y objetos11/Mayo/2012 43
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;
…
}
3. Encapsulación: Clases y objetos11/Mayo/2012 44
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.
●
Utilizar la directiva import.
es.ucm.mat.Fecha fecha = new es.ucm.mat.Fecha(23, 10, 2011);
import es.ucm.mat.Fecha;
…
Fecha fecha = new Fecha(23, 10, 2011);
import es.ucm.mat.*; // Importa todas las clases del paquete
3. Encapsulación: Clases y objetos11/Mayo/2012 45
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.

Más contenido relacionado

La actualidad más candente

Programación orientada al objeto
Programación orientada al objetoProgramación orientada al objeto
Programación orientada al objetoboncastell
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de javainnovalabcun
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevjtk1
 
1. introduccion a la programación orientada a objeto (poo)
1.  introduccion a la programación orientada a objeto (poo)1.  introduccion a la programación orientada a objeto (poo)
1. introduccion a la programación orientada a objeto (poo)Roberto Rojas
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevjtk1
 
programacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic netprogramacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic netpp mm
 
Principios orientacion-objetos
Principios orientacion-objetosPrincipios orientacion-objetos
Principios orientacion-objetoskarlalopezbello
 

La actualidad más candente (14)

Programación orientada al objeto
Programación orientada al objetoProgramación orientada al objeto
Programación orientada al objeto
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prev
 
Definición de clases en POO
Definición de clases en POODefinición de clases en POO
Definición de clases en POO
 
1. introduccion a la programación orientada a objeto (poo)
1.  introduccion a la programación orientada a objeto (poo)1.  introduccion a la programación orientada a objeto (poo)
1. introduccion a la programación orientada a objeto (poo)
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prev
 
P.O.O.
P.O.O.P.O.O.
P.O.O.
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
programacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic netprogramacion orientada a objetos en visual basic net
programacion orientada a objetos en visual basic net
 
8.Clases y objetos Java
8.Clases y objetos Java8.Clases y objetos Java
8.Clases y objetos Java
 
Principios orientacion-objetos
Principios orientacion-objetosPrincipios orientacion-objetos
Principios orientacion-objetos
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
POO sencillito
POO sencillitoPOO sencillito
POO sencillito
 

Destacado

Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Elaine Cecília Gatto
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Samuel Marrero
 
Métodos POO
Métodos POOMétodos POO
Métodos POO1da4
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosJavier Camacho
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenKarlytoz_36
 
POO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y PolimorfismoPOO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y PolimorfismoActimel
 
Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaMichael de la Cruz
 
Métodos en programacion
Métodos en  programacionMétodos en  programacion
Métodos en programacioncrisricguepi
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Josue Lara Reyes
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y ObjetosKudos S.A.S
 
Propiedades De La Poo
Propiedades De La PooPropiedades De La Poo
Propiedades De La Pooda4
 

Destacado (12)

Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006
 
Programación!! . .
Programación!! . .Programación!! . .
Programación!! . .
 
Métodos POO
Métodos POOMétodos POO
Métodos POO
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 
POO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y PolimorfismoPOO: Herencia, Abstraccion y Polimorfismo
POO: Herencia, Abstraccion y Polimorfismo
 
Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación Estructurada
 
Métodos en programacion
Métodos en  programacionMétodos en  programacion
Métodos en programacion
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
 
Propiedades De La Poo
Propiedades De La PooPropiedades De La Poo
Propiedades De La Poo
 

Similar a Encapsulacion

Investigac programac 5º unidad
Investigac programac 5º unidadInvestigac programac 5º unidad
Investigac programac 5º unidadK Manuel TN
 
Memch clases lep ii
Memch   clases lep iiMemch   clases lep ii
Memch clases lep iidani Safres
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaAngel Vázquez Patiño
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Renny Batista
 
POO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosPOO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosFranklin Parrales Bravo
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()Clara Patricia Avella Ibañez
 
Poo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacionPoo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacionjlmanmons
 
La programación orientada a objetos con JavaScript ES6
La programación orientada a objetos con JavaScript ES6La programación orientada a objetos con JavaScript ES6
La programación orientada a objetos con JavaScript ES6Francisco Javier Arce Anguiano
 
modularidad de programación 2da parte (3) (1).pptx
modularidad de programación 2da parte (3) (1).pptxmodularidad de programación 2da parte (3) (1).pptx
modularidad de programación 2da parte (3) (1).pptxjavierccallo
 
Apunte paradigma orientado a objetos
Apunte paradigma orientado a objetosApunte paradigma orientado a objetos
Apunte paradigma orientado a objetosAlejandro Canosa
 
Clases y funciones_especiales
Clases y funciones_especialesClases y funciones_especiales
Clases y funciones_especialesWladimir
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosjent46
 
Introduccionjava
IntroduccionjavaIntroduccionjava
IntroduccionjavaOLGA MONTES
 
Unidad 2 poo_clases_y_objetos
Unidad 2 poo_clases_y_objetosUnidad 2 poo_clases_y_objetos
Unidad 2 poo_clases_y_objetosRulox Quiñones
 

Similar a Encapsulacion (20)

Investigac programac 5º unidad
Investigac programac 5º unidadInvestigac programac 5º unidad
Investigac programac 5º unidad
 
Memch clases lep ii
Memch   clases lep iiMemch   clases lep ii
Memch clases lep ii
 
Presentacion4
Presentacion4Presentacion4
Presentacion4
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 
Clases y objetos en Java
Clases y objetos en JavaClases y objetos en Java
Clases y objetos en Java
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
POO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosPOO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a Objetos
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Poo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacionPoo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacion
 
La programación orientada a objetos con JavaScript ES6
La programación orientada a objetos con JavaScript ES6La programación orientada a objetos con JavaScript ES6
La programación orientada a objetos con JavaScript ES6
 
modularidad de programación 2da parte (3) (1).pptx
modularidad de programación 2da parte (3) (1).pptxmodularidad de programación 2da parte (3) (1).pptx
modularidad de programación 2da parte (3) (1).pptx
 
Apunte paradigma orientado a objetos
Apunte paradigma orientado a objetosApunte paradigma orientado a objetos
Apunte paradigma orientado a objetos
 
Introduccion a la programación orientada a objetos
Introduccion a la programación orientada a objetosIntroduccion a la programación orientada a objetos
Introduccion a la programación orientada a objetos
 
Clases y funciones_especiales
Clases y funciones_especialesClases y funciones_especiales
Clases y funciones_especiales
 
7-Unidad 2. Elementos de una Clase
7-Unidad 2. Elementos de una Clase7-Unidad 2. Elementos de una Clase
7-Unidad 2. Elementos de una Clase
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Introduccionjava
IntroduccionjavaIntroduccionjava
Introduccionjava
 
Unidad 2 poo_clases_y_objetos
Unidad 2 poo_clases_y_objetosUnidad 2 poo_clases_y_objetos
Unidad 2 poo_clases_y_objetos
 

Más de jbersosa

Las excepciones standar
Las excepciones standarLas excepciones standar
Las excepciones standarjbersosa
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepcionesjbersosa
 
Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catchjbersosa
 
Clasen1java
Clasen1javaClasen1java
Clasen1javajbersosa
 
Programación java1
Programación java1Programación java1
Programación java1jbersosa
 
Tercercortesistop
TercercortesistopTercercortesistop
Tercercortesistopjbersosa
 
Administracion de la memoria principal
Administracion de  la memoria principalAdministracion de  la memoria principal
Administracion de la memoria principaljbersosa
 
Auditoria 2
Auditoria 2Auditoria 2
Auditoria 2jbersosa
 
Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891jbersosa
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informaticajbersosa
 
Auditoria de sistemas (1)
Auditoria de sistemas (1)Auditoria de sistemas (1)
Auditoria de sistemas (1)jbersosa
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónjbersosa
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...jbersosa
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosjbersosa
 
Estructura de una red
Estructura de una redEstructura de una red
Estructura de una redjbersosa
 
Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2jbersosa
 
Bases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportBases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportjbersosa
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportjbersosa
 

Más de jbersosa (20)

Las excepciones standar
Las excepciones standarLas excepciones standar
Las excepciones standar
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepciones
 
Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catch
 
Main
MainMain
Main
 
Clasen1java
Clasen1javaClasen1java
Clasen1java
 
Programación java1
Programación java1Programación java1
Programación java1
 
Tercercortesistop
TercercortesistopTercercortesistop
Tercercortesistop
 
Administracion de la memoria principal
Administracion de  la memoria principalAdministracion de  la memoria principal
Administracion de la memoria principal
 
Auditoria 2
Auditoria 2Auditoria 2
Auditoria 2
 
Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informatica
 
Auditoria de sistemas (1)
Auditoria de sistemas (1)Auditoria de sistemas (1)
Auditoria de sistemas (1)
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentación
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Php
PhpPhp
Php
 
Estructura de una red
Estructura de una redEstructura de una red
Estructura de una red
 
Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2
 
Bases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportBases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper report
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper report
 

Último

Code name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdfCode name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdfnaladosol
 
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...univerzalworld
 
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdf
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdfCode name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdf
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdfnaladosol
 
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicoss
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicossEL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicoss
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicossLucasJohnHuntingford
 
Code name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdfCode name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdfnaladosol
 
Matemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdfMatemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdfFAUSTODANILOCRUZCAST
 
Programación de las Fiestas de San Isidro 2024.pdf
Programación de las Fiestas de San Isidro 2024.pdfProgramación de las Fiestas de San Isidro 2024.pdf
Programación de las Fiestas de San Isidro 2024.pdf20minutos
 
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...patriciooviedo3
 
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJO
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJORESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJO
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJOLuisFigueroa230128
 
Mujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdfMujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdfKeilly Merlo
 
20 poemas de amor y una canción desesperada.pdf
20 poemas de amor y una canción desesperada.pdf20 poemas de amor y una canción desesperada.pdf
20 poemas de amor y una canción desesperada.pdfalbertozb15
 

Último (11)

Code name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdfCode name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdf
 
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
 
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdf
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdfCode name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdf
Code name Anastasia parte 1 - capitulo - 2(1)-páginas-2.pdf
 
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicoss
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicossEL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicoss
EL QUIJOTE.pdf Libro adaptado de la edicion vicens vives de clasicos hispanicoss
 
Code name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdfCode name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdf
 
Matemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdfMatemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdf
 
Programación de las Fiestas de San Isidro 2024.pdf
Programación de las Fiestas de San Isidro 2024.pdfProgramación de las Fiestas de San Isidro 2024.pdf
Programación de las Fiestas de San Isidro 2024.pdf
 
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
 
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJO
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJORESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJO
RESUMEN DE LA PELÍCULA DE CHERNOBYL ENFOCADO A MEDICINA DEL TRABAJO
 
Mujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdfMujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdf
 
20 poemas de amor y una canción desesperada.pdf
20 poemas de amor y una canción desesperada.pdf20 poemas de amor y una canción desesperada.pdf
20 poemas de amor y una canción desesperada.pdf
 

Encapsulacion

  • 1. 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
  • 2. 3. Encapsulación: Clases y objetos11/Mayo/2012 2 Contenidos ● Clases y objetos. Atributos. ● Métodos. ● Modificadores de acceso (public/private) ● Constructores. ● Igualdad de objetos. ● Ejemplos. ● Atributos y métodos estáticos. ● Paquetes.
  • 3. 3. Encapsulación: Clases y objetos11/Mayo/2012 3 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.
  • 4. 3. Encapsulación: Clases y objetos11/Mayo/2012 4 Atributos de una clase // Fecha.java public class Fecha { public int dia; public int mes; public int año; } Tipo Nombre Atributos
  • 5. 3. Encapsulación: Clases y objetos11/Mayo/2012 5 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 int dia; int mes; int año; dia = 11 mes = 5 año = 2012 dia = 28 mes = 8 año = 1983 Objetos de la clase Fecha
  • 6. 3. Encapsulación: Clases y objetos11/Mayo/2012 6 Creación de objetos // 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.printf(“Hoy es día: %d/%d/%d”, f.dia, f.mes, f.año); } } Creación de un objeto Modificación de atributos Acceso a atributos
  • 7. 3. Encapsulación: Clases y objetos11/Mayo/2012 7 Creación de objetos // 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.printf(“Hoy es día: %d/%d/%d”, f.dia, f.mes, f.año); } } Creación de un objeto Modificación de atributos Acceso a atributos Fecha f = new Fecha();
  • 8. 3. Encapsulación: Clases y objetos11/Mayo/2012 8 Contenidos ● Clases y objetos. Atributos. ● Métodos. ● Modificadores de acceso (public/private) ● Constructores. ● Igualdad de objetos. ● Ejemplos. ● Atributos y métodos estáticos. ● Paquetes.
  • 9. 3. Encapsulación: Clases y objetos11/Mayo/2012 9 Métodos de una 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); } } ● Son funciones que se declaran dentro del cuerpo de la clase.
  • 10. 3. Encapsulación: Clases y objetos11/Mayo/2012 10 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
  • 11. 3. Encapsulación: Clases y objetos11/Mayo/2012 11 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;
  • 12. 3. Encapsulación: Clases y objetos11/Mayo/2012 12 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; } }
  • 13. 3. Encapsulación: Clases y objetos11/Mayo/2012 13 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; } }
  • 14. 3. Encapsulación: Clases y objetos11/Mayo/2012 14 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.
  • 15. 3. Encapsulación: Clases y objetos11/Mayo/2012 15 Contenidos ● Clases y objetos. Atributos. ● Métodos. ● Modificadores de acceso (public/private) ● Constructores. ● Igualdad de objetos. ● Ejemplos. ● Atributos y métodos estáticos. ● Paquetes.
  • 16. 3. Encapsulación: Clases y objetos11/Mayo/2012 16 Modificadores de acceso Fecha f; f = new Fecha(); f.dia = 12; f.setMes(5); ● ¡Pero esto no impide que el usuario de la clase pueda acceder a los atributos directamente! ● ¿Hay alguna manera de prohibir explícitamente el acceso a un atributo o método?
  • 17. 3. Encapsulación: Clases y objetos11/Mayo/2012 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; … }
  • 18. 3. Encapsulación: Clases y objetos11/Mayo/2012 18 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
  • 19. 3. Encapsulación: Clases y objetos11/Mayo/2012 19 Contenidos ● Clases y objetos. Atributos. ● Métodos. ● Modificadores de acceso (public/private) ● Constructores. ● Igualdad de objetos. ● Ejemplos. ● Atributos y métodos estáticos. ● Paquetes.
  • 20. 3. Encapsulación: Clases y objetos11/Mayo/2012 20 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; } }
  • 21. 3. Encapsulación: Clases y objetos11/Mayo/2012 21 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
  • 22. 3. Encapsulación: Clases y objetos11/Mayo/2012 22 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. ● Cuando se define un constructor en una clase, el constructor por defecto no se añade. Fecha f = new Fecha(); Constructor por defecto Fecha f = new Fecha(); ERROR
  • 23. 3. Encapsulación: Clases y objetos11/Mayo/2012 23 Manejo interactivo de objetos en BlueJ
  • 24. 3. Encapsulación: Clases y objetos11/Mayo/2012 24 Contenidos ● Clases y objetos. Atributos. ● Métodos. ● Modificadores de acceso (public/private) ● Constructores. ● Igualdad de objetos. ● Ejemplos. ● Atributos y métodos estáticos. ● Paquetes.
  • 25. 3. Encapsulación: Clases y objetos11/Mayo/2012 25 Igualdad de objetos ● Los objetos se almacenan en el heap. ● Las variables son referencias a esos objetos. ● La igualdad entre dos variables de tipo objeto (==) es cierta sólo si apuntan al mismo objeto. dia = 11 mes = 5 año = 2012 Fecha f1 = new Fecha(11, 5, 2012); Fecha f2 = f1; f1 f2
  • 26. 3. Encapsulación: Clases y objetos11/Mayo/2012 26 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); } }
  • 27. 3. Encapsulación: Clases y objetos11/Mayo/2012 27 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”); }
  • 28. 3. Encapsulación: Clases y objetos11/Mayo/2012 28 Contenidos ● Clases y objetos. Atributos. ● Métodos. ● Modificadores de acceso (public/private) ● Constructores. ● Igualdad de objetos. ● Ejemplos. ● Atributos y métodos estáticos. ● Paquetes.
  • 29. 3. Encapsulación: Clases y objetos11/Mayo/2012 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; } public int getX() { return x; } public int getY() { return y; } }
  • 30. 3. Encapsulación: Clases y objetos11/Mayo/2012 30 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 this.x; } public int getY() { return this.y; } } Atributos de la clase this = objeto que está siendo construido this = objeto que recibe el mensaje
  • 31. 3. Encapsulación: Clases y objetos11/Mayo/2012 31 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.
  • 32. 3. Encapsulación: Clases y objetos11/Mayo/2012 32 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); } }
  • 33. 3. Encapsulación: Clases y objetos11/Mayo/2012 33 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) { … } }
  • 34. 3. Encapsulación: Clases y objetos11/Mayo/2012 34 Contenidos ● Clases y objetos. Atributos. ● Métodos. ● Modificadores de acceso (public/private) ● Constructores. ● Igualdad de objetos. ● Ejemplos. ● Atributos y métodos estáticos. ● Paquetes.
  • 35. 3. Encapsulación: Clases y objetos11/Mayo/2012 35 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
  • 36. 3. Encapsulación: Clases y objetos11/Mayo/2012 36 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
  • 37. 3. Encapsulación: Clases y objetos11/Mayo/2012 37 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++; } … }
  • 38. 3. Encapsulación: Clases y objetos11/Mayo/2012 38 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
  • 39. 3. Encapsulación: Clases y objetos11/Mayo/2012 39 Atributos y métodos estáticos
  • 40. 3. Encapsulación: Clases y objetos11/Mayo/2012 40 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
  • 41. 3. Encapsulación: Clases y objetos11/Mayo/2012 41 Contenidos ● Clases y objetos. Atributos. ● Métodos. ● Modificadores de acceso (public/private) ● Constructores. ● Igualdad de objetos. ● Ejemplos. ● Atributos y métodos estáticos. ● Paquetes.
  • 42. 3. Encapsulación: Clases y objetos11/Mayo/2012 42 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.
  • 43. 3. Encapsulación: Clases y objetos11/Mayo/2012 43 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; … }
  • 44. 3. Encapsulación: Clases y objetos11/Mayo/2012 44 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. ● Utilizar la directiva import. es.ucm.mat.Fecha fecha = new es.ucm.mat.Fecha(23, 10, 2011); import es.ucm.mat.Fecha; … Fecha fecha = new Fecha(23, 10, 2011); import es.ucm.mat.*; // Importa todas las clases del paquete
  • 45. 3. Encapsulación: Clases y objetos11/Mayo/2012 45 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.