SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
Métodos y constructores
La palabra reservada this y los métodos "getters" y "setters"
En Java se utiliza la palabra reservada this para denotar desde el interior de un objeto una referencia al propio objeto. Si tenemos el objeto pedro de la
clase Persona, entonces pedro.this es el mismo objeto pedro. this tiene varios usos y en esta sección veremos una de sus aplicaciones más comunes.
Cuando los atributos son privados, como en el caso de saldo y numero, entonces se codifican los métodos getSaldo() y getNumero() para que otros
objetos tengan acceso a su valor. A este tipo de métodos se les conoce como getters. Si además queremos que los otros objetos también puedan
modificar el valor de estos atributos, entonces usamos los métodos setters, que en este caso son setSaldo() y setNumero():
Nótese que para diferenciar entre el valor enviado como parámetro y el nombre del atributo usamos s y num,
respectivamente. Declarar los atributos como privados permite encapsular los datos del objeto.
El encapsulamiento sirve para proteger los datos de los objetos y se logra declarando los atributos de una clase como private
y codificando métodos especiales para controlar el acceso. La manera de acceder a los atributos desde afuera de la clase es
por medio de los métodos getter y la manera de modificar los atributos desde afuera de la clase es usando los métodos
setter.
Como el encapsulamiento es una práctica común, muchos ambientes de desarrollo orientado a objetos codifican
automáticamente los métodos getters y setters con las siguientes reglas:
1. Tanto getters como setters son públicos.
2. Los getters no reciben parámetros y el tipo de dato que regresan es el mismo que el del atributo correspondiente. Su
nombre comienza con get seguido del nombre del atributo pero iniciando con mayúscula y regresan el valor del atributo.
Por ejemplo:
• 3. Los setters reciben como parámetro el mismo tipo de dato que el del atributo. El nombre de los métodos setters se
construye de forma análoga a la de los getters, pero iniciando con la palabra set, y asignan al atributo el valor del parámetro
recibido. El parámetro recibido tiene el mismo nombre que el atributo. Para diferenciar entre el valor enviado como parámetro y
el nombre del atributo se utiliza la palabra this, de tal forma que this.nombreAtributo se refiere al atributo del objeto. Por
ejemplo:
En general, los atributos de una clase se declaran como privados y se accede a estos por medio de los métodos setters y getters.
Sobrecarga de métodos
La sobrecarga es definir dos o más métodos con el mismo nombre, pero con parámetros diferentes por cantidad o tipo. El objetivo
de la sobrecarga es reducir el número de identificadores distintos para una misma acción pero con matices que la diferencian.
La sobrecarga se puede realizar tanto en métodos generales, como en constructores. La sobrecarga es un polimorfismo estático,
ya que es el compilador quien resuelve el conflicto del método a referenciar.
Si definimos un constructor con parámetros, el constructor sin parámetros deja de estar disponible; así que, si nos interesa, se
debe definir para su utilización. Como ejemplo añadimos sobrecarga a los constructores de la clase Punto:
Los métodos constructores
Un constructor es un método especial, que se invoca al momento de crear un objeto, es decir, cuando se instancia la
clase. El método constructor tiene exactamente el mismo nombre que el de la clase que construye. Por ejemplo:
Los métodos constructores tienen la tarea de dejar al objeto listo para su uso. Por ejemplo, en el reloj, el constructor
debería por lo menos inicializar la hora a las 00:00:00. Además de la inicialización de variables (incluyendo el alojamiento
de memoria dinámico para éstas), el constructor debe encargarse de crear los objetos que forman parte del objeto.
Todas las clases tienen un constructor por omisión, con el cuerpo vacío y sin parámetros. El constructor por omisión
siempre existe y evita problemas cuando no se definen explícitamente constructores en una clase. Definamos un
constructor para la clase Cuenta:
Ahora, para construir un objeto de la clase Cuenta será necesario proporcionar los datos de la cuenta por medio de los
parámetros del constructor. Por ejemplo, se crea el objeto cuentaCredito, desde la clase Principal, definiendo desde ese
momento que dicha cuenta esté a nombre de Pedro Sánchez, con saldo de 1500, número de cuenta 244513 e indicando
que es una cuenta de crédito. Otro objeto cuentaDebito puede crearse a nombre de Pablo García, con saldo de 7800,
número de cuenta 273516 e indicando que es una cuenta de débito. Para lograr lo anterior, hacemos lo siguiente:
This en los métodos constructores
La palabra reservada this también es útil para dar el mismo nombre de los atributos a los parámetros que recibe un método
constructor. Enseguida presentamos el código del constructor de la clase Cuenta utilizando la palabra this para indicar que se trata
del atributo de la clase:
Al utilizar this.nombreAtributo, evitamos las ambigüedades cuando los parámetros tienen el mismo nombre que los atributos.
Varios constructores en la misma clase
Es posible definir múltiples constructores para una misma clase; los cuales representan modos diferentes de inicializar un objeto. Se diferencian entre sí
por los parámetros que reciben. A continuación presentamos la clase Reloj, la cual tiene un método constructor sin parámetros que inicializa los atributos
con cero. Tiene además el método visualizar(), el cual despliega la hora en pantalla, el método tic() que incrementa la hora actual en un segundo y define
el comportamiento del reloj cada vez que se oye un "tic" y el método ponerALas(), que pone el reloj a cierta hora, minuto y segundo, de acuerdo con los
valores que recibe en sus parámetros:
Ahora tenemos la clase principal PruebaReloj, en la que se crea un objeto de la clase Reloj y se hace uso de sus métodos:
El resultado de este programa es:
Ahora pondremos un constructor adicional en la clase Reloj, de tal forma que la clase tenga un constructor sin parámetros y otro con parámetros:
En la clase PruebaReloj creamos dos relojes, r1 y r2. Como no se usan parámetros al crear el objeto r1, la clase usa su primer constructor. Al
crear r2 se usa el segundo constructor debido a que se incluyen los parámetros:
La salida de este programa es la siguiente
Objetos dentro de objetos
La propiedad de construir objetos que contienen a su vez otros más es una de las características más destacadas de la POO, pues promueve la
versatilidad en el diseño de las clases.
Agreguemos a nuestro ejemplo de la clase Reloj la clase ContadorCiclico, cuyos objetos se caracterizan por tener una cuenta actual y una cuenta
máxima. Así, por ejemplo, el contador cíclico de un minutero tiene 60 como cuenta máxima, mientras que el de la hora tiene 12. El método incrementar()
incrementa en uno la cuenta del contador cíclico y reinicia la cuenta si se llega a la cuenta máxima:
Modifiquemos la clase Reloj para que tenga contadores
cíclicos. Ahora la clase Reloj tiene atributos que son a
su vez objetos. Los atributos de un objeto, que son a
su vez objetos, se crean normalmente en el método
constructor, que es lo más adecuado para que el objeto
que se está creando se pueda usar inmediatamente.
En el constructor de la clase Reloj se crean los
contadores que marcan la hora (h), el minuto (m) y el
segundo (s). Obsérvese que el constructor de la clase
ContadorCiclico requiere como parámetro la cuenta
máxima:
Recordemos el método anterior para incrementar la cuenta del reloj en un segundo:
y comparémoslo con el nuevo, que usa tres objetos de clase ContadorCiclico:
Este último es un claro ejemplo de la utilidad de la POO para hacer código más fácil de leer. La instrucción s.incrementar() invoca al método de
la clase ContadorCiclico que incrementa la cuenta. Además, regresa un entero que indica la cuenta actual. Luego, la expresión s.incrementar()
== 0 compara la cuenta actual del segundero con cero: si es cero, entonces incrementa la cuenta del minutero que, a su vez, la compara con
cero. La hora se incrementa únicamente cuando la cuenta del minutero y del segundero son cero. Con este nuevo código, el método tic() en
Reloj no incluye el comportamiento de los contadores cíclicos, sino solamente el comportamiento de un Reloj interactuando con sus contadores
internos. El comportamiento de los contadores cíclicos se codifica aparte.
Otra característica importante de los objetos es su facultad de desplegar su contenido en forma de texto. Esto se codifica en un método que se
llama toString(), el cual siempre debe regresar una cadena de caracteres. Se dice que el método toString() proporciona una representación del
objeto en una cadena de caracteres, es decir, en un String o texto. Observemos el método toString() de la clase reloj:
Este método concatena los valores de la cuenta de cada contador cíclico de forma que da la
hora, el minuto y el segundo separados por dos puntos, es decir, h:m:s.

