AP07 OA Prog Obj Java
AP07 OA Prog Obj Java
Estructura de contenidos
Pág.
Introducción........................................................................................................................3
Mapa de contenido.............................................................................................................4
1. Generalidades................................................................................................................5
1.1 Aplicación de ejemplo con programación estructurada................................................6
2. Aplicando el paradigma POO (Programación Orientada a Objetos)..............................7
2.1 Definición de clases.....................................................................................................8
2.1.1 Definición de atributos...............................................................................................9
2.1.2 Definición del constructor....................................................................................... 10
2.1.3 Definición de los métodos...................................................................................... 10
2.1.4 Definición de la encapsulación................................................................................11
2.2 Abstracción................................................................................................................ 13
2.3 Objetos...................................................................................................................... 13
2.4 Ejecución de métodos............................................................................................... 14
3. Ejemplo de programación........................................................................................... 16
3.1 Solución de programación estructurada.................................................................... 17
3.2 Solución de programación orientada objetos............................................................ 19
3.3 Conclusiones............................................................................................................. 23
Glosario........................................................................................................................... 24
Bibliografía...................................................................................................................... 25
Control del documento.................................................................................................... 26
Introducción
Mapa de contenido
Desarrollo de contenidos
1. Generalidades
Se requiere una aplicación que lea el nombre de 3 estudiantes de un curso, las 2 notas
parciales de cada uno y presente un mensaje con sus nombres y notas finales. Si la nota
final es inferior a 3, presentar el mensaje “REPROBADO”, en caso contrario presentar el
mensaje “APROBADO” a cada estudiante.
Se puede observar en el código del programa, que pese a ser JAVA un lenguaje de
programación orientado a objetos, la manera en que se realiza el programa es totalmente
estructurada, con un inicio y un fin predeterminado, empleando estructuras de control de
flujo como el for y el if y manteniendo siempre la misma ruta de ejecución del programa.
O
PO
El primer paso para desarrollar una aplicación orientada a objetos es identificar las
clases que forman parte de la solución, estas pueden obtenerse del enunciado o los
requerimientos dados por el cliente, que en el caso del programa solicitado es el siguiente:
“Se requiere una aplicación que lea el nombre de 3 estudiantes de un curso, las 2 notas
parciales de cada uno y presente un mensaje con sus nombres y notas finales. Si la nota
final es inferior a 3, presentar el mensaje “REPROBADO”, en caso contrario presentar el
mensaje “APROBADO” a cada estudiante…”
aplicación Clase
nombre Atributo
estudiantes Clase
de un Relación (No tenida en cuenta por el
alcance del programa)
curso Clase (No tenida en cuenta por el alcance
del programa)
2 notas parciales Atributos
notas finales Atributo calculado por método
presentar el mensaje Método
• A
plicación: clase que contiene el método main y donde se puede establecer
el flujo del programa.
• E
studiante: clase a partir de la cual se pueden crear estudiantes, asignarles
notas, calcular sus notas finales.
• C
urso: clase que contiene estudiantes y por lo tanto permite realizar operaciones
sobre ellos. Esta clase es importante para permitir que la aplicación crezca y
maneje diferentes cursos. Por ahora para responder a los requerimientos de la
aplicación, no es necesaria su utilización.
Ahora, se deben definir las funcionalidades que tendrá cada clase, estas
funcionalidades se establecen a través de sus métodos. Los métodos de
una clase tienen una alta relación con los atributos de la misma, por esa
razón a la hora de definir un método, se debe verificar si este es posible de
lograr con los atributos definidos.
Ejemplo
CalcularNotaFinal()
Este método usa los atributos notaParcial1 y nota Parcial2 para calcular la nota final.
2.2 Abstracción
2.3 Objetos
Con la clase Estudiante codificada, es posible crear objetos a partir de ella. Este concepto
también se conoce como instanciar la clase. Para crear un objeto, es necesario emplear
alguno de los constructores de la clase, definidos a través del código de la misma.
Ahora, la aplicación cuenta con dos objetos, a partir de los cuales puede interactuar e
invocar sus respectivos métodos. Cada objeto es independiente y es posible crear todos
los objetos que sean requeridos a partir de una determinada clase. Cada objeto tiene su
propio estado, es decir, cuenta con sus propios valores para sus atributos.
Después de crear los objetos, es posible interactuar con todos sus métodos, establecidos
en el código de la clase.
3. Ejemplo de programación
Una empresa requiere una aplicación que le permita obtener la siguiente información:
for(int emp=0;emp<cantidad;emp++)
{
total=total+salarios.get(emp);
}
System.out.println(“Total de dinero pagado a todos los empleados:”+total);
//nombre, cargo y salario del empleado que mas dinero gana
System.out.println(“El empleado que mas dinero gana es:”);
mayorSalario=salarios.get(0);
for(int emp=1;emp<cantidad;emp++)
{
if(salarios.get(emp)>mayorSalario)
{
mayorSalario=salarios.get(emp);
posicion=emp;
}
}
System.out.println(“Nombre:”+nombres.get(posicion)+” Cargo:”+cargos.
get(posicion)+” Salario:”+salarios.get(posicion));
//nombre, cargo y salario del empleado que menos dinero gana
System.out.println(“El empleado que menos dinero gana es:”);
menorSalario=salarios.get(0);
posicion=0;
for(int emp=1;emp<cantidad;emp++)
{
if(salarios.get(emp)<menorSalario)
{
menorSalario=salarios.get(emp);
posicion=emp;
}
}
System.out.println(“Nombre:”+nombres.get(posicion)+” Cargo:”+cargos.
get(posicion)+” Salario:”+salarios.get(posicion));
}
Con la programación estructurada todas las funciones se realizan sobre el mismo archivo,
el mantenimiento de la aplicación es más complejo y la adaptación a cambios es más
difícil.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
import java.util.ArrayList;
/**
*
* @author Usuario
*/
public class Empresa {
{
total=total+e.getSalario();
}
return total;
}
//método que muestra el nombre, cargo y salario del empleado que más dinero gana
public void empleadoMayorSalario()
{
Empleado empMayorSalario=empleados.get(0);
double maxSalario=empleados.get(0).getSalario();
for(Empleado e:empleados)
{
if(e.getSalario()>maxSalario)
{
maxSalario=e.getSalario();
empMayorSalario=e;
}
}
System.out.println(“El empleado que mas dinero gana es “);
System.out.print(“Nombre:”+empMayorSalario.getNombre());
System.out.print(“ Cargo:”+empMayorSalario.getCargo());
System.out.println(“ Salario:”+empMayorSalario.getSalario());
}
//método que muestra el nombre, cargo y salario del empleado que menos dinero
gana
public void empleadoMenorSalario()
{
Empleado empMenorSalario=empleados.get(0);
double menSalario=empleados.get(0).getSalario();
for(Empleado e:empleados)
{
if(e.getSalario()<menSalario)
{
menSalario=e.getSalario();
empMenorSalario=e;
}
}
System.out.println(“El empleado que menos dinero gana es “);
System.out.print(“Nombre:”+empMenorSalario.getNombre());
System.out.print(“ Cargo:”+empMenorSalario.getCargo());
System.out.println(“ Salario:”+empMenorSalario.getSalario());
}
}
Clase aplicación
Resultados
Se puede apreciar que la salida del programa es la misma, sin embargo en su estructura
y el paradigma utilizado fue diferente.
3.3 Conclusiones
• E
l uso de un lenguaje de programación orientada a objetos como Java, no
significa que todas las aplicaciones desarrolladas con el sean orientadas a
objetos.
• L
a ejecución de una aplicación estructurada u orientada a objetos es transparente
para el usuario final, las ventajas de un estilo de programación u otro son para
el programador.
• L
a programación orientada a objetos es un paradigma o estilo de programación
que se centra en identificar y programar los objetos que forman parte del mundo
real y crear sus respectivas interrelaciones para solucionar un determinado
problema.
• L
a programación orientada a objetos permite desarrollar un programa de una
manera más ordenada, reutilizable y fácil de mantener.
Glosario
Abstraction (abstracción): propiedad y/o técnica de software que oculta los detalles
de la implementación. Java soporta abstracción de clases y abstracción de métodos. La
abstracción de métodos se define separando el uso de un método sin conocer como está
implementado ese método. Si decide combinar la implementación, el programa cliente
será afectado. De modo similar la abstracción de clases oculta la implementación de la
clase del cliente.
Array (array, vector, lista): objeto contenedor que almacena una secuencia indexada de
los mismos tipos de datos. Normalmente los elementos individuales se referencian por el
valor de un índice. El índice es un valor entero que, suele comenzar, en 0 para el primer
elemento, 1 para el segundo y así sucesivamente.
Clase (clase): colección encapsulada de datos y operaciones que actúan sobre los
datos. El concepto de clase es fundamental en programación orientada a objetos. Una
clase consta de métodos y datos. Los métodos de una clase definen el conjunto de
operaciones permitidas sobre los datos de una clase (sus atributos). Una clase puede
tener muchas instancia de la clase u objetos.
Herencia (inheritance): una relación entre clases en que una subclase se extiende
desde una superclase.
Mensaje (message): una petición enviada a un objeto que solicita ejecutar una operación
determinada. El mensaje incluye un nombre y una lista opcional de parámetros.
Bibliografía
Deitel, H., Deitel, P. (2016). Como programar en JAVA. México: Pearson Educación.
PROGRAMACIÓN ORIENTADA A
OBJETOS APLICADA EN JAVA
Registered trademark