Está en la página 1de 22

UDEMEX

UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO

LICENCIATURA EN INFORMÁTICA ADMINISTRATIVA

ESTUDIANTE: Alfredo Eduardo Jalil Nava

MATRÍCULA: udx042220085

ASESOR (A): Alejandra Vallejo Piña

UNIDAD DE APRENDIZAJE: PROGRAMACIÒN II

ACTIVIDAD DE APRENDIZAJE: Ejercicio

3.1 Clases y objetos

3.2. Atributos, métodos e inicialización

de objetos mediante constructores

FECHA DE ENTREGA

09 DE OCTUBRE DE 2023
UDEMEX

Contenido
INTRODUCCIÓN...................................................................................................................... 2

DESARROLLO DE LA ACTIVIDAD..........................................................................................3

CONCLUSIONES....................................................................................................................21

FUENTES CONSULTADAS....................................................................................................22

La tecnología a favor de tu formación académica .


UDEMEX

INTRODUCCIÓN

La programación orientada a objetos (POO) es uno de los paradigmas más importantes en el


desarrollo de software, ya que permite modelar de manera efectiva objetos del mundo real y
sus relaciones.
En este proyecto, exploraremos dos aspectos cruciales de la POO: las clases y objetos, así
como los atributos, métodos y constructores.
A través de la creación de una aplicación de gestión de animales, veremos cómo las clases
se utilizan como plantillas para definir la estructura y el comportamiento de los objetos.
Estos objetos almacenan datos específicos y pueden realizar acciones según lo definido en
la clase.
Además, examinaremos cómo los constructores se utilizan para inicializar objetos y cómo los
métodos permiten interactuar con ellos.
También se incorporará una interfaz gráfica de usuario (GUI) para hacer que la aplicación
sea más amigable y accesible.
Este proyecto servirá como una introducción práctica a la programación orientada a objetos y
cómo se aplica en el desarrollo de aplicaciones funcionales y amigables para el usuario.
A medida que avanzamos, exploraremos los conceptos clave y obtendremos una
comprensión más profunda de cómo se utilizan en la práctica.

La tecnología a favor de tu formación académica .


UDEMEX

DESARROLLO DE LA ACTIVIDAD

Realiza una a una las siguientes actividades:

 Consulta y estudia los contenidos presentados en el portal correspondientes al tema


31 y 3.2.

 Resuelva el siguiente ejercicio en java Sobre carga de una clase:

Defina dos métodos constructores para la clase Animal. El primer método debe recibir los
parámetros tipo, color, peso. El segundo método debe recibir los parámetros nombre_dueño,
y domicilio.

public class Animal {

private String tipo;

private String color;

private Double peso;

private String nombre_dueño;

private String domicilio;

Desarrolle los métodos ‘get’, ‘set’ y el método obtenerAtributos(). Este método debe devolver
una cadena con todos los atributos concatenados, como se muestra en el siguiente ejemplo:

