SlideShare una empresa de Scribd logo
Programación Orientada a
Objetos en Java
Unidad 2
Clases y Objetos
2
Temario
 Clases
 Objetos
 Campos
 Métodos
 Encapsulamiento
 Propiedades
 Instanciación
 Constructores
3
OOP
 En Object-Oriented Programming
(OOP), o Programación Orientada a
Objetos, un programa está hecho de
clases, con sus campos y métodos
 La creación de un programa involucra
ensamblar objetos y hacerlos
interactuar entre ellos
4
Clases y Objetos
 Una clase describe un grupo de objetos que
comparten propiedades y métodos comunes
 Una clase es una plantilla que define qué forma
tienen los objetos de la clase
 Una clase se compone de:
 Información: campos (atributos, propiedades)
 Comportamiento: métodos (operaciones, funciones)
 Un objeto es una instancia de una clase
“Juan Pérez”
String
Ventana (tiempo de ejecución)
Ventana (tiempo de diseño)
Juan Pérez
Empleado
La Moneda
Casa
Sodimac
Empresa
Objeto
Clase
5
Definición de una Clase
class Circulo {
// campos
// métodos
// constructores
// main()
}
6
Campos
 Los objetos almacenan información en sus campos
 Existen dos tipos de campos: de instancia y static (de
clase)
 Campos de instancia
 Hay una copia de un campo de instancia por cada objeto de
la clase
 El campo de instancia es accesible a través del objeto al que
pertenece
 Campos static (de clase)
 Hay una única copia de un campo static en el sistema
(equivalente a lo que en otros lenguajes es una variable
global)
 El campo static es accesible a través de la clase (sin
necesidad de instanciar la clase)
7
Campos
class Circulo {
// campos
double radio = 5;
String color;
static int numeroCirculos = 0;
static final double PI = 3.1416;
// métodos
// constructores
// main( )
}
radio y color son variables de
instancia, hay una copia de ellas por
cada objeto Circulo
numeroCirculos y PI son variables
static, están sólo una vez en
memoria; PI además es constante
(final): no puede modificarse
8
Acceso a Campos
 Acceso a variables de instancia: se utiliza la
sintaxis "objeto."
Circulo c1 = new Circulo();
c1.radio = 5;
c1.color = "rojo";
// si c1 es null,
// se genera una excepción NullPointerException
 Acceso a variables static: se utiliza la sintaxis
"clase."
Circulo.numeroCirculos++;
System.out.println(Circulo.PI);
9
Métodos
 Instrucciones que operan sobre los datos de un objeto para
obtener resultados
 Tienen cero o más parámetros
 Pueden retornar un valor o pueden ser declarados void para
indicar que no retornan ningún valor
 Pueden ser de instancia o static:
 Un método de instancia se invoca sobre un objeto de la clase, al
cual tiene acceso mediante la palabra this (y sus variables de
instancia son accesibles de manera directa)
 Un método static no opera sobre un objeto de la clase, y la palabra
this no es válida en su interior
 Sintaxis
[static] <tipo retorno> <nombre método> (<tipo> parámetro1, ...)
{
// cuerpo del método
return <valor de retorno>;
}
10
Métodos
class Circulo {
// campos
double radio = 5;
String color;
static int numeroCirculos = 0;
static final double PI = 3.1416;
// métodos
double getCircunferencia() {
return getCircunferencia(radio);
}
static double getCircunferencia(double r) {
return 2 * r * PI;
}
// constructores
// main( )
}
Método de instancia, tiene acceso
directo a las variables de instancia del
objeto sobre el que se invoca
Método static, no tiene acceso
directo a variables de instancia
11
 Métodos de una clase pueden tener el mismo nombre pero
diferentes parámetros
 Cuando se invoca un método, el compilador compara el número
y tipo de los parámetros y determina qué método debe invocar
 Firma (signature) = nombre del método + lista de parámetros
 Ejemplo:
class Cuenta {
public void depositar(double monto) {
this.depositar(monto, "$");
}
public void depositar(double monto,
String moneda) {
// procesa el depósito
}
}
Sobrecarga (Overload) de Métodos
12
Acceso a Métodos
 Acceso a campos y métodos de instancia: se
utiliza la sintaxis "objeto."
Circulo c1 = new Circulo();
c1.radio = 5;
c1.color = "rojo";
double d = c1.getCircunferencia();
// Si c1 es null,
// se genera una excepción NullPointerException;
 Acceso a campos y métodos static: se utiliza
