Upload
kevin-osorio
View
5
Download
1
Embed Size (px)
DESCRIPTION
Aplicar conceptos básicos de Programación Orientada a Objetos
Citation preview
UNIVERSIDAD DE EL SALVADOR
FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE
DEPARTAMENTO DE INGENIERÍA Y ARQUITECTURA
PROGRAMACIÓN II
DOCENTE: ING. ROBERTO COLÓN
INSTRUCTOR: BR. KEVIN MANUEL OSORIO
GUÍA 1
Objetivo:
- Aplicar conceptos básicos de Programación Orientada a Objetos
Ejercicio
Se desea colocar 4 notas de un alumno en específico, y conocer el promedio de esas
notas. Luego de ingresar todas las notas se debe poder consultar una sola nota que el
usuario desee, además se pueda consultar todas las notas en un solo mensaje. Por
último se debe poder reestablecer las notas. Debe haber un menú de opciones.
Solución
Se crea un proyecto nuevo, luego una nueva clase la que se llamará Nota. Las clases,
por convención, su nombre debe iniciar con inicial mayúscula.
Iniciamos con la creación de variables, a las que les colocaremos los modificadores de
acceso private para que solo puedan ser accedidas desde la misma clase y serán de
tipo double.
Estas serán accedidas desde los métodos dentro de la clase Nota. Se crean los
métodos getter y seller respectivos, Netbeans tiene esa opción solo se debe seleccionar
la línea luego con clic derecho nos vamos a lo siguiente:
Chequeamos todas las opciones y cliqueamos Refactor.
Se puede ver como se crean éstos métodos.
Ahora creamos los constructores, éstos se crean públicos y no deben devolver ningún
valor, tienen el mismo nombre que la clase a la que pertenece. El constructor es usado
para inicializar atributos del objeto con valores por defecto. El constructor implícito no
recibe valores:
El constructor explícito recibe los valores de las notas para asignar a los atributos, éste
sirve para asignar valores a las notas desde la creación del objeto. Puede haber varios
constructores en una clase.
Los parámetros que recibe el constructor son los que están dentro de los paréntesis.
La palabra reservada this se usa para hacer referencia a las variables que se declararon
al principio de la clase. Se usa este ejemplo para ver que aunque tengan el mismo
nombre, son distintas referencias, el this.nota3 es la variable global nota3 que puede
ser usada en toda la case, en cambio not3 solo puede ser accedida dentro del método,
en este caso es un constructor. En nota3=not3 no fue necesario usar el this pues las
variables se llaman de distinto manera, aunque podría ser sustituida esa línea por un
this.nota3=not3, no hay diferencia.
Ahora vamos con la creación de métodos. Éstos usualmente son nombre de acciones,
por convención deben iniciar con minúscula y si hay más de una palabra, cada palabra
después de la primera inician con mayúscula. Los métodos pueden retornar valores o
no hacerlo, depende de la necesitad. Un void significa que no retorna ningún valor.
El double en el método promediar significa que debe retornar un valor de ese tipo, y
this.promedio resuelve ese caso, que es lo que se necesita. ¿Por qué devolver un valor?
A veces no solo es necesario que el método realice sus cálculos, sino que se necesita
saber el resultado de esas acciones sin necesidad de acceder a ese valor de otra forma.
Ejemplo: si el promedio de esas notas valiera el 50% de la materia, se puede hacer
esto desde la clase
private double promedioConPorcentaje=promediar()*0.5;
Esa variable promedioConPorcentaje está llamando al método promediar() y está
guardando el valor de la variable promedio multiplicada por el porcentaje a pesar que
en el método haya un cálculo que hacer.
Ahora se crea el método para consultar una nota específica y que se muestre en
pantalla, éste método recibe el parámetro que indica que nota se quiere consultar:
Creamos una nueva clase que se llame Operaciones que va a heredar de la clase Nota,
esto se hace colocando la palabra extends luego de creada la clase.
Esta clase tiene un método que llenará las 4 notas según las ingrese el usuario:
Como la clase Operaciones hereda de Nota se puede acceder a los métodos públicos
setter que se tienen en la clase Nota, ocupamos esos métodos mandando el parámetro
ya convertido a double y al final llamamos al método verMenu() que es el menú
principal con el que se puede ver una sola nota, ver todas las notas, ver el promedio,
reasignar las notas y por último salir de la aplicación. Aquí es donde se mandan a
llamar los métodos correspondientes a cada acción pedida por el usuario. Este menú
se llama a si mismo después de realizar una cualquier acción con el fin de volver al
menú principal siempre.
Se crea el método para mostrar todas las notas guardadas que accede a los métodos
get de la clase padre:
Ahora se hace el método que pregunta qué nota quiere consultar el usuario:
Este método manda a llamar a conocerNota(int numeroDeNota) de la clase padre que
muestra en pantalla la nota requerida.
Para ir finalizando se debe abrir la clase donde está el main para escribir en su código
Se va a crear el objeto de la clase operaciones, para efecto de explicación se llamará
“objeto” aunque puede tener el nombre que se crea conveniente. El objeto (igual como
se definiría una variable String) debe definirse que sea de la clase Operaciones.
Puede observarse como el objeto se inicializa con el constructor implícito:
En un caso distinto bien pudiésemos crear el objeto asignándole las notas iniciales y
quedaría así:
Operaciones objeto=new Operaciones(6.0, 7.4, 2.3, 9.0);
Con esa línea inicializamos los atributos nota1, nota2, nota3, nota4 del objeto con los
valores 6.0, 7.4, 2.3 y 9.0 respectivamente y se evitaría pedir que el usuario ingrese las
notas desde un inicio, pero claro que en nuestro caso no sería conveniente.
Para iniciar ya de lleno con la aplicación se manda a llamar el método agregarNotas()
que ya se ha descrito.
Cabe mencionar que cuando tecleamos el punto (.) después del objeto podemos ver
los métodos y atributos que contiene:
Propuesta
- Crear una opción para que se pueda cambiar una sola nota y no se tenga
que reestablecer todas al mismo tiempo.
- Crear un método que determine si el alumno tiene un promedio mayor a 6 y
que apruebe la materia.
CLASES
public class Nota{ private double promedio, nota1, nota2, nota3, nota4; public Nota() { this.promedio=0; this.nota1=0; this.nota2=0; this.nota3=0; this.nota4=0; } public Nota(double nota1, double nota2, double not3, double not4) { this.nota1=nota1; this.nota2=nota2; nota3=not3; nota4=not4; } public double promediar(){ promedio = (nota1+nota2+nota3+nota4)/4; return this.promedio; } public void conocerNota(int numeroDeNota) { switch (numeroDeNota){ case 1: JOptionPane.showMessageDialog(null, "Nota 1: " + getNota1()); break; case 2: JOptionPane.showMessageDialog(null, "Nota 2: " + getNota2()); break; case 3: JOptionPane.showMessageDialog(null, "Nota 3: " + getNota3()); break; case 4: JOptionPane.showMessageDialog(null, "Nota 4: " + getNota4()); break; } } public double getPromedio() { return promedio; } public void setPromedio(double promedio) { this.promedio = promedio; } public double getNota1() { return nota1; } public void setNota1(double nota1) { this.nota1 = nota1; } public double getNota2() { return nota2; } public void setNota2(double nota2) { this.nota2 = nota2; } public double getNota3() {
return nota3; } public void setNota3(double nota3) { this.nota3 = nota3; } public double getNota4() { return nota4; } public void setNota4(double nota4) { this.nota4 = nota4; } } public class Operaciones extends Nota{ public void agregarNotas() { JOptionPane.showMessageDialog(null, "BIENVENIDO :D \n \n Por favor ingrese las notas"); setNota1(Double.parseDouble(JOptionPane.showInputDialog(null,"Ingrese nota 1: "))); setNota2(Double.parseDouble(JOptionPane.showInputDialog(null,"Ingrese nota 2: "))); setNota3(Double.parseDouble(JOptionPane.showInputDialog(null,"Ingrese nota 3: "))); setNota4(Double.parseDouble(JOptionPane.showInputDialog(null,"Ingrese nota 4: "))); verMenu(); } public void verNotas() { String cadenaNotas = "\n Nota 1: "+ getNota1()+"\n Nota 2: "+ getNota2()+"\n Nota 3: "+ getNota3()+ "\n Nota 4: "+ getNota4(); JOptionPane.showMessageDialog(null, cadenaNotas); } public void verMenu(){ int opcion= Integer.parseInt(JOptionPane.showInputDialog(null, "MENU::::::::::::::"+ "\n 1-Ver una nota \n 2-Ver todas las notas \n 3-Ver promedio \n 4-Asignar Notas" + "\n \n \n 5-Salir")); switch (opcion){ case 1: preguntarQueNotaQuiere(); break; case 2: verNotas(); break; case 3: JOptionPane.showMessageDialog(null, "El promedio es: "+ promediar()); break; case 4: agregarNotas(); break; case 5: System.exit(0); } verMenu(); } public void preguntarQueNotaQuiere(){ int opcion=Integer.parseInt(JOptionPane.showInputDialog(null, "¿Qué nota desea conocer?" + "\n 1-Primera \n 2-Segunda \n 3-Tercera \n 4-Cuarta")); conocerNota(opcion); } }