SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
1
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
2
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
3
Ciclo de vida de un objeto
• Supuesta la definición de la clase
NombreClase
1. Declaración de un objeto
2. Creación de una instancia
3. Utilización de la instancia
NombreClase obj; // declaración
obj= new NombreClase (); // declaración
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
• Entra en juego el GC
NombreClase obj= new NombreClase ();
{
NombreClase obj2= obj; // declaración
.......
} //Eliminación de una referencia
obj= null; // Eliminación de la última referencia obj
4
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
5
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;
}
}
6
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
7
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;
}
}
8
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
9
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;
}
}
10
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;
11
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;
12
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
Instancia
NombreClase
obj obj2
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”);
}
13
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));
}
14
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

Más contenido relacionado

La actualidad más candente

Java Multithreading
Java MultithreadingJava Multithreading
Java MultithreadingRajkattamuri
 
Fundamental programming structures in java
Fundamental programming structures in javaFundamental programming structures in java
Fundamental programming structures in javaShashwat Shriparv
 
Java class,object,method introduction
Java class,object,method introductionJava class,object,method introduction
Java class,object,method introductionSohanur63
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session ManagementFahad Golra
 
Lambdas y API Stream - Apuntes de Java
Lambdas y API Stream - Apuntes de JavaLambdas y API Stream - Apuntes de Java
Lambdas y API Stream - Apuntes de JavaAlexis Lopez
 
Java And Multithreading
Java And MultithreadingJava And Multithreading
Java And MultithreadingShraddha
 
An Introduction to Programming in Java: Arrays
An Introduction to Programming in Java: ArraysAn Introduction to Programming in Java: Arrays
An Introduction to Programming in Java: ArraysMartin Chapman
 
Inheritance In C++ (Object Oriented Programming)
Inheritance In C++ (Object Oriented Programming)Inheritance In C++ (Object Oriented Programming)
Inheritance In C++ (Object Oriented Programming)Gajendra Singh Thakur
 
Thread Dump Analysis
Thread Dump AnalysisThread Dump Analysis
Thread Dump AnalysisDmitry Buzdin
 
Javascript under the hood 1
Javascript under the hood 1Javascript under the hood 1
Javascript under the hood 1Thang Tran Duc
 
[OOP - Lec 08] Encapsulation (Information Hiding)
[OOP - Lec 08] Encapsulation (Information Hiding)[OOP - Lec 08] Encapsulation (Information Hiding)
[OOP - Lec 08] Encapsulation (Information Hiding)Muhammad Hammad Waseem
 
virtual function
virtual functionvirtual function
virtual functionVENNILAV6
 
C++ Object Oriented Programming
C++  Object Oriented ProgrammingC++  Object Oriented Programming
C++ Object Oriented ProgrammingGamindu Udayanga
 

La actualidad más candente (20)

Java Multithreading
Java MultithreadingJava Multithreading
Java Multithreading
 
Java Programming - 05 access control in java
Java Programming - 05 access control in javaJava Programming - 05 access control in java
Java Programming - 05 access control in java
 
Fundamental programming structures in java
Fundamental programming structures in javaFundamental programming structures in java
Fundamental programming structures in java
 
Java class,object,method introduction
Java class,object,method introductionJava class,object,method introduction
Java class,object,method introduction
 
Frogger vlan hopping
Frogger vlan hoppingFrogger vlan hopping
Frogger vlan hopping
 
Packages
PackagesPackages
Packages
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session Management
 
Lambdas y API Stream - Apuntes de Java
Lambdas y API Stream - Apuntes de JavaLambdas y API Stream - Apuntes de Java
Lambdas y API Stream - Apuntes de Java
 
Java And Multithreading
Java And MultithreadingJava And Multithreading
Java And Multithreading
 
An Introduction to Programming in Java: Arrays
An Introduction to Programming in Java: ArraysAn Introduction to Programming in Java: Arrays
An Introduction to Programming in Java: Arrays
 
Friend Function
Friend FunctionFriend Function
Friend Function
 