Contenu connexe

Similaire à La palabra reservada this y los métodos "getters" y "setters"

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
 
Proyecto en android completado
Proyecto en android completadoProyecto en android completado
Proyecto en android completadoKai Exo
 
Variables y metodos de instancia
Variables y metodos de instanciaVariables y metodos de instancia
Variables y metodos de instanciaRobert Wolf
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfSantiagoValenzuela24
 
Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12jack_corvil
 
Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en cDiego Maxdj Chicaiza
 
Tarea 5
Tarea 5Tarea 5
Tarea 5ar qb
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1Rokr02
 
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion coleccionesluis freddy
 
Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......SaulSalinasNeri
 
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...David Zapateria Besteiro
 
Manual de macros2 pre
Manual de macros2 preManual de macros2 pre
Manual de macros2 prejtk1
 
Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4K Manuel TN
 

Similaire à La palabra reservada this y los métodos "getters" y "setters" (20)

Leguaje de programacion C#
Leguaje de programacion C#Leguaje de programacion C#
Leguaje de programacion C#
 
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()
 
Odaliz presentacion
Odaliz presentacionOdaliz presentacion
Odaliz presentacion
 
Proyecto en android completado
Proyecto en android completadoProyecto en android completado
Proyecto en android completado
 
8.clases y objetos en c++
8.clases y objetos en c++8.clases y objetos en c++
8.clases y objetos en c++
 