la sintaxis "clase."
Circulo.numeroCirculos++;
int n = Circulo.getNumeroCirculos();
System.out.println(Circulo.PI);
13
Encapsulamiento
 Gady Booch define al encapsulamiento “the process of
compartmentalizing the elements of an abstraction that
constitute its structure and behavior; encapsulation serves to
separate the contractual interface of an abstraction and its
implementation”
 La clase es el espacio donde se empaquetan atributos y
métodos
14
Modificadores de Acceso
 Nivel de acceso para miembros de clases (campos,
métodos, y clases anidadas)
 Public: miembro es accesible en cualquier lugar en que la
clase sea accesible
 Protected: miembro es accesible por subclases y clases del
mismo package
 Package (default): miembro es accesible por clases del
mismo package
 Private: miembro es accesible sólo al interior de la clase
 Nivel de acceso para clases e interfaces
 Public: clase/interfaz es accesible globalmente
 Package (default): clase/interfaz es accesible por clases del
mismo package
15
class Circulo {
// campos
private double radio = 5;
private String color;
private static int numeroCirculos = 0;
public static final double PI = 3.1416;
// métodos
// constructores
// main( )
}
 Recomendación: los campos siempre deben ser privados (a
menos que sean constantes)
Modificadores de Acceso
16
Propiedades
 En Java, las propiedades se definen por la existencia
de métodos getter y setter:
class Circulo {
void setRadio(double radio) { ... }
double getRadio() { ... }
double getCircunferencia() { ... }
}
 Las propiedades pueden basarse en el uso de
campos o no: la clase Circulo puede tener un campo
radio, pero probablemente no tenga un campo
circunferencia
 Las propiedades de una clase pueden ser
determinadas en ejecución mediante reflection (lo
que es utilizado por frameworks como JSP, JSF, JPA)
Propiedad radio
(read-write)
Propiedad
circunferencia
(read-only)
17
Instanciación y Referencias
 Los objetos se crean con el operador new, y se manejan
mediante referencias
 Los objetos se crean en el área de memoria dinámica
conocida como el heap
 Una referencia contiene la
dirección de un objeto (es
similar a los punteros de
otros lenguajes)
 Una asignación entre objetos
es una asignación de
referencias
 Circulo c1 = new Circulo();
 Circulo c2 = c1;
Stack Heap
c1
Memoria
c2
18
Paso de Parámetros
 En Java el paso de parámetros se
realiza "por valor"
 Argumentos de tipos primitivos
 Si un método modifica el valor de un
parámetro, este cambio sólo ocurre al interior
del método; al retornar el método, se mantiene
el valor original
 Argumentos de tipo referencia (objetos)
 Al retornar el método, la referencia pasada
como parámetro sigue referenciando al mismo
objeto; sin embargo, los campos del objeto
podrían haber sido modificados por el método
19
 Un constructor es un método especial invocado para
instanciar e inicializar un objeto de una clase
 Invocado con la sentencia new
 Tiene el mismo nombre que la clase
 Puede tener cero o más parámetros
 No tiene tipo de retorno, ni siquiera void
 Un constructor no público restringe el acceso a la creación
de objetos
 Si la clase no tiene ningún constructor, el sistema
provee un constructor default, sin parámetros
 Si la clase tiene algún constructor, debe usarse
alguno de los constructores definidos al instanciar la
clase (el sistema no provee un constructor default en
este caso)
Constructores
20
class Circulo {
...
// constructores
public Circulo() {
radio = 1;
}
public Circulo(double r) {
radio = r;
}
void f() {
Circulo c = new Circulo(30);
...
}
}
Ejemplo
21
 La palabra this puede ser utilizada en la
primera línea de un constructor para
invocar a otro constructor
class Circulo {
private double radio;
private static int numeroCirculos = 0;
Circulo(double radio) {
this.radio = radio;
Circulo.numeroCirculos++;
}
Circulo() {
this(10); // radio default: 10
}
}
Invocación entre Constructores
22
Resumen
 Una clase es una plantilla a partir de la cual se
instancian objetos
 Los objetos contienen información (en campos de
instancia y static) y comportamiento (en métodos de
instancia y static)
 Los miembros de instancia se utilizan con la sintaxis
"objeto."
 Los miembros static se utilizan con la sintaxis "clase."
 Una clase puede tener varios métodos con el mismo
nombre (sobrecarga), siempre que tengan diferentes
parámetros
23
Resumen
 Para instanciar una clase (crear un objeto) se utiliza