Inheritance In C++ (Object Oriented Programming)
Inheritance In C++ (Object Oriented Programming)Inheritance In C++ (Object Oriented Programming)
Inheritance In C++ (Object Oriented Programming)
 
Thread Dump Analysis
Thread Dump AnalysisThread Dump Analysis
Thread Dump Analysis
 
Method overloading
Method overloadingMethod overloading
Method overloading
 
Methods and constructors in java
Methods and constructors in javaMethods and constructors in java
Methods and constructors in java
 
Javascript under the hood 1
Javascript under the hood 1Javascript under the hood 1
Javascript under the hood 1
 
[OOP - Lec 08] Encapsulation (Information Hiding)
[OOP - Lec 08] Encapsulation (Information Hiding)[OOP - Lec 08] Encapsulation (Information Hiding)
[OOP - Lec 08] Encapsulation (Information Hiding)
 
virtual function
virtual functionvirtual function
virtual function
 
C++ Object Oriented Programming
C++  Object Oriented ProgrammingC++  Object Oriented Programming
C++ Object Oriented Programming
 

Destacado

Objective C clases y metodos
Objective C clases y metodosObjective C clases y metodos
Objective C clases y metodosGiovanni Cortés
 
polimorfismo
polimorfismopolimorfismo
polimorfismomiguel a
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gioRobert Wolf
 
Garficas de funciones trigonometricas
Garficas de funciones trigonometricasGarficas de funciones trigonometricas
Garficas de funciones trigonometricasAdrian Quito
 
PROYECTOS TRANSVERSALES
PROYECTOS TRANSVERSALESPROYECTOS TRANSVERSALES
PROYECTOS TRANSVERSALESJuana_ramos6
 
Proyecto san antonio ok
Proyecto san antonio okProyecto san antonio ok
Proyecto san antonio okpiedad medina
 
Programas de consola y jpa con net beans por gio
Programas de consola y jpa con net beans por gioProgramas de consola y jpa con net beans por gio
Programas de consola y jpa con net beans por gioRobert Wolf
 
Apresentação 4
Apresentação 4Apresentação 4
Apresentação 4leacki
 
Funciones de angulos dobles y multiples christian siavichay 2 c2
Funciones de angulos dobles y multiples  christian siavichay 2 c2Funciones de angulos dobles y multiples  christian siavichay 2 c2
Funciones de angulos dobles y multiples christian siavichay 2 c2CHRISTIAN_SIAVICHAY
 
Rad47739 proyec cabaña actualok
Rad47739 proyec cabaña  actualokRad47739 proyec cabaña  actualok
Rad47739 proyec cabaña actualokpiedad medina
 
Proyecto secundino porras 1
Proyecto secundino porras 1Proyecto secundino porras 1
Proyecto secundino porras 1piedad medina
 
Leer historia pasadas
Leer historia pasadasLeer historia pasadas
Leer historia pasadasantonio jorge
 
Proyecto sede ancon cpe 47750 actual
Proyecto sede ancon  cpe 47750 actualProyecto sede ancon  cpe 47750 actual
Proyecto sede ancon cpe 47750 actualpiedad medina
 
Proyecto aula sede delicias cpe 47696
Proyecto aula sede delicias cpe 47696Proyecto aula sede delicias cpe 47696
Proyecto aula sede delicias cpe 47696piedad medina
 
Los propósitos de la rieb se centran
Los propósitos de la rieb se  centranLos propósitos de la rieb se  centran
Los propósitos de la rieb se centranJuana_ramos6
 
Proyecto aula sede delicias cpe 47696
Proyecto aula sede delicias cpe 47696Proyecto aula sede delicias cpe 47696
Proyecto aula sede delicias cpe 47696piedad medina
 
Joption pane en java
Joption pane en javaJoption pane en java
Joption pane en javaRobert Wolf
 

Destacado (20)

Objective C clases y metodos
Objective C clases y metodosObjective C clases y metodos
Objective C clases y metodos
 
polimorfismo
polimorfismopolimorfismo
polimorfismo
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gio
 