Variables y metodos de instancia
Variables y metodos de instanciaVariables y metodos de instancia
Variables y metodos de instancia
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdf
 
Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12
 
1 clases y_objetos (2)
1 clases y_objetos (2)1 clases y_objetos (2)
1 clases y_objetos (2)
 
Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en c
 
Tarea 5
Tarea 5Tarea 5
Tarea 5
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
 
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
3 desarollo manejo datos capitulo 4 -01 introduccion colecciones
 
03 Oop
03   Oop03   Oop
03 Oop
 
Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......
 
1 clases y objetos
1 clases y objetos1 clases y objetos
1 clases y objetos
 
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
 
Excel con macros
Excel con macrosExcel con macros
Excel con macros
 
Manual de macros2 pre
Manual de macros2 preManual de macros2 pre
Manual de macros2 pre
 
Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4
 

Dernier

Diseño Universal de Aprendizaje en Nuevos Escenarios JS2 Ccesa007.pdf
Diseño Universal de Aprendizaje en Nuevos Escenarios  JS2  Ccesa007.pdfDiseño Universal de Aprendizaje en Nuevos Escenarios  JS2  Ccesa007.pdf
Diseño Universal de Aprendizaje en Nuevos Escenarios JS2 Ccesa007.pdfDemetrio Ccesa Rayme
 
PLAN ANUAL DE TUTORIA PARA SEGUNDO AÑO DE SECUNDARIA
PLAN ANUAL DE TUTORIA PARA  SEGUNDO AÑO DE SECUNDARIAPLAN ANUAL DE TUTORIA PARA  SEGUNDO AÑO DE SECUNDARIA
PLAN ANUAL DE TUTORIA PARA SEGUNDO AÑO DE SECUNDARIAzullycelestinoparede
 