el operador new
 Los constructores son métodos especiales invocados
al instanciar una clase
 Los objetos se manejan a través de referencias
 La palabra this representa una referencia al objeto
sobre el cual se invoca un método de instancia
 Los modificadores de acceso controlan quién tiene
acceso a los miembros de una clase

Más contenido relacionado

Similar a Java2-Clases.ppt

UD2-ConceptosBasicos.pdf
UD2-ConceptosBasicos.pdfUD2-ConceptosBasicos.pdf
UD2-ConceptosBasicos.pdf
ChiquteRobledo
 
03 Oop
03   Oop03   Oop
03 Oop
Network Sens
 
Poo 1
Poo 1Poo 1
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Kositha Jimhiz G
 
Poo
PooPoo
Poo
rilara
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2
Axel
 
Clases y objetos en Java
Clases y objetos en JavaClases y objetos en Java
Clases y objetos en Java
Daniel Gomez Jaramillo
 
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
Angel Vázquez Patiño
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
Gloria Isabel Bautista Lasprilla
 
Clases metodos y atributos
Clases metodos y atributosClases metodos y atributos
Clases metodos y atributos
Robert Wolf
 
Poo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacionPoo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacion
jlmanmons
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
Antonio Palomares Sender
 
Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5
Andres Garcia Garcia
 
Net1 oop vbnet
Net1 oop vbnetNet1 oop vbnet
Net1 oop vbnet
jhordy2000
 
Tema5
Tema5Tema5
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
Renny Batista
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
ale8819
 
Recolección de basura
Recolección de basuraRecolección de basura
Recolección de basura
Manuel Alejandro Hernandez Sanchez
 
Programacion orientada a objetos 1
Programacion orientada a objetos 1Programacion orientada a objetos 1
Programacion orientada a objetos 1
mellcv
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
Uniminuto - San Francisco
 

Similar a Java2-Clases.ppt (20)

UD2-ConceptosBasicos.pdf
UD2-ConceptosBasicos.pdfUD2-ConceptosBasicos.pdf
UD2-ConceptosBasicos.pdf
 
03 Oop
03   Oop03   Oop
03 Oop
 
Poo 1
Poo 1Poo 1
Poo 1
 
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
 
Poo
PooPoo
Poo
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2
 
Clases y objetos en Java
Clases y objetos en JavaClases y objetos en Java
Clases y objetos en 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
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
Clases metodos y atributos
Clases metodos y atributosClases metodos y atributos
Clases metodos y atributos
 
Poo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacionPoo1conceptobasicoconinstanciacion
Poo1conceptobasicoconinstanciacion
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
 
Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5Introducción a la programación y la informática. Tema 5
Introducción a la programación y la informática. Tema 5
 
Net1 oop vbnet
Net1 oop vbnetNet1 oop vbnet
Net1 oop vbnet
 
Tema5
Tema5Tema5
Tema5
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Recolección de basura
Recolección de basuraRecolección de basura
Recolección de basura
 
Programacion orientada a objetos 1
Programacion orientada a objetos 1Programacion orientada a objetos 1
Programacion orientada a objetos 1
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 

Más de erosslo

tema1.ppt
tema1.ppttema1.ppt
tema1.ppt
erosslo
 
kruskal.ppt
kruskal.pptkruskal.ppt
kruskal.ppt
erosslo
 
[Robert_B._Cialdini]_Influence__The_Psychology_of_(z-lib.org).pdf
[Robert_B._Cialdini]_Influence__The_Psychology_of_(z-lib.org).pdf[Robert_B._Cialdini]_Influence__The_Psychology_of_(z-lib.org).pdf
[Robert_B._Cialdini]_Influence__The_Psychology_of_(z-lib.org).pdf
erosslo
 
Koldijk et. al - 2018 - Detecting Work Stress.pdf
Koldijk et. al - 2018 - Detecting Work Stress.pdfKoldijk et. al - 2018 - Detecting Work Stress.pdf
Koldijk et. al - 2018 - Detecting Work Stress.pdf
erosslo
 
Emotion semantics show both cultural variation anduniversal structure.pdf
Emotion semantics show both cultural variation anduniversal structure.pdfEmotion semantics show both cultural variation anduniversal structure.pdf
Emotion semantics show both cultural variation anduniversal structure.pdf
erosslo
 
