Lectura Toma de Decisiones
September 9, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Lectura Toma de Decisiones...
Description
CAPITULO N° 02:
PROGRAMACIÓN ORIENTADA A OBJETOS Página | 2
En esta unidad académica se estudia en detalle la Programación orientada a Objetos. Como es sabido hay muchos lenguajes de programación orientada a objetos – POO que tienen muchas similitudes entre sí, pero puntualmente nos enfocaremos en Java. La programación orientada a objetos es es otra técnica para implementar el fa famoso moso dicho “divide y vencerás”. La idea es encapsular datos y métodos en objetos, de forma que cada objeto sea semiautónomo, encerrando métodos y datos privados o internos. De esta forma, el objeto puede interactuar con el resto del programa por medio de una interfaz bien definida por sus métodos públicos, es decir, invocando sus métodos desde fuera f uera del objeto. Entonces se entiende como POO que es un método de implementación en el que los programas
se organizan como colecciones cooperativas de objetos , cada uno de los cuales representan una instancia de alguna clase, y cuyas clases son todos miembros de una jerarquía de clases unidas mediante relaciones de herencia.
2.1. CLASE Una clase es como una plantilla de la cual se pueden crear varios objetos con las mismas características y funciones (métodos). Una clase es una representación de un objeto en particular , y define un nuevo tipo de dato. Las clases de utilizan para crear objetos de ese tipo de clase en particular.
Diagrama de una Clase Nombre de Clase
Atributos
Definición de las variables de instancia de la clase
Métodos
Definición de las operaciones Implementadas
Figura 01: Diagrama de notación UML
Ejemplo:
Página | 3
Figura 02: Ejemplo de una clase en notación UML
El nombre de toda clase debe comenzar con mayúsculas El nombre de los objetos con minúsculas
2.2. CREACIÓN DE UNA CLASE EN JAVA Para crear una clase se utiliza la palabra reservada class y a continuación el nombre de la clase. La definición de la clase se pone entre las llaves de apertura y cierre. El nombre de la clase empieza con una letra mayúscula.
Sintaxis: Tipo de acceso class NombreClase { Variable1; Variable2; //…. //….
Método (lista de parámetros) { Cuerpo del método }
//métodos adicionales }
Ejemplo: class CAlumno { Cuerpo de la clase } Página | 4
2.3. OBJETO Objeto es una instancia de la clase, los objetos tienen las siguientes cualidades:
Identidad: los objetos se distinguen del uno del otro.
Comportamiento: pueden realizar tareas.
Estado: almacena información que varía a través del tiempo).
alumno1 nombre = “Juan Pérez” Pérez” nota1 = 15 nota2 = 13 nota3 = 18 CAlumno() getNombre() setNombre(String nombre) getNota1() setNota1(int nota1) getNota2() setNota2(int nota2) getNota3() setNota3(int nota3) promedio()
Figura 03: Representación en UML de esta clase de objetos. alumno1 puede ser un subconjunto o una especialización de otro objeto más genérico, tal como Alumno.
2.4. DECLARAC DECLARACIÓN IÓN DE OBJETOS Para crear un objeto o una instancia de esta clase tenemos dos alternativas, la primera en la misma línea de declaración, tal como se ilustra a continuación.
Sintaxis 1: NombreClase NombreVariable; NombreVariable = new NombreClase( );
Sintaxis 2: NombreClase NombreVariable = new NombreClase( );
Ejemplo: El objeto alumno1 implementado en Java, sería el siguiente. CAlumno alumno1 = new CAlumno();
Ejemplo: El objeto alumno1 implementado en Java, sería el siguiente. CAlumno alumno1; alumno1= new CAlumno();
2.5. ATRIBUTOS Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables. Las variables de instancia también denominados miembros dato, son declaradas en la clase pero sus valores son fijados y cambiados en el objeto.
Sintaxis: [TipoAcceso] Tipo Nombre;
Ejemplo: private String nombre ; private int Nota1; private Punto punto;
2.6. Métodos – Comportamiento Comportamiento El comportamiento de los objetos de una clase se implementa mediante funciones
miembro o métodos. Un método es un conjunto de instrucciones que realizan una determinada tarea y son similares a las funciones de los lenguajes estructurados. Del mismo modo que hay variables de instancia y de clase, también hay métodos de
instancia y de clase. En el primer caso, un objeto llama a un método para realizar una determinada tarea, en el segundo, el método se llama desde la propia cclase. lase.
Página | 5
Sintaxis [modificador] tipo NombreMetodo(tipo parm1, tipo parm2, . . .) { declaraciones de variables locales; sentencias; //... [return[ ( ] expresión[ ) ] ]; }
Ejemplo: public double promedio(){ return(nota1 + nota2 + nota3)/3; }
2.7. CASO DE ESTUDIO Enunciado 01: Realice una aplicación implementando clases y creando objetos que halle el área de un cuadrado de una cantidad dada. Además realizar el listado de requerimientos funcionales.
Solución: Realice lo siguiente: 1. Realizar el diseño de la clase que intervienen en la solución del problema. 2. Explique el listado de requerimientos
Nombre :
R1 – R1 – Hallar Hallar el área de un cuadrado
Resumen :
Muestra la información del área de un cuadrado
Entradas : Ingresar el lado del cuadrado
Resultados : Muestra la información del área de un cuadrado en formato decimal. 3. Crear un proyecto con el Nombre: Aplica01.
Página | 6
4. Crear un paquete con el nombre de Clases
5. En el paquete Clases, realice clic con el botón derecho del mouse, para crear una nueva clase Java Class, de nombre: Cuadrado y realizar la codificación.
6. En el paquete Clases, realice clic con el botón derecho del mouse, para agregar un nuevo JFrame, Aplica01 – New New – JFrame. JFrame. Escriba el Nombre Problema01.
7. Agregue los controles necesarios como en el gráfico 01
Gráfico 01
Página | 7
8. Escribir el código para la clase Cuadrado definido anteriormente, teniendo en cuenta los atributos y métodos que se utilizan package Clases; public class Cuadrado { private float lado; public Cuadrado() { } public float getLado() { return lado; } public void setLado(float lado) { this.lado = lado; } public float hallarArea() { float area; area = (float) Math.pow(lado, 2); return area; } public float mostrarArea() { return hallarArea(); } }
9. Escribir el código para la clase Problema01 definido anteriormente, teniendo en cuenta los atributos y métodos que se utilizan package Clases; import import import import
java.awt.Color; java.awt.Dimension; java.awt.event.KeyEvent; javax.swing.JOptionPane;
public class Problema01 extends javax.swing.JFrame { Cuadrado cua = new Cuadrado() Cuadrado(); ; public Problema01() { initComponents(); formulario(); valIniciales(); }
private void formulario() {
Página | 8
this.setTitle("Area de un cuadrado"); this.setLocationRelativeTo(null); this.setVisible(true); this.setSize(new Dimension(330, 160)); this.setResizable(false); this.getContentPane().setBackground(new Color(255, 255, 255)); this.PanelIngreso.setBackground(new Color(255, 255, 255)); this.PanelOperaciones.setBackground(new Color(255, 255, 255)); } private void valIniciales() { PanelIngreso.setVisible(true); PanelOperaciones.setVisible(true); PanelResultado.setVisible(false); btnCalcular.setEnabled(false); btnNuevo.setEnabled(false); btnSalir.setEnabled(true); }
private void btnCalcularActionPerformed (java.awt.event.ActionEvent evt) { float lado; if (txtLado.getText().isE (txtLado.getText().isEmpty()) mpty()) { JOptionPane.showMessageDialog(this, "Ingrese un Valor"); txtLado.requestFocus(); btnCalcular.setEnabled(false); } else { lado = Float.parseFloat(txtLado.getText().trim()); cua.setLado(lado); cua.hallarArea(); txtArea.setText(String.valueOf(cua.mostrarArea())); this.setSize(new Dimension(330, 220)); PanelResultado.setVisible(true); btnCalcular.setEnabled(false); btnNuevo.setEnabled(true); this.PanelResultado.setBackground(new Color(255, 255, 255)); } } private void btnNuevoActionPerformed (java.awt.event.Action (java.awt.e vent.ActionEvent Event evt) { txtLado.setText(""); txtArea.setText(""); this.setSize(new Dimension(330, 170)); PanelResultado.setVisible(false); txtLado.requestFocus(); btnCalcular.setEnabled(true); btnNuevo.setEnabled(false); }
Página | 9
private void btnSalirActionPerformed (java.awt.event.Action (java.awt.e vent.ActionEvent Event evt) { int r = JOptionPane.showOptionDialog(this, "Estas Seguro de Salir ...?", "Area Cuadrado", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[]{"Si Salgo", "No Salgo"}, "No Salgo"); if (r == 0) { System.exit(0); } }
private void txtLadoKeyTyped(java.awt.event.KeyEvent evt) { btnCalcular.setEnabled(true); char c = evt.getKeyChar(); if (!Character (!Character.isDigit(c) .isDigit(c)) ) { evt.consume(); } }
private void txtLadoActionPerformed (java.awt.event.ActionEvent evt) { btnCalcular.doClick(); txtLado.setText(""); txtLado.requestFocus(); }
private void formWindowActivated (java.awt.event.Window (java.awt.e vent.WindowEvent Event evt) { valIniciales(); }
private void txtLadoKeyPressed(java.awt.event.KeyEvent evt) { if (evt.getKeyCode() == KeyEvent.VK_ENTER) { btnCalcular.doClick(); } else { btnCalcular.setEnabled(false); txtLado.requestFocus(); } } }
Página | 10
Enunciado 02: Se requiere una aplicación que diseñe una clase CAlumno; que permita leer los datos de un alumno (nombre) y tres notas y nos permite visualizar.
Los datos del alumno, sus notas y el promedio de las notas ingresadas.
Además realizar los requerimientos funcionales de cada c ada uno de los requerimientos.
CAlumno
public class CAlumno { String nombre; double nota1; double nota2; double nota3; public CAlumno() { } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; }
Solución 1. Listado de Requerimientos funcionales
Nombre :
R1 – R1 – Leer Leer los datos del alumno
Resumen :
Lee la información de los datos del alumno
Entradas :
Página | 11
Ingresar los datos de un alumno
Resultados : Captura la información de los datos del alumno (validado)
2. Realizar los demás requerimientos funcionales (como ejercicio). 3. Crear el proyecto proyecto – – EjemploPOO, y un paquete Aplicación, como en la figura.
4. Definir la clase – clase – CAlumno.java, como en la figura
5. Escribir el código para la clase CAlumno definido anteriormente, teniendo en cuenta los atributos y métodos que se utilizan
Clase CAlumno.java public class CAlumno { String nombre; int nota1, nota2, nota3; public CAlumno() { } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public int getNota1() { return nota1; } public int getNota2() { return nota2; }
Página | 12
public int getNota3() { return nota3; } public void setNota1(int nota1) { this.nota1 = nota1; } public void setNota2(int nota2) { this.nota2 = nota2; }
public void setNota3(int nota3) { this.nota3 = nota3; } public double promedio(){ return(nota1 + nota2 + nota3)/3; } }
6. Ahora crear una aplicación JFrame – AplicaAlumno AplicaAlumno, que nos permitirá utilizar la clase
CAlumno.
7. Luego realizar el diseño de la clase AplicaAlumno.java, como en la figura.
Página | 13
8. A continuación realizar el código para el formulario diseñado anteriormente.
Clase AplicaAlumno.java package Aplicación; Página | 14
import java.awt.Color; import java.awt.event.KeyEvent; public class AplicaAlumno extends javax.swing.JFrame { private final int limite = 2;
CAlumno a1 = new CAlumno();
Longitud máxima del dato Ingresado . en las notas //Creando un objeto a1
public AplicaAlumno() { initComponents(); formulario(); } private void formulario() { this.setTitle("Promedio Notas"); this.getContentPane().setBackground(new Color(255, 255, 255)); this.pnlOpciones.setBackground(new Color(255, 255, 255)); this.setLocationRelativeTo(this); this.setVisible(true); this.setResizable(false); this.setLayout(null); pnlNotas.setOpaque(false); this.txtNombre.requestFocus(); }
private void borrar(){ txtNombre.setText(""); txtNota1.setText(""); txtNota2.setText(""); txtNota3.setText(""); txtSalida.setText(""); txtNombre.requestFocus(); }
//Código del botón btnCalcular private void btnCalcular btnCalcularrActionPerf rActionPerformed ormed (java.awt.event.Action (java.awt.e vent.ActionEvent Event evt) { double prom; a1.setNombre(txtNombre.getText()); a1.setNota1(Integer.parseInt(txtNota1.getText())); a1.setNota2(Integer.parseInt(txtNota2.getText())); a1.setNota3(Integer.parseInt(txtNota3.getText()));
prom = a1.promedio(); txtSalida.setText("\tResultados\n"); txtSalida.append("\t==========\n"); txtSalida.append("Nombre : "); txtSalida.append("\t" + a1.getNombre() + "\n"); txtSalida.append("Notas "); Página | 15 txtSalida.append("\t" txtSalida.app end("\t" + : a1.getNota1() + ", "); txtSalida.append(a1.getNot txtSalida.app end(a1.getNota2() a2() + ", "); txtSalida.append(a1.getNota3() + "\n"); txtSalida.append("Promedio : "); txtSalida.append("\t" + String.valueOf(prom)+"\n"); }
//Código para que en el ingreso de las notas solo se acepten números y como máximo dos caracteres private void txtNota1KeyTyped (java.awt.event.KeyEvent evt) { char car = evt.getKeyC evt.getKeyChar(); har(); if(car < '0' || car > '9') evt.consume(); if (txtNota1.getText().length()== limite) evt.consume(); } private void txtNota2KeyTyped (java.awt.event.KeyEvent evt) { char car = evt.getKeyC evt.getKeyChar(); har(); if(car < '0' || car > '9') evt.consume(); if (txtNota2.getText().length()== limite) evt.consume(); }
private void txtNota3KeyTyped (java.awt.event.KeyEvent evt) { char car = evt.getKeyC evt.getKeyChar(); har(); if(car < '0' || car > '9') evt.consume(); if (txtNota3.getText().length()== limite) evt.consume(); }
//Código para que en el ingreso del nombre solo se acepten carcateres car cateres y la barra espaciadora private void txtNombreKeyTyped (java.awt.event.KeyEvent evt) { char car = evt.getKeyC evt.getKeyChar(); har(); if((car < 'a' || car > 'z') && (car < 'A' || car > 'Z') && (car != (char)KeyEvent.VK_SPACE)) evt.consume();
} private void btnNuevoActionPerformed (java.awt.event.Action (java.awt.e vent.ActionEvent Event evt) { borrar(); Página | 16
} private void btnSalirActionPerformed (java.awt.event.Action (java.awt.e vent.ActionEvent Event evt) { System.exit(0); } }
El operador de acceso a un miembro (.) selecciona un miembro individual de un objeto de la clase.
Actividad 01 Desarrollar una solución que permita realizar el cálculo del pago mensual del sueldo de un
empleado de la empresa “Comerciantes Unidos”. Dicho cálculo se realiza de la siguiente manera, el sueldo básico se calcula en función al número total de horas trabajadas, basado en una tarifa horaria. Al sueldo básico se le aplica una bonificación del 35% obteniéndose el sueldo bruto. Al sueldo básico se le aplica un descuento del 12% obteniéndose el sueldo neto. Mostrar el sueldo básico, el sueldo bruto y el sueldo neto de un trabajador.
Actividad 02 Desarrollar una solución que permita calcular y mostrar el costo total que representa los
pacientes de un hospital de acuerdo al tipo de enfermedad, según los datos de la tabla. Adicionalmente debe considerar que los pacientes menores de 18 años implican un costo
adicional de 35% y las mujeres que tiene la enfermedad tipo 1 , implican un costo adicional de 12%. Valide la entrada de los datos. Enfermedad Tipo
Costo Diario por paciente
1
135
2
323
3
425
4
678
Actividad 03 Desarrollar una solución que permita calcular y mostrar el costo total en nuevos soles que representa un paciente para un hospital de acuerdo ac uerdo al tipo de enfermedad, según los datos de Página | 17
la tabla. Adicionalmente, debe considerar que las mujeres tienen un incremento del 19% para el primer tipo de enfermedad y los hombres tienen un aumento del 4% para el tercer tipo. Enfermedad Tipo
Costo Diario
1
180
2
420
3
513
Los resultados se deben mostrar tanto en números como en letras .
Actividad 04 En el Instituto del Sur , los alumnos están categorizados en cuatro categorías. A cada categoría le corresponde una pensión mensual distinta dada en la siguiente tabla:
Categoría
Pensión
A
S/. 550
B
S/. 500
C
S/. 460
D
S/. 400
Semestralmente, el Instituto del Sur efectúa rebajas en las pensiones de sus estudiantes a partir del segundo ciclo en base al promedio ponderado del ciclo anterior en porcentajes dados en la tabla siguiente:
Promedio Descuento
Promedio Descuento
0 a13.99 14.00 a 15.99
No hay descuento 10 %
16.00 a 17.99
12 %
18.00 a 20.00
15 %
Diseñe una aplicación que determine cuánto de rebaja recibirá un estudiante sobre su pensión actual y a cuánto asciende su nueva pensión. Los resultados se deben mostrar tanto en
números como en letras .
Página | 18
Actividad 05 Se desea crear una aplicación que permita manejar el inventario de una tienda, conocer cuánto dinero hay en caja y tener un control de estadísticas de ventas. La tienda maneja cuatro productos. De cada uno de ellos se maneja la siguiente información:
Nombre. No pueden haber dos productos con el mismo nombre.
Tipo (puede ser un producto de papelería, supermercado o droguería).
Cantidad actual del producto en la tienda (número de unidades disponibles para la
venta que hay en bodega.
Cantidad mínima para abastecimiento (número de productos por debajo del cual se
puede hacer un nuevo pedido al proveedor).
Precio base de venta por unidad.
Para calcular el precio final de cada producto, se deben sumar los impuestos que define la ley (IGV). Dichos impuestos dependen del tipo del producto, de la siguiente manera:
Papelería: 16%
Supermercado: 4%
Droguería: 12%.
Eso quiere decir que si un lápiz tiene un precio base de S/.10, el precio final será de S/.11,6 considerando que un lápiz es un producto de papelería, y sobre estos se debe pagar el 16% de impuestos. El programa debe permitir al usuario: 1. Visualizar la información de los productos. 2. Vender un producto.
3. Abastecer la tienda con un producto. 4. Cambiar un producto. 5. Calcular estadísticas de ventas: a) El producto más vendido. b) El producto menos vendido. c) La cantidad total de dinero obtenido por las ventas de la tienda. d) La cantidad de dinero promedio obtenido por unidad de producto vendida.
View more...
Comments