Santa Criz de Eslava, la más monumental de las ciudades romanas de Navarra
Santa Criz de Eslava, la más monumental de las ciudades romanas de NavarraSanta Criz de Eslava, la más monumental de las ciudades romanas de Navarra
Santa Criz de Eslava, la más monumental de las ciudades romanas de NavarraJavier Andreu
 
Escucha tu Cerebro en Nuevos Escenarios PE3 Ccesa007.pdf
Escucha tu Cerebro en Nuevos Escenarios  PE3  Ccesa007.pdfEscucha tu Cerebro en Nuevos Escenarios  PE3  Ccesa007.pdf
Escucha tu Cerebro en Nuevos Escenarios PE3 Ccesa007.pdfDemetrio Ccesa Rayme
 
Diapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanente
Diapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanenteDiapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanente
Diapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanenteinmaculadatorressanc
 
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVO
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVOSESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVO
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVOJuanaBellidocollahua
 
ciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemasciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemasFlor Idalia Espinoza Ortega
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...JAVIER SOLIS NOYOLA
 
Las Preguntas Educativas entran a las Aulas CIAESA Ccesa007.pdf
Las Preguntas Educativas entran a las Aulas CIAESA  Ccesa007.pdfLas Preguntas Educativas entran a las Aulas CIAESA  Ccesa007.pdf
Las Preguntas Educativas entran a las Aulas CIAESA Ccesa007.pdfDemetrio Ccesa Rayme
 
GOBIERNO DE MANUEL ODRIA EL OCHENIO.pptx
GOBIERNO DE MANUEL ODRIA   EL OCHENIO.pptxGOBIERNO DE MANUEL ODRIA   EL OCHENIO.pptx
GOBIERNO DE MANUEL ODRIA EL OCHENIO.pptxJaimeAlvarado78
 
Proyecto de Participación Estudiantil Completo - Bachillerato Ecuador
Proyecto de Participación Estudiantil Completo - Bachillerato EcuadorProyecto de Participación Estudiantil Completo - Bachillerato Ecuador
Proyecto de Participación Estudiantil Completo - Bachillerato EcuadorJose Santos
 
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdf
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdfDISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdf
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdfVerenice Del Rio
 
Libros del Ministerio de Educación (2023-2024).pdf
Libros del Ministerio de Educación (2023-2024).pdfLibros del Ministerio de Educación (2023-2024).pdf
Libros del Ministerio de Educación (2023-2024).pdfGalletitas default
 
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...Agrela Elvixeo
 
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.El liderazgo en la empresa sostenible, introducción, definición y ejemplo.
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.JonathanCovena1
 
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...Pere Miquel Rosselló Espases
 
Presentación de la propuesta de clase.pdf
Presentación de la propuesta de clase.pdfPresentación de la propuesta de clase.pdf
Presentación de la propuesta de clase.pdfFranciscoJavierEstra11
 

Dernier (20)

Diseño Universal de Aprendizaje en Nuevos Escenarios JS2 Ccesa007.pdf
Diseño Universal de Aprendizaje en Nuevos Escenarios  JS2  Ccesa007.pdfDiseño Universal de Aprendizaje en Nuevos Escenarios  JS2  Ccesa007.pdf
Diseño Universal de Aprendizaje en Nuevos Escenarios JS2 Ccesa007.pdf
 
PLAN ANUAL DE TUTORIA PARA SEGUNDO AÑO DE SECUNDARIA
PLAN ANUAL DE TUTORIA PARA  SEGUNDO AÑO DE SECUNDARIAPLAN ANUAL DE TUTORIA PARA  SEGUNDO AÑO DE SECUNDARIA
PLAN ANUAL DE TUTORIA PARA SEGUNDO AÑO DE SECUNDARIA
 
Santa Criz de Eslava, la más monumental de las ciudades romanas de Navarra
Santa Criz de Eslava, la más monumental de las ciudades romanas de NavarraSanta Criz de Eslava, la más monumental de las ciudades romanas de Navarra
Santa Criz de Eslava, la más monumental de las ciudades romanas de Navarra
 