Predicting longterm-dynamics-of-soil-salinity-and-sodicity-on-a-global-scale2...
Predicting longterm-dynamics-of-soil-salinity-and-sodicity-on-a-global-scale2...Predicting longterm-dynamics-of-soil-salinity-and-sodicity-on-a-global-scale2...
Predicting longterm-dynamics-of-soil-salinity-and-sodicity-on-a-global-scale2...
erosslo
 

Más de erosslo (6)

tema1.ppt
tema1.ppttema1.ppt
tema1.ppt
 
kruskal.ppt
kruskal.pptkruskal.ppt
kruskal.ppt
 
[Robert_B._Cialdini]_Influence__The_Psychology_of_(z-lib.org).pdf
[Robert_B._Cialdini]_Influence__The_Psychology_of_(z-lib.org).pdf[Robert_B._Cialdini]_Influence__The_Psychology_of_(z-lib.org).pdf
[Robert_B._Cialdini]_Influence__The_Psychology_of_(z-lib.org).pdf
 
Koldijk et. al - 2018 - Detecting Work Stress.pdf
Koldijk et. al - 2018 - Detecting Work Stress.pdfKoldijk et. al - 2018 - Detecting Work Stress.pdf
Koldijk et. al - 2018 - Detecting Work Stress.pdf
 
Emotion semantics show both cultural variation anduniversal structure.pdf
Emotion semantics show both cultural variation anduniversal structure.pdfEmotion semantics show both cultural variation anduniversal structure.pdf
Emotion semantics show both cultural variation anduniversal structure.pdf
 
Predicting longterm-dynamics-of-soil-salinity-and-sodicity-on-a-global-scale2...
Predicting longterm-dynamics-of-soil-salinity-and-sodicity-on-a-global-scale2...Predicting longterm-dynamics-of-soil-salinity-and-sodicity-on-a-global-scale2...
Predicting longterm-dynamics-of-soil-salinity-and-sodicity-on-a-global-scale2...
 

Último

Rodríguez, C. - La batalla campal en la Edad Media [2018].pdf
Rodríguez, C. - La batalla campal en la Edad Media [2018].pdfRodríguez, C. - La batalla campal en la Edad Media [2018].pdf
Rodríguez, C. - La batalla campal en la Edad Media [2018].pdf
frank0071
 
Fijación, transporte en camilla e inmovilización de columna cervical II​.pptx
Fijación, transporte en camilla e inmovilización de columna cervical II​.pptxFijación, transporte en camilla e inmovilización de columna cervical II​.pptx
Fijación, transporte en camilla e inmovilización de columna cervical II​.pptx
janetccarita
 
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALESCAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
dianamichelleolivier
 
Priones, definiciones y la enfermedad de las vacas locas
Priones, definiciones y la enfermedad de las vacas locasPriones, definiciones y la enfermedad de las vacas locas
Priones, definiciones y la enfermedad de las vacas locas
alexandrajunchaya3
 
HÁBITAT DEL DESIERTO CALIDO PRESENTACIÓN
HÁBITAT DEL DESIERTO CALIDO PRESENTACIÓNHÁBITAT DEL DESIERTO CALIDO PRESENTACIÓN
HÁBITAT DEL DESIERTO CALIDO PRESENTACIÓN
candelaalonso7
 
Los objetos de aprendizaje enfocados en las caracteristicas primcipales
Los objetos de aprendizaje enfocados en las caracteristicas primcipalesLos objetos de aprendizaje enfocados en las caracteristicas primcipales
Los objetos de aprendizaje enfocados en las caracteristicas primcipales
DanielNava80
 
Reacciones Químicas en el cuerpo humano.pptx
Reacciones Químicas en el cuerpo humano.pptxReacciones Químicas en el cuerpo humano.pptx
Reacciones Químicas en el cuerpo humano.pptx
PamelaKim10
 
Cardiopatias cianogenas con hipoflujo pulmonar.pptx
Cardiopatias cianogenas con hipoflujo pulmonar.pptxCardiopatias cianogenas con hipoflujo pulmonar.pptx
Cardiopatias cianogenas con hipoflujo pulmonar.pptx
ELVISGLEN
 
MÉTODO SIMPLEX EN PROBLEMAS DE MAXIMIZACIÓN Y MINIMIZACIÓN.pptx
MÉTODO SIMPLEX EN PROBLEMAS DE MAXIMIZACIÓN Y MINIMIZACIÓN.pptxMÉTODO SIMPLEX EN PROBLEMAS DE MAXIMIZACIÓN Y MINIMIZACIÓN.pptx
MÉTODO SIMPLEX EN PROBLEMAS DE MAXIMIZACIÓN Y MINIMIZACIÓN.pptx
KEIKOFABIANAZETATEMO
 