Garficas de funciones trigonometricas
Garficas de funciones trigonometricasGarficas de funciones trigonometricas
Garficas de funciones trigonometricas
 
PROYECTOS TRANSVERSALES
PROYECTOS TRANSVERSALESPROYECTOS TRANSVERSALES
PROYECTOS TRANSVERSALES
 
Proyecto san antonio ok
Proyecto san antonio okProyecto san antonio ok
Proyecto san antonio ok
 
Gui
GuiGui
Gui
 
Programas de consola y jpa con net beans por gio
Programas de consola y jpa con net beans por gioProgramas de consola y jpa con net beans por gio
Programas de consola y jpa con net beans por gio
 
Apresentação 4
Apresentação 4Apresentação 4
Apresentação 4
 
Funciones de angulos dobles y multiples christian siavichay 2 c2
Funciones de angulos dobles y multiples  christian siavichay 2 c2Funciones de angulos dobles y multiples  christian siavichay 2 c2
Funciones de angulos dobles y multiples christian siavichay 2 c2
 
Programación
ProgramaciónProgramación
Programación
 
Rad47739 proyec cabaña actualok
Rad47739 proyec cabaña  actualokRad47739 proyec cabaña  actualok
Rad47739 proyec cabaña actualok
 
Proyecto secundino porras 1
Proyecto secundino porras 1Proyecto secundino porras 1
Proyecto secundino porras 1
 
Basico
BasicoBasico
Basico
 
Leer historia pasadas
Leer historia pasadasLeer historia pasadas
Leer historia pasadas
 
Proyecto sede ancon cpe 47750 actual
Proyecto sede ancon  cpe 47750 actualProyecto sede ancon  cpe 47750 actual
Proyecto sede ancon cpe 47750 actual
 
Proyecto aula sede delicias cpe 47696
Proyecto aula sede delicias cpe 47696Proyecto aula sede delicias cpe 47696
Proyecto aula sede delicias cpe 47696
 
Los propósitos de la rieb se centran
Los propósitos de la rieb se  centranLos propósitos de la rieb se  centran
Los propósitos de la rieb se centran
 
Proyecto aula sede delicias cpe 47696
Proyecto aula sede delicias cpe 47696Proyecto aula sede delicias cpe 47696
Proyecto aula sede delicias cpe 47696
 
Joption pane en java
Joption pane en javaJoption pane en java
Joption pane en java
 

Similar a Clases metodos y atributos

Programacion orientada a objetos 1
Programacion orientada a objetos 1Programacion orientada a objetos 1
Programacion orientada a objetos 1mellcv
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf202100941c
 
JAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxJAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxFamiliaAyluardo
 
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
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02Krizztiina Pacheko
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
 
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 - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosJosé Antonio Sandoval Acosta
 
Programacion orientada a objetos 2
Programacion orientada a objetos 2Programacion orientada a objetos 2
Programacion orientada a objetos 2mellcv
 
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 Clases metodos y atributos (20)

Programacion orientada a objetos 1
Programacion orientada a objetos 1Programacion orientada a objetos 1
Programacion orientada a objetos 1
 
Presentacion4
Presentacion4Presentacion4
Presentacion4
 
secme-23192.pdf
secme-23192.pdfsecme-23192.pdf
secme-23192.pdf
 
JAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxJAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptx
 
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
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
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
 
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOSJAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
JAVA ORIENTADO A OBJETOS - CLASES Y OBJETOS
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
1 -programacion_oo
1  -programacion_oo1  -programacion_oo
1 -programacion_oo
 
Guia poo
Guia pooGuia poo
Guia poo
 
JAVA OO - TEMA 01 - CLASES Y OBJETOS
JAVA OO - TEMA 01 - CLASES Y OBJETOSJAVA OO - TEMA 01 - CLASES Y OBJETOS
JAVA OO - TEMA 01 - CLASES Y OBJETOS
 
Clases
ClasesClases
Clases
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
 