 CANINO, NEGRO, 4.5, ALLISON GARCIA, MORELOS 1080 OTE., TOLUCA,


MÉXICO.

La tecnología a favor de tu formación académica .


UDEMEX

Código Java: AnimalGUI.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.net.URL;

public class AnimalGUI extends JFrame implements ActionListener {

private JTextField tipoField, colorField, pesoField, nombreField, domicilioField;

private JButton crearAnimalButton, mostrarAtributosButton;

private JTextArea resultadoArea;

private Animal animal;

public AnimalGUI() {

setTitle("Gestión de Animales");

setSize(800, 600);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLocationRelativeTo(null);

tipoField = new JTextField(20);

La tecnología a favor de tu formación académica .


UDEMEX

colorField = new JTextField(20);

pesoField = new JTextField(20);

nombreField = new JTextField(20);

domicilioField = new JTextField(20);

crearAnimalButton = new JButton("Crear Animal");

mostrarAtributosButton = new JButton("Mostrar Atributos");

resultadoArea = new JTextArea(10, 30);

resultadoArea.setEditable(false);

URL imageUrl = getClass().getResource("/resources/Imagen1.png");

if (imageUrl != null) {

ImageIcon imagenFondo = new ImageIcon(imageUrl);

JPanel panelConFondo = new JPanel() {

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

g.drawImage(imagenFondo.getImage(), 0, 0, getWidth(), getHeight(), this);

};

La tecnología a favor de tu formación académica .


UDEMEX

panelConFondo.setLayout(null);

JLabel autorLabel = new JLabel("Autor: Alfredo Eduardo Jalil Nava");

JLabel matriculaLabel = new JLabel("Matricula: udx042220085");

JLabel añoLabel = new JLabel("Programación II año 2023");

autorLabel.setBounds(10, 10, 300, 20);

matriculaLabel.setBounds(10, 30, 300, 20);

añoLabel.setBounds(10, 50, 300, 20);

JLabel tipoLabel = new JLabel("Tipo:");

JLabel colorLabel = new JLabel("Color:");

JLabel pesoLabel = new JLabel("Peso:");

JLabel nombreLabel = new JLabel("Nombre Dueño:");

JLabel domicilioLabel = new JLabel("Domicilio:");

tipoLabel.setBounds(10, 100, 80, 20);

colorLabel.setBounds(10, 130, 80, 20);

pesoLabel.setBounds(10, 160, 80, 20);

nombreLabel.setBounds(10, 190, 150, 20);

domicilioLabel.setBounds(10, 220, 150, 20);

tipoField.setBounds(100, 100, 150, 20);

La tecnología a favor de tu formación académica .


UDEMEX

colorField.setBounds(100, 130, 150, 20);

pesoField.setBounds(100, 160, 150, 20);

nombreField.setBounds(170, 190, 150, 20);

domicilioField.setBounds(170, 220, 150, 20);

crearAnimalButton.setBounds(10, 250, 150, 30);

mostrarAtributosButton.setBounds(170, 250, 150, 30);

resultadoArea.setBounds(10, 290, 350, 150);

panelConFondo.add(autorLabel);

panelConFondo.add(matriculaLabel);

panelConFondo.add(añoLabel);

panelConFondo.add(tipoLabel);

panelConFondo.add(colorLabel);

panelConFondo.add(pesoLabel);

panelConFondo.add(nombreLabel);

panelConFondo.add(domicilioLabel);

panelConFondo.add(tipoField);

panelConFondo.add(colorField);

panelConFondo.add(pesoField);

La tecnología a favor de tu formación académica .


UDEMEX

panelConFondo.add(nombreField);

panelConFondo.add(domicilioField);

panelConFondo.add(crearAnimalButton);

panelConFondo.add(mostrarAtributosButton);

panelConFondo.add(resultadoArea);

getContentPane().add(panelConFondo);

crearAnimalButton.addActionListener(this);

mostrarAtributosButton.addActionListener(this);

} else {

System.err.println("No se pudo cargar la imagen de fondo.");

@Override

public void actionPerformed(ActionEvent e) {

if (e.getSource() == crearAnimalButton) {

try {

String tipo = tipoField.getText();

String color = colorField.getText();

La tecnología a favor de tu formación académica .


UDEMEX

double peso = Double.parseDouble(pesoField.getText());

animal = new Animal(tipo, color, peso);

String nombre_dueño = nombreField.getText();

String domicilio = domicilioField.getText();

animal.setNombre_dueño(nombre_dueño);

animal.setDomicilio(domicilio);

JOptionPane.showMessageDialog(this, "Animal creado exitosamente.");

} catch (NumberFormatException ex) {

JOptionPane.showMessageDialog(this, "Error en el formato del peso.");

} else if (e.getSource() == mostrarAtributosButton) {

if (animal != null) {

resultadoArea.setText(animal.obtenerAtributos());

} else {

resultadoArea.setText("Primero debe crear un animal.");

La tecnología a favor de tu formación académica .


UDEMEX

public static void main(String[] args) {

SwingUtilities.invokeLater(() -> {

AnimalGUI gui = new AnimalGUI();

gui.setVisible(true);

});

Comencemos con una descripción línea por línea del código de AnimalGUI.java, que es la
clase principal de la aplicación de gestión de animales:

import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import


java.awt.event.ActionListener; import java.net.URL; public class AnimalGUI extends
JFrame implements ActionListener {

 Importamos las clases necesarias de las bibliotecas javax.swing.* y java.awt.* para


crear la interfaz de usuario y manejar eventos.

 Implementamos la interfaz ActionListener para manejar los eventos de los botones.

private JTextField tipoField, colorField, pesoField, nombreField, domicilioField; private


JButton crearAnimalButton, mostrarAtributosButton; private JTextArea resultadoArea;
private Animal animal;

La tecnología a favor de tu formación académica .


UDEMEX

 Declaramos varios componentes de la interfaz de usuario, incluyendo campos de texto


(JTextField), botones (JButton), un área de texto (JTextArea) y una instancia de la
clase Animal para representar un animal.

public AnimalGUI() {

 Comenzamos el constructor de la clase AnimalGUI. Aquí se realiza la configuración


inicial de la ventana.

setTitle("Gestión de Animales"); setSize(800, 600);


setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null);

 Configuramos el título de la ventana, su tamaño, la operación al cerrar la ventana y la


ubicación para que aparezca en el centro de la pantalla.

Creación de componentes tipoField = new JTextField(20); colorField = new


JTextField(20); pesoField = new JTextField(20); nombreField = new JTextField(20);
domicilioField = new JTextField(20); crearAnimalButton = new JButton("Crear
Animal"); mostrarAtributosButton = new JButton("Mostrar Atributos"); resultadoArea =
new JTextArea(10, 30); resultadoArea.setEditable(false);

 Creamos instancias de los componentes de la GUI, incluyendo campos de texto para


tipo, color, peso, nombre del dueño y domicilio, botones para crear un animal y
mostrar atributos, y un área de texto para mostrar los resultados.

Configuración del fondo de la GUI URL imageUrl =


getClass().getResource("/resources/Imagen1.png"); if (imageUrl != null) { ImageIcon
imagenFondo = new ImageIcon(imageUrl);

 Configuramos el fondo de la GUI. Cargamos una imagen de fondo desde la ubicación


indicada por la URL "/resources/Imagen1.png" en la carpeta de recursos del proyecto.

La tecnología a favor de tu formación académica .


UDEMEX

Crear un panel con fondo transparente para superponer los elementos JPanel
panelConFondo = new JPanel() { @Override protected void paintComponent(Graphics
g) { super.paintComponent(g); g.drawImage(imagenFondo.getImage(), 0, 0, getWidth(),
getHeight(), this); } }; panelConFondo.setLayout(null);

 Creamos un panel con fondo transparente que permite superponer los elementos de la
GUI sobre la imagen de fondo. En el método paintComponent, dibujamos la imagen de
fondo en el panel.

Creación de etiquetas JLabel autorLabel = new JLabel("Autor: Alfredo Eduardo Jalil


Nava"); JLabel matriculaLabel = new JLabel("Matricula: udx042220085"); JLabel
añoLabel = new JLabel("Programación II año 2023");

 Creamos etiquetas (JLabel) que muestran información sobre el autor, matrícula y


programa académico.

Ubicación de las etiquetas autorLabel.setBounds(10, 10, 300, 20);


matriculaLabel.setBounds(10, 30, 300, 20); añoLabel.setBounds(10, 50, 300, 20);

 Configuramos la ubicación y el tamaño de las etiquetas en el panel con fondo.

 Aquí se establece la ubicación y el tamaño de otros componentes de la GUI, como las


cajas de texto y los botones.

getContentPane().add(panelConFondo); crearAnimalButton.addActionListener(this);
mostrarAtributosButton.addActionListener(this); }

 Agregamos el panel con fondo al contenido principal de la ventana


(getContentPane()).

 Configuramos los oyentes de eventos para los botones "Crear Animal" y "Mostrar
Atributos" (addActionListener(this)), de modo que se llamará al método
actionPerformed cuando se hagan clic en estos botones.

La tecnología a favor de tu formación académica .


UDEMEX

@Override public void actionPerformed(ActionEvent e) { if (e.getSource() ==


crearAnimalButton) { try { // Resto del código para crear un animal y mostrar
atributos ... } catch (NumberFormatException ex)
{ JOptionPane.showMessageDialog(this, "Error en el formato del peso."); } } else if
(e.getSource() == mostrarAtributosButton) { // Resto del código para mostrar
atributos ... } }

 Implementamos el método actionPerformed, que maneja los eventos cuando se hacen


clic en los botones. En el bloque if, se maneja el evento del botón "Crear Animal", y en
el bloque else if, se maneja el evento del botón "Mostrar Atributos".

Código Java: Animal.java

public class Animal {

private String tipo;

private String color;

private Double peso;

private String nombre_dueño;

private String domicilio;

public Animal(String tipo, String color, Double peso) {

this.tipo = tipo;

this.color = color;

La tecnología a favor de tu formación académica .


UDEMEX

this.peso = peso;

public Animal(String nombre_dueño, String domicilio) {

this.nombre_dueño = nombre_dueño;

this.domicilio = domicilio;

public String getTipo() {

return tipo;

public void setTipo(String tipo) {

this.tipo = tipo;

public String getColor() {

return color;

public void setColor(String color) {

La tecnología a favor de tu formación académica .


UDEMEX

this.color = color;

public Double getPeso() {

return peso;

public void setPeso(Double peso) {

this.peso = peso;

public String getNombre_dueño() {

return nombre_dueño;

public void setNombre_dueño(String nombre_dueño) {

this.nombre_dueño = nombre_dueño;

public String getDomicilio() {

return domicilio;

La tecnología a favor de tu formación académica .


UDEMEX

public void setDomicilio(String domicilio) {

this.domicilio = domicilio;

public String obtenerAtributos() {

if (tipo != null && color != null && peso != null && nombre_dueño != null &&
domicilio != null) {

return tipo + ", " + color + ", " + peso + ", " + nombre_dueño + ", " +
domicilio;

} else {

return "Faltan atributos para construir la cadena.";

Explicación:

public class Animal { private String tipo; private String color; private Double peso; private
String nombre_dueño; private String domicilio;

 Aquí se declara la clase Animal con cinco atributos privados:

La tecnología a favor de tu formación académica .


UDEMEX

 tipo: Representa el tipo de animal.

 color: Representa el color del animal.

 peso: Representa el peso del animal como un valor decimal de tipo Double.

 nombre_dueño: Representa el nombre del dueño del animal.

 domicilio: Representa el domicilio del dueño del animal.

Primer constructor con parámetros tipo, color y peso public Animal(String tipo, String color,
Double peso) { this.tipo = tipo; this.color = color; this.peso = peso; }

 Aquí se define el primer constructor de la clase Animal. Este constructor toma tres
parámetros: tipo, color y peso. Cuando se crea una instancia de Animal con este
constructor, se inicializan los atributos tipo, color y peso.

public Animal(String nombre_dueño, String domicilio) { this.nombre_dueño = nombre_dueño;


this.domicilio = domicilio; }

 Aquí se define el segundo constructor de la clase Animal. Este constructor toma dos
parámetros: nombre_dueño y domicilio. Cuando se crea una instancia de Animal
con este constructor, se inicializan los atributos nombre_dueño y domicilio.

 La clase Animal incluye métodos getter y setter para cada uno de los atributos. Estos
métodos permiten acceder y modificar los valores de los atributos de la clase.

public String obtenerAtributos() { if (tipo != null && color != null && peso != null &&
nombre_dueño != null && domicilio != null) { return tipo + ", " + color + ", " + peso + ", " +
nombre_dueño + ", " + domicilio; } else { return "Faltan atributos para construir la cadena."; } }
}

La tecnología a favor de tu formación académica .


UDEMEX

 Finalmente, la clase Animal incluye el método obtenerAtributos. Este método


verifica si todos los atributos tienen valores no nulos y, si es así, devuelve una cadena
que concatena todos los atributos separados por comas. Si algún atributo es nulo,
devuelve un mensaje indicando que faltan atributos para construir la cadena.

La separación de la lógica de datos (representada por la clase Animal) de la lógica de la


interfaz de usuario (representada por la clase AnimalGUI) sigue los principios de diseño de
software que promueven el modularidad, la reutilización y la mantenibilidad del código.

Esto facilita el desarrollo y la evolución de la aplicación a medida que se agregan nuevas


funcionalidades o se realizan cambios en la interfaz de usuario sin afectar la estructura
subyacente de los datos.

Para ejecutar la aplicación, simplemente se llama al método main en la clase principal


(AnimalGUI), con esto abrirá la ventana de la aplicación donde puedes interactuar con los
campos de texto y los botones para crear y mostrar atributos de un animal.

La tecnología a favor de tu formación académica .


UDEMEX

Evidencia de ejecución

En conjunto, este proyecto ilustra cómo aplicar conceptos de programación orientada a


objetos para crear una aplicación funcional con una interfaz de usuario amigable, lo que
demuestra la importancia del modularidad, la reutilización de código y la organización en el
desarrollo de software.

La tecnología a favor de tu formación académica .


UDEMEX

CONCLUSIONES

En este proyecto, hemos explorado conceptos clave de la programación orientada a objetos,


centrándonos en las clases, objetos, atributos, métodos y la inicialización de objetos
mediante constructores.

1. Clases y Objetos: Las clases actúan como plantillas que definen la estructura y el
comportamiento de los objetos, estos son instancias específicas de una clase y
almacenan datos relacionados.

2. Abstracción y Encapsulación: Las clases permiten la abstracción al modelar


conceptos del mundo real en el código, también promueven la encapsulación al
ocultar los detalles internos de los objetos y proporcionar interfaces para interactuar
con ellos.

3. Atributos y Métodos: Los atributos representan las características o propiedades de


un objeto, mientras que los métodos son las acciones que puede realizar, los atributos
de la clase Animal incluyeron tipo, color, peso, nombre_dueño y domicilio.

4. Constructores: Los constructores son métodos especiales utilizados para inicializar


objetos de una clase, definimos dos constructores para la clase Animal que
permitieron la creación de objetos con diferentes conjuntos de atributos.

5. Interfaz de Usuario (GUI): Implementamos una interfaz gráfica de usuario (GUI) para
interactuar con la aplicación, lo que proporciona una experiencia amigable para el
usuario.

6. Validación de Datos: Incluimos validación de datos básica para garantizar que los
valores ingresados sean correctos, como verificar el formato del peso.

La tecnología a favor de tu formación académica .


UDEMEX

7. Mensajes de Retroalimentación: La aplicación emite mensajes de retroalimentación


al usuario para informar sobre el resultado de las operaciones, lo que mejora la
experiencia del usuario.

FUENTES CONSULTADAS

Ladrón de Guevara, J. (2011). Fundamentos de programación en Java. Universidad Complitense de


Madrid. España. Recuperado el 4 de octubre de 2023 de:
http://www.etnassoft.com/biblioteca/fundamentos-deprogramacion-en-java

Sánchez, J. (2004). Java2 incluye Swing, Threads, programación en red, JavaBeans, JDBC y
JSP / Servlets España. Recuperado el 4 de octubre de 2023 de:
http://www.jorgeSánchez.net/programacion/manuales/Java.pdf

Características de la POO. (2021, 1 marzo). Portal Académico del CCH.

https://portalacademico.cch.unam.mx/cibernetica1/algoritmos-y-codificacion/caracteristicas-

POO#:~:text=El%20paradigma%20de%20la%20programaci%C3%B3n,%2C%20herencia

%2C%20encapsulamiento%20y%20polimorfismo

Es, H. E. U. (s/f). Área de Documentación del MIW. Upm.es. Recuperado el 5 de octubre de


2023, de https://www.etsisi.upm.es/sites/default/files/curso_2013_14/MASTER/
MIW.JEE.POOJ.pdf

La tecnología a favor de tu formación académica .

También podría gustarte