Escucha tu Cerebro en Nuevos Escenarios PE3 Ccesa007.pdf
Escucha tu Cerebro en Nuevos Escenarios  PE3  Ccesa007.pdfEscucha tu Cerebro en Nuevos Escenarios  PE3  Ccesa007.pdf
Escucha tu Cerebro en Nuevos Escenarios PE3 Ccesa007.pdf
 
Diapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanente
Diapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanenteDiapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanente
Diapositivas unidad de trabajo 7 sobre Coloración temporal y semipermanente
 
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVO
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVOSESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVO
SESION DE APRENDIZAJE PARA3ER GRADO -EL SISTEMA DIGESTIVO
 
ciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemasciclos biogeoquimicas y flujo de materia ecosistemas
ciclos biogeoquimicas y flujo de materia ecosistemas
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Las Preguntas Educativas entran a las Aulas CIAESA Ccesa007.pdf
Las Preguntas Educativas entran a las Aulas CIAESA  Ccesa007.pdfLas Preguntas Educativas entran a las Aulas CIAESA  Ccesa007.pdf
Las Preguntas Educativas entran a las Aulas CIAESA Ccesa007.pdf
 
GOBIERNO DE MANUEL ODRIA EL OCHENIO.pptx
GOBIERNO DE MANUEL ODRIA   EL OCHENIO.pptxGOBIERNO DE MANUEL ODRIA   EL OCHENIO.pptx
GOBIERNO DE MANUEL ODRIA EL OCHENIO.pptx
 
Motivados por la esperanza. Esperanza en Jesús
Motivados por la esperanza. Esperanza en JesúsMotivados por la esperanza. Esperanza en Jesús
Motivados por la esperanza. Esperanza en Jesús
 
Proyecto de Participación Estudiantil Completo - Bachillerato Ecuador
Proyecto de Participación Estudiantil Completo - Bachillerato EcuadorProyecto de Participación Estudiantil Completo - Bachillerato Ecuador
Proyecto de Participación Estudiantil Completo - Bachillerato Ecuador
 
flujo de materia y energía ecosistemas.
flujo de materia y  energía ecosistemas.flujo de materia y  energía ecosistemas.
flujo de materia y energía ecosistemas.
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdf
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdfDISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdf
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE.pdf
 
Libros del Ministerio de Educación (2023-2024).pdf
Libros del Ministerio de Educación (2023-2024).pdfLibros del Ministerio de Educación (2023-2024).pdf
Libros del Ministerio de Educación (2023-2024).pdf
 
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...
POEMAS ILUSTRADOS DE LUÍSA VILLALTA. Elaborados polos alumnos de 4º PDC do IE...
 
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.El liderazgo en la empresa sostenible, introducción, definición y ejemplo.
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.
 
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
Realitat o fake news? – Què causa el canvi climàtic? - Modificacions dels pat...
 
Presentación de la propuesta de clase.pdf
Presentación de la propuesta de clase.pdfPresentación de la propuesta de clase.pdf
Presentación de la propuesta de clase.pdf
 