Virus de la Inmunodeficiencia humana (VIH).pdf
Virus de la Inmunodeficiencia humana (VIH).pdfVirus de la Inmunodeficiencia humana (VIH).pdf
Virus de la Inmunodeficiencia humana (VIH).pdf
melaniepalomino1502
 
Embarazo postermino - UptDate actualizado
Embarazo postermino - UptDate actualizadoEmbarazo postermino - UptDate actualizado
Embarazo postermino - UptDate actualizado
ANtony MV
 
7mo básico Magnitudes y unidades de medida 2024.pptx
7mo básico Magnitudes y unidades de medida 2024.pptx7mo básico Magnitudes y unidades de medida 2024.pptx
7mo básico Magnitudes y unidades de medida 2024.pptx
JocelynCristinaSaldi
 
explorando los sistemas mixtos o de transicion
explorando los sistemas mixtos o de transicionexplorando los sistemas mixtos o de transicion
explorando los sistemas mixtos o de transicion
eyusxqmcgrlzirabeh
 
1891 - Primera discusión semicientífica sobre Una Nave Espacial Propulsada po...
1891 - Primera discusión semicientífica sobre Una Nave Espacial Propulsada po...1891 - Primera discusión semicientífica sobre Una Nave Espacial Propulsada po...
1891 - Primera discusión semicientífica sobre Una Nave Espacial Propulsada po...
Champs Elysee Roldan
 
Cardiología.pptx/Presentación sobre la introducción a la cardiología
Cardiología.pptx/Presentación sobre la introducción a la cardiologíaCardiología.pptx/Presentación sobre la introducción a la cardiología
Cardiología.pptx/Presentación sobre la introducción a la cardiología
Jtriv22
 
geologia de venezuela. TEMA PRECAMBRICO.pdf
geologia de venezuela. TEMA PRECAMBRICO.pdfgeologia de venezuela. TEMA PRECAMBRICO.pdf
geologia de venezuela. TEMA PRECAMBRICO.pdf
DanielaAlvarez728528
 
Los. Ácidos Nucleicos y Nucleótidos.pptx
Los. Ácidos Nucleicos y Nucleótidos.pptxLos. Ácidos Nucleicos y Nucleótidos.pptx
Los. Ácidos Nucleicos y Nucleótidos.pptx
DayanaQuispe28
 
Bianchi-2005-Historia-social-del-mundo-occidental.pdf
Bianchi-2005-Historia-social-del-mundo-occidental.pdfBianchi-2005-Historia-social-del-mundo-occidental.pdf
Bianchi-2005-Historia-social-del-mundo-occidental.pdf
perezcandela938
 
TEORIAS DE LA EVOLUCION LAMARCK Y DARWIN
TEORIAS DE LA EVOLUCION LAMARCK Y DARWINTEORIAS DE LA EVOLUCION LAMARCK Y DARWIN
TEORIAS DE LA EVOLUCION LAMARCK Y DARWIN
DesignDreams1
 
Controles Militares espe sobre (1).pptx
Controles Militares espe sobre  (1).pptxControles Militares espe sobre  (1).pptx
Controles Militares espe sobre (1).pptx
DieguinhoSalazar
 

Último (20)

Rodríguez, C. - La batalla campal en la Edad Media [2018].pdf
Rodríguez, C. - La batalla campal en la Edad Media [2018].pdfRodríguez, C. - La batalla campal en la Edad Media [2018].pdf
Rodríguez, C. - La batalla campal en la Edad Media [2018].pdf
 
Fijación, transporte en camilla e inmovilización de columna cervical II​.pptx
Fijación, transporte en camilla e inmovilización de columna cervical II​.pptxFijación, transporte en camilla e inmovilización de columna cervical II​.pptx
Fijación, transporte en camilla e inmovilización de columna cervical II​.pptx
 
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALESCAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
CAMBIOS INSTITUCIONALES Y NORMATIVOS. CIENCIAS SOCIALES
 
Priones, definiciones y la enfermedad de las vacas locas
Priones, definiciones y la enfermedad de las vacas locasPriones, definiciones y la enfermedad de las vacas locas
Priones, definiciones y la enfermedad de las vacas locas
 
HÁBITAT DEL DESIERTO CALIDO PRESENTACIÓN
HÁBITAT DEL DESIERTO CALIDO PRESENTACIÓNHÁBITAT DEL DESIERTO CALIDO PRESENTACIÓN
HÁBITAT DEL DESIERTO CALIDO PRESENTACIÓN
 
Los objetos de aprendizaje enfocados en las caracteristicas primcipales
Los objetos de aprendizaje enfocados en las caracteristicas primcipalesLos objetos de aprendizaje enfocados en las caracteristicas primcipales
Los objetos de aprendizaje enfocados en las caracteristicas primcipales
 
Reacciones Químicas en el cuerpo humano.pptx
Reacciones Químicas en el cuerpo humano.pptxReacciones Químicas en el cuerpo humano.pptx
Reacciones Químicas en el cuerpo humano.pptx
 
Cardiopatias cianogenas con hipoflujo pulmonar.pptx
Cardiopatias cianogenas con hipoflujo pulmonar.pptxCardiopatias cianogenas con hipoflujo pulmonar.pptx
Cardiopatias cianogenas con hipoflujo pulmonar.pptx
 
MÉTODO SIMPLEX EN PROBLEMAS DE MAXIMIZACIÓN Y MINIMIZACIÓN.pptx
MÉTODO SIMPLEX EN PROBLEMAS DE MAXIMIZACIÓN Y MINIMIZACIÓN.pptxMÉTODO SIMPLEX EN PROBLEMAS DE MAXIMIZACIÓN Y MINIMIZACIÓN.pptx
MÉTODO SIMPLEX EN PROBLEMAS DE MAXIMIZACIÓN Y MINIMIZACIÓN.pptx
 
Virus de la Inmunodeficiencia humana (VIH).pdf
Virus de la Inmunodeficiencia humana (VIH).pdfVirus de la Inmunodeficiencia humana (VIH).pdf
Virus de la Inmunodeficiencia humana (VIH).pdf
 
Embarazo postermino - UptDate actualizado
Embarazo postermino - UptDate actualizadoEmbarazo postermino - UptDate actualizado
Embarazo postermino - UptDate actualizado
 
7mo básico Magnitudes y unidades de medida 2024.pptx
7mo básico Magnitudes y unidades de medida 2024.pptx7mo básico Magnitudes y unidades de medida 2024.pptx
7mo básico Magnitudes y unidades de medida 2024.pptx
 
explorando los sistemas mixtos o de transicion
explorando los sistemas mixtos o de transicionexplorando los sistemas mixtos o de transicion
explorando los sistemas mixtos o de transicion
 
1891 - Primera discusión semicientífica sobre Una Nave Espacial Propulsada po...
1891 - Primera discusión semicientífica sobre Una Nave Espacial Propulsada po...1891 - Primera discusión semicientífica sobre Una Nave Espacial Propulsada po...
1891 - Primera discusión semicientífica sobre Una Nave Espacial Propulsada po...
 
Cardiología.pptx/Presentación sobre la introducción a la cardiología
Cardiología.pptx/Presentación sobre la introducción a la cardiologíaCardiología.pptx/Presentación sobre la introducción a la cardiología
Cardiología.pptx/Presentación sobre la introducción a la cardiología
 
geologia de venezuela. TEMA PRECAMBRICO.pdf
geologia de venezuela. TEMA PRECAMBRICO.pdfgeologia de venezuela. TEMA PRECAMBRICO.pdf
geologia de venezuela. TEMA PRECAMBRICO.pdf
 
Los. Ácidos Nucleicos y Nucleótidos.pptx
Los. Ácidos Nucleicos y Nucleótidos.pptxLos. Ácidos Nucleicos y Nucleótidos.pptx
Los. Ácidos Nucleicos y Nucleótidos.pptx
 
Bianchi-2005-Historia-social-del-mundo-occidental.pdf
Bianchi-2005-Historia-social-del-mundo-occidental.pdfBianchi-2005-Historia-social-del-mundo-occidental.pdf
Bianchi-2005-Historia-social-del-mundo-occidental.pdf
 
TEORIAS DE LA EVOLUCION LAMARCK Y DARWIN
TEORIAS DE LA EVOLUCION LAMARCK Y DARWINTEORIAS DE LA EVOLUCION LAMARCK Y DARWIN
TEORIAS DE LA EVOLUCION LAMARCK Y DARWIN
 
Controles Militares espe sobre (1).pptx
Controles Militares espe sobre  (1).pptxControles Militares espe sobre  (1).pptx
Controles Militares espe sobre (1).pptx
 