Programacion orientada a objetos 2
Programacion orientada a objetos 2Programacion orientada a objetos 2
Programacion orientada a objetos 2
 
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 Robert Wolf

Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gioRobert Wolf
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gioRobert Wolf
 
Tema 14 imágenes en java por gio
Tema 14   imágenes en java por gioTema 14   imágenes en java por gio
Tema 14 imágenes en java por gioRobert Wolf
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gioRobert Wolf
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gioRobert Wolf
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gioRobert Wolf
 
Tema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfazTema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfazRobert Wolf
 
Tema 10 entrada y salida por gio
Tema 10   entrada y salida por gioTema 10   entrada y salida por gio
Tema 10 entrada y salida por gioRobert Wolf
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gioRobert Wolf
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gioRobert Wolf
 
Tema 8 entrada y salida por gio
Tema 8   entrada y salida por gioTema 8   entrada y salida por gio
Tema 8 entrada y salida por gioRobert Wolf
 
Tema 7 gui, swing y java beans por gio
Tema 7   gui, swing y java beans por gioTema 7   gui, swing y java beans por gio
Tema 7 gui, swing y java beans por gioRobert Wolf
 
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Tema 7   desarrollo de aplicaciones en java - lsia por gioTema 7   desarrollo de aplicaciones en java - lsia por gio
Tema 7 desarrollo de aplicaciones en java - lsia por gioRobert Wolf
 
Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gioRobert Wolf
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gioRobert Wolf
 
Tema 5 arreglos y cadenas por gio
Tema 5   arreglos y cadenas por gioTema 5   arreglos y cadenas por gio
Tema 5 arreglos y cadenas por gioRobert Wolf
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gioRobert Wolf
 

Más de Robert Wolf (20)

Tema6resumido
Tema6resumidoTema6resumido
Tema6resumido
 
Tema4 herencia
Tema4 herenciaTema4 herencia
Tema4 herencia
 
Tema 6
Tema 6Tema 6
Tema 6
 
Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gio
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gio
 
Tema 14 imágenes en java por gio
Tema 14   imágenes en java por gioTema 14   imágenes en java por gio
Tema 14 imágenes en java por gio
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gio
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gio
 
Tema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfazTema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfaz
 
Tema 10 entrada y salida por gio
Tema 10   entrada y salida por gioTema 10   entrada y salida por gio
Tema 10 entrada y salida por gio
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gio
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Tema 8 entrada y salida por gio
Tema 8   entrada y salida por gioTema 8   entrada y salida por gio
Tema 8 entrada y salida por gio
 
Tema 7 gui, swing y java beans por gio
Tema 7   gui, swing y java beans por gioTema 7   gui, swing y java beans por gio
Tema 7 gui, swing y java beans por gio
 
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Tema 7   desarrollo de aplicaciones en java - lsia por gioTema 7   desarrollo de aplicaciones en java - lsia por gio
Tema 7 desarrollo de aplicaciones en java - lsia por gio
 
Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gio
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gio
 
Tema 5 arreglos y cadenas por gio
Tema 5   arreglos y cadenas por gioTema 5   arreglos y cadenas por gio
Tema 5 arreglos y cadenas por gio
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gio
 

Clases metodos y atributos

  • 1. 1 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
  • 2. 2 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
  • 3. 3 Ciclo de vida de un objeto • Supuesta la definición de la clase NombreClase 1. Declaración de un objeto 2. Creación de una instancia 3. Utilización de la instancia NombreClase obj; // declaración obj= new NombreClase (); // declaración 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 • Entra en juego el GC NombreClase obj= new NombreClase (); { NombreClase obj2= obj; // declaración ....... } //Eliminación de una referencia obj= null; // Eliminación de la última referencia obj
  • 4. 4 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
  • 5. 5 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; } }
  • 6. 6 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
  • 7. 7 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; } }
  • 8. 8 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
  • 9. 9 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; } }
  • 10. 10 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;
  • 11. 11 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;
  • 12. 12 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 Instancia NombreClase obj obj2 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”); }
  • 13. 13 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)); }
  • 14. 14 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