La palabra reservada this y los métodos "getters" y "setters"

  • 2. La palabra reservada this y los métodos "getters" y "setters" En Java se utiliza la palabra reservada this para denotar desde el interior de un objeto una referencia al propio objeto. Si tenemos el objeto pedro de la clase Persona, entonces pedro.this es el mismo objeto pedro. this tiene varios usos y en esta sección veremos una de sus aplicaciones más comunes. Cuando los atributos son privados, como en el caso de saldo y numero, entonces se codifican los métodos getSaldo() y getNumero() para que otros objetos tengan acceso a su valor. A este tipo de métodos se les conoce como getters. Si además queremos que los otros objetos también puedan modificar el valor de estos atributos, entonces usamos los métodos setters, que en este caso son setSaldo() y setNumero():
  • 3. Nótese que para diferenciar entre el valor enviado como parámetro y el nombre del atributo usamos s y num, respectivamente. Declarar los atributos como privados permite encapsular los datos del objeto. El encapsulamiento sirve para proteger los datos de los objetos y se logra declarando los atributos de una clase como private y codificando métodos especiales para controlar el acceso. La manera de acceder a los atributos desde afuera de la clase es por medio de los métodos getter y la manera de modificar los atributos desde afuera de la clase es usando los métodos setter. Como el encapsulamiento es una práctica común, muchos ambientes de desarrollo orientado a objetos codifican automáticamente los métodos getters y setters con las siguientes reglas: 1. Tanto getters como setters son públicos. 2. Los getters no reciben parámetros y el tipo de dato que regresan es el mismo que el del atributo correspondiente. Su nombre comienza con get seguido del nombre del atributo pero iniciando con mayúscula y regresan el valor del atributo. Por ejemplo:
  • 4. • 3. Los setters reciben como parámetro el mismo tipo de dato que el del atributo. El nombre de los métodos setters se construye de forma análoga a la de los getters, pero iniciando con la palabra set, y asignan al atributo el valor del parámetro recibido. El parámetro recibido tiene el mismo nombre que el atributo. Para diferenciar entre el valor enviado como parámetro y el nombre del atributo se utiliza la palabra this, de tal forma que this.nombreAtributo se refiere al atributo del objeto. Por ejemplo: En general, los atributos de una clase se declaran como privados y se accede a estos por medio de los métodos setters y getters.
  • 5. Sobrecarga de métodos La sobrecarga es definir dos o más métodos con el mismo nombre, pero con parámetros diferentes por cantidad o tipo. El objetivo de la sobrecarga es reducir el número de identificadores distintos para una misma acción pero con matices que la diferencian. La sobrecarga se puede realizar tanto en métodos generales, como en constructores. La sobrecarga es un polimorfismo estático, ya que es el compilador quien resuelve el conflicto del método a referenciar. Si definimos un constructor con parámetros, el constructor sin parámetros deja de estar disponible; así que, si nos interesa, se debe definir para su utilización. Como ejemplo añadimos sobrecarga a los constructores de la clase Punto:
  • 6. Los métodos constructores Un constructor es un método especial, que se invoca al momento de crear un objeto, es decir, cuando se instancia la clase. El método constructor tiene exactamente el mismo nombre que el de la clase que construye. Por ejemplo: Los métodos constructores tienen la tarea de dejar al objeto listo para su uso. Por ejemplo, en el reloj, el constructor debería por lo menos inicializar la hora a las 00:00:00. Además de la inicialización de variables (incluyendo el alojamiento de memoria dinámico para éstas), el constructor debe encargarse de crear los objetos que forman parte del objeto. Todas las clases tienen un constructor por omisión, con el cuerpo vacío y sin parámetros. El constructor por omisión siempre existe y evita problemas cuando no se definen explícitamente constructores en una clase. Definamos un constructor para la clase Cuenta:
  • 7.
  • 8. Ahora, para construir un objeto de la clase Cuenta será necesario proporcionar los datos de la cuenta por medio de los parámetros del constructor. Por ejemplo, se crea el objeto cuentaCredito, desde la clase Principal, definiendo desde ese momento que dicha cuenta esté a nombre de Pedro Sánchez, con saldo de 1500, número de cuenta 244513 e indicando que es una cuenta de crédito. Otro objeto cuentaDebito puede crearse a nombre de Pablo García, con saldo de 7800, número de cuenta 273516 e indicando que es una cuenta de débito. Para lograr lo anterior, hacemos lo siguiente:
  • 9. This en los métodos constructores La palabra reservada this también es útil para dar el mismo nombre de los atributos a los parámetros que recibe un método constructor. Enseguida presentamos el código del constructor de la clase Cuenta utilizando la palabra this para indicar que se trata del atributo de la clase: Al utilizar this.nombreAtributo, evitamos las ambigüedades cuando los parámetros tienen el mismo nombre que los atributos.
  • 10. Varios constructores en la misma clase Es posible definir múltiples constructores para una misma clase; los cuales representan modos diferentes de inicializar un objeto. Se diferencian entre sí por los parámetros que reciben. A continuación presentamos la clase Reloj, la cual tiene un método constructor sin parámetros que inicializa los atributos con cero. Tiene además el método visualizar(), el cual despliega la hora en pantalla, el método tic() que incrementa la hora actual en un segundo y define el comportamiento del reloj cada vez que se oye un "tic" y el método ponerALas(), que pone el reloj a cierta hora, minuto y segundo, de acuerdo con los valores que recibe en sus parámetros:
  • 11. Ahora tenemos la clase principal PruebaReloj, en la que se crea un objeto de la clase Reloj y se hace uso de sus métodos: El resultado de este programa es:
  • 12. Ahora pondremos un constructor adicional en la clase Reloj, de tal forma que la clase tenga un constructor sin parámetros y otro con parámetros:
  • 13. En la clase PruebaReloj creamos dos relojes, r1 y r2. Como no se usan parámetros al crear el objeto r1, la clase usa su primer constructor. Al crear r2 se usa el segundo constructor debido a que se incluyen los parámetros: La salida de este programa es la siguiente
  • 14. Objetos dentro de objetos La propiedad de construir objetos que contienen a su vez otros más es una de las características más destacadas de la POO, pues promueve la versatilidad en el diseño de las clases. Agreguemos a nuestro ejemplo de la clase Reloj la clase ContadorCiclico, cuyos objetos se caracterizan por tener una cuenta actual y una cuenta máxima. Así, por ejemplo, el contador cíclico de un minutero tiene 60 como cuenta máxima, mientras que el de la hora tiene 12. El método incrementar() incrementa en uno la cuenta del contador cíclico y reinicia la cuenta si se llega a la cuenta máxima:
  • 15. Modifiquemos la clase Reloj para que tenga contadores cíclicos. Ahora la clase Reloj tiene atributos que son a su vez objetos. Los atributos de un objeto, que son a su vez objetos, se crean normalmente en el método constructor, que es lo más adecuado para que el objeto que se está creando se pueda usar inmediatamente. En el constructor de la clase Reloj se crean los contadores que marcan la hora (h), el minuto (m) y el segundo (s). Obsérvese que el constructor de la clase ContadorCiclico requiere como parámetro la cuenta máxima:
  • 16. Recordemos el método anterior para incrementar la cuenta del reloj en un segundo: y comparémoslo con el nuevo, que usa tres objetos de clase ContadorCiclico:
  • 17. Este último es un claro ejemplo de la utilidad de la POO para hacer código más fácil de leer. La instrucción s.incrementar() invoca al método de la clase ContadorCiclico que incrementa la cuenta. Además, regresa un entero que indica la cuenta actual. Luego, la expresión s.incrementar() == 0 compara la cuenta actual del segundero con cero: si es cero, entonces incrementa la cuenta del minutero que, a su vez, la compara con cero. La hora se incrementa únicamente cuando la cuenta del minutero y del segundero son cero. Con este nuevo código, el método tic() en Reloj no incluye el comportamiento de los contadores cíclicos, sino solamente el comportamiento de un Reloj interactuando con sus contadores internos. El comportamiento de los contadores cíclicos se codifica aparte. Otra característica importante de los objetos es su facultad de desplegar su contenido en forma de texto. Esto se codifica en un método que se llama toString(), el cual siempre debe regresar una cadena de caracteres. Se dice que el método toString() proporciona una representación del objeto en una cadena de caracteres, es decir, en un String o texto. Observemos el método toString() de la clase reloj: Este método concatena los valores de la cuenta de cada contador cíclico de forma que da la hora, el minuto y el segundo separados por dos puntos, es decir, h:m:s.