SlideShare a Scribd company logo
1 of 17
Download to read offline
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.

More Related Content

Similar to 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
 

Similar to 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
 

Recently uploaded

2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 

Recently uploaded (20)

2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 

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.