Java2-Clases.ppt

  • 1. Programación Orientada a Objetos en Java Unidad 2 Clases y Objetos
  • 2. 2 Temario  Clases  Objetos  Campos  Métodos  Encapsulamiento  Propiedades  Instanciación  Constructores
  • 3. 3 OOP  En Object-Oriented Programming (OOP), o Programación Orientada a Objetos, un programa está hecho de clases, con sus campos y métodos  La creación de un programa involucra ensamblar objetos y hacerlos interactuar entre ellos
  • 4. 4 Clases y Objetos  Una clase describe un grupo de objetos que comparten propiedades y métodos comunes  Una clase es una plantilla que define qué forma tienen los objetos de la clase  Una clase se compone de:  Información: campos (atributos, propiedades)  Comportamiento: métodos (operaciones, funciones)  Un objeto es una instancia de una clase “Juan Pérez” String Ventana (tiempo de ejecución) Ventana (tiempo de diseño) Juan Pérez Empleado La Moneda Casa Sodimac Empresa Objeto Clase
  • 5. 5 Definición de una Clase class Circulo { // campos // métodos // constructores // main() }
  • 6. 6 Campos  Los objetos almacenan información en sus campos  Existen dos tipos de campos: de instancia y static (de clase)  Campos de instancia  Hay una copia de un campo de instancia por cada objeto de la clase  El campo de instancia es accesible a través del objeto al que pertenece  Campos static (de clase)  Hay una única copia de un campo static en el sistema (equivalente a lo que en otros lenguajes es una variable global)  El campo static es accesible a través de la clase (sin necesidad de instanciar la clase)
  • 7. 7 Campos class Circulo { // campos double radio = 5; String color; static int numeroCirculos = 0; static final double PI = 3.1416; // métodos // constructores // main( ) } radio y color son variables de instancia, hay una copia de ellas por cada objeto Circulo numeroCirculos y PI son variables static, están sólo una vez en memoria; PI además es constante (final): no puede modificarse
  • 8. 8 Acceso a Campos  Acceso a variables de instancia: se utiliza la sintaxis "objeto." Circulo c1 = new Circulo(); c1.radio = 5; c1.color = "rojo"; // si c1 es null, // se genera una excepción NullPointerException  Acceso a variables static: se utiliza la sintaxis "clase." Circulo.numeroCirculos++; System.out.println(Circulo.PI);
  • 9. 9 Métodos  Instrucciones que operan sobre los datos de un objeto para obtener resultados  Tienen cero o más parámetros  Pueden retornar un valor o pueden ser declarados void para indicar que no retornan ningún valor  Pueden ser de instancia o static:  Un método de instancia se invoca sobre un objeto de la clase, al cual tiene acceso mediante la palabra this (y sus variables de instancia son accesibles de manera directa)  Un método static no opera sobre un objeto de la clase, y la palabra this no es válida en su interior  Sintaxis [static] <tipo retorno> <nombre método> (<tipo> parámetro1, ...) { // cuerpo del método return <valor de retorno>; }
  • 10. 10 Métodos class Circulo { // campos double radio = 5; String color; static int numeroCirculos = 0; static final double PI = 3.1416; // métodos double getCircunferencia() { return getCircunferencia(radio); } static double getCircunferencia(double r) { return 2 * r * PI; } // constructores // main( ) } Método de instancia, tiene acceso directo a las variables de instancia del objeto sobre el que se invoca Método static, no tiene acceso directo a variables de instancia
  • 11. 11  Métodos de una clase pueden tener el mismo nombre pero diferentes parámetros  Cuando se invoca un método, el compilador compara el número y tipo de los parámetros y determina qué método debe invocar  Firma (signature) = nombre del método + lista de parámetros  Ejemplo: class Cuenta { public void depositar(double monto) { this.depositar(monto, "$"); } public void depositar(double monto, String moneda) { // procesa el depósito } } Sobrecarga (Overload) de Métodos
  • 12. 12 Acceso a Métodos  Acceso a campos y métodos de instancia: se utiliza la sintaxis "objeto." Circulo c1 = new Circulo(); c1.radio = 5; c1.color = "rojo"; double d = c1.getCircunferencia(); // Si c1 es null, // se genera una excepción NullPointerException;  Acceso a campos y métodos static: se utiliza la sintaxis "clase." Circulo.numeroCirculos++; int n = Circulo.getNumeroCirculos(); System.out.println(Circulo.PI);
  • 13. 13 Encapsulamiento  Gady Booch define al encapsulamiento “the process of compartmentalizing the elements of an abstraction that constitute its structure and behavior; encapsulation serves to separate the contractual interface of an abstraction and its implementation”  La clase es el espacio donde se empaquetan atributos y métodos
  • 14. 14 Modificadores de Acceso  Nivel de acceso para miembros de clases (campos, métodos, y clases anidadas)  Public: miembro es accesible en cualquier lugar en que la clase sea accesible  Protected: miembro es accesible por subclases y clases del mismo package  Package (default): miembro es accesible por clases del mismo package  Private: miembro es accesible sólo al interior de la clase  Nivel de acceso para clases e interfaces  Public: clase/interfaz es accesible globalmente  Package (default): clase/interfaz es accesible por clases del mismo package
  • 15. 15 class Circulo { // campos private double radio = 5; private String color; private static int numeroCirculos = 0; public static final double PI = 3.1416; // métodos // constructores // main( ) }  Recomendación: los campos siempre deben ser privados (a menos que sean constantes) Modificadores de Acceso
  • 16. 16 Propiedades  En Java, las propiedades se definen por la existencia de métodos getter y setter: class Circulo { void setRadio(double radio) { ... } double getRadio() { ... } double getCircunferencia() { ... } }  Las propiedades pueden basarse en el uso de campos o no: la clase Circulo puede tener un campo radio, pero probablemente no tenga un campo circunferencia  Las propiedades de una clase pueden ser determinadas en ejecución mediante reflection (lo que es utilizado por frameworks como JSP, JSF, JPA) Propiedad radio (read-write) Propiedad circunferencia (read-only)
  • 17. 17 Instanciación y Referencias  Los objetos se crean con el operador new, y se manejan mediante referencias  Los objetos se crean en el área de memoria dinámica conocida como el heap  Una referencia contiene la dirección de un objeto (es similar a los punteros de otros lenguajes)  Una asignación entre objetos es una asignación de referencias  Circulo c1 = new Circulo();  Circulo c2 = c1; Stack Heap c1 Memoria c2
  • 18. 18 Paso de Parámetros  En Java el paso de parámetros se realiza "por valor"  Argumentos de tipos primitivos  Si un método modifica el valor de un parámetro, este cambio sólo ocurre al interior del método; al retornar el método, se mantiene el valor original  Argumentos de tipo referencia (objetos)  Al retornar el método, la referencia pasada como parámetro sigue referenciando al mismo objeto; sin embargo, los campos del objeto podrían haber sido modificados por el método
  • 19. 19  Un constructor es un método especial invocado para instanciar e inicializar un objeto de una clase  Invocado con la sentencia new  Tiene el mismo nombre que la clase  Puede tener cero o más parámetros  No tiene tipo de retorno, ni siquiera void  Un constructor no público restringe el acceso a la creación de objetos  Si la clase no tiene ningún constructor, el sistema provee un constructor default, sin parámetros  Si la clase tiene algún constructor, debe usarse alguno de los constructores definidos al instanciar la clase (el sistema no provee un constructor default en este caso) Constructores
  • 20. 20 class Circulo { ... // constructores public Circulo() { radio = 1; } public Circulo(double r) { radio = r; } void f() { Circulo c = new Circulo(30); ... } } Ejemplo
  • 21. 21  La palabra this puede ser utilizada en la primera línea de un constructor para invocar a otro constructor class Circulo { private double radio; private static int numeroCirculos = 0; Circulo(double radio) { this.radio = radio; Circulo.numeroCirculos++; } Circulo() { this(10); // radio default: 10 } } Invocación entre Constructores
  • 22. 22 Resumen  Una clase es una plantilla a partir de la cual se instancian objetos  Los objetos contienen información (en campos de instancia y static) y comportamiento (en métodos de instancia y static)  Los miembros de instancia se utilizan con la sintaxis "objeto."  Los miembros static se utilizan con la sintaxis "clase."  Una clase puede tener varios métodos con el mismo nombre (sobrecarga), siempre que tengan diferentes parámetros
  • 23. 23 Resumen  Para instanciar una clase (crear un objeto) se utiliza el operador new  Los constructores son métodos especiales invocados al instanciar una clase  Los objetos se manejan a través de referencias  La palabra this representa una referencia al objeto sobre el cual se invoca un método de instancia  Los modificadores de acceso controlan quién tiene acceso a los miembros de una clase