Sei sulla pagina 1di 26

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje.


Programación orientada a objetos aplicada en 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

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 2


Programación orientada a objetos aplicada en JAVA

Introducción

En esta etapa del proceso de formación se ha visto la


programación orientada a objetos (POO) y conceptos
como clase, objeto, herencia, polimorfismo, abstracción,
encapsulación entre otros conceptos y elementos. El
presente material de estudio busca que el aprendiz logre
comprender los fundamentos de la programación orientada
a objetos de forma aplicada, a partir de un programa ya
realizado mediante programación estructurada en el
lenguaje de programación JAVA.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 3


Programación orientada a objetos aplicada en JAVA

Mapa de contenido

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 4


Programación orientada a objetos aplicada en JAVA

Desarrollo de contenidos

1. Generalidades

La programación orientada a objetos (POO) es un paradigma de programación que surgió


a principios de los años 80 y hoy día es el más empleado en la industria de desarrollo
de software. La palabra paradigma indica una forma diferente de pensar o hacer algo,
por lo tanto, es necesario tener la mente abierta para realizar los programas aplicando
este nuevo paradigma de programación y así mejorar las competencias técnicas como
analista y desarrollador de sistemas de información.

Figura 1. Estructura de la programación orientada a objetos

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 5


Programación orientada a objetos aplicada en JAVA

1.1 Aplicación de ejemplo con programación estructurada

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.

Figura 2. Desarrollo con programación estructurada

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.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 6


Programación orientada a objetos aplicada en JAVA

Figura 3. Salida del programa estructurado en JAVA

2. Aplicando el paradigma POO (Programación Orientada a Objetos)

Para crear una aplicación orientada a objetos,


el programador debe enfocarse en identificar
los elementos que forman parte de la solución
(clases), la estructura o composición de cada
elemento (atributos y métodos) y la manera
como debe interactuar con otros elementos para
responder a los requerimientos de la aplicación
(relaciones).

O
PO

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 7


Programación orientada a objetos aplicada en JAVA

2.1 Definición de clases

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 partir del enunciado, es posible identificar clases como:

• 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.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 8


Programación orientada a objetos aplicada en JAVA

Figura 4. Estructura de clases.

2.1.1 Definición de atributos

Del mismo enunciado se pueden extraer los atributos de las clases, es


decir, la información necesaria que se debe mantener de una clase. En el
caso de la clase Aplicación, esta no requiere atributos, debido a que no
necesita mantener información almacenada, es decir, no requiere estado.
Caso contrario ocurre con la clase Estudiante, de la cual sí se requiere
mantener su información como su nombre y sus notas, esto significa que sí
requiere estado.

Estudiante { nombre, notaParcial1, notaParcial2, notaFinal }

Figura 5. Definición de atributos de la clase estudiante.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 9


Programación orientada a objetos aplicada en JAVA

2.1.2 Definición del constructor

A partir de los atributos identificados, es el momento de definir cuáles de


ellos deben ser solicitados al momento de crear un nuevo estudiante. Se
pueden definir varios constructores (sobrecarga de constructores), que
permitan crear estudiantes de diferentes maneras.

Figura 6. Definición de constructores

El atributo notaFinal no debe solicitarse en el constructor porque la idea del programa es


calcularlo a partir de las notas parciales.

2.1.3 Definición de los métodos

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.

Métodos: funciones técnicamente denominadas con este nombre, representan acciones


propias que puede realizar el objeto.

Ejemplo
CalcularNotaFinal()
Este método usa los atributos notaParcial1 y nota Parcial2 para calcular la nota final.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 10


Programación orientada a objetos aplicada en JAVA

Figura 7. Ejemplo de métodos

2.1.4 Definición de la encapsulación

La encapsulación en un programa se da cuando se definen los atributos


de una clase con el nivel de acceso más restrictivo para que el acceso o la
modificación de los atributos de esa clase solo sean posibles a través de
sus métodos.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 11


Programación orientada a objetos aplicada en JAVA

Figura 8. Encapsulación dentro de la clase

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 12


Programación orientada a objetos aplicada en JAVA

2.2 Abstracción

Un estudiante, además de nombre y notas puede poseer otra información como su


identificación, teléfono, dirección, edad, correo, tipo de sangre, color favorito, entre
otros. La acción de determinar cuáles son las características esenciales de un objeto
para responder a un determinado problema se denomina Abstracción. En la presente
aplicación, este concepto se evidencia cuando se seleccionan únicamente los atributos y
métodos requeridos para cumplir con el objetivo del programa.

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.

Figura 9. Creando los objetos en la aplicación

De la misma manera, es posible crear objetos de la clase Estudiante, empleando el


constructor, que recibe como argumentos el nombre del estudiante, su nota parcial 1 y su
nota parcial 2.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 13


Programación orientada a objetos aplicada en JAVA

Figura 10. Creando los objetos en la aplicación

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.

2.4 Ejecución de métodos

Después de crear los objetos, es posible interactuar con todos sus métodos, establecidos
en el código de la clase.

Figura 11. Creando la clase aplicación

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 14


Programación orientada a objetos aplicada en JAVA

La clase Aplicación, es la clase que contiene el método main() y es la encargada por


código de crear los objetos necesarios de la clase Estudiante e invocar sus respectivos
métodos, controlando el flujo de ejecución del programa.

Figura 12. Ejecutando los métodos desde la aplicación

El resultado de ejecutar la aplicación es el siguiente:

Figura 13. Ejecutando la aplicación

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 15


Programación orientada a objetos aplicada en JAVA

3. Ejemplo de programación

Enunciado del ejercicio

Una empresa requiere una aplicación que le permita obtener la siguiente información:

• Número total de empleados.


• Nombre y salario de cada uno de sus empleados.
• Total de dinero pagado por los salarios de todos los empleados.
• Nombre, cargo y salario del empleado que más dinero gana.
• Nombre, cargo y salario del empleado que menos dinero gana.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 16


Programación orientada a objetos aplicada en JAVA

3.1 Solución de programación estructurada

public class Aplicacion {

public static void main(String[] args) {

String nombre, cargo;


double salario, total=0,mayorSalario,menorSalario;
int posicion=0;
//Definición de las estructuras de almacenamiento
ArrayList<String> nombres = new ArrayList<String>();
ArrayList<Double> salarios = new ArrayList<Double>();
ArrayList<String> cargos = new ArrayList<String>();
int cantidad=Integer.parseInt(JOptionPane.showInputDialog(null,”Ingrese
la cantidad de empleados”));
for(int emp=1;emp<=cantidad;emp++)
{
//lectura de los datos de cada empleado
nombre=JOptionPane.showInputDialog(null,”Ingrese el nombre
del empleado”);
salario=Double.parseDouble(JOptionPane.showInputDialog(null,”Ingrese
el salario del empleado”));
cargo=JOptionPane.showInputDialog(null,”Ingrese el cargo
del empleado”);
//almacenamiento de los datos
nombres.add(nombre);
salarios.add(salario);
cargos.add(cargo);
}
//número de empleados
System.out.println(“El numero total de empleados es:”+cantidad);
//nombre y salario de cada empleado
System.out.println(“Los nombres y salarios de los empleados son:”);
for(int emp=0;emp<cantidad;emp++)
{
System.out.println(“Nombre:”+nombres.get(emp)+” Salario:”+salarios.
get(emp));
}
//total de dinero pagado por los salarios de todos los empleados

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 17


Programación orientada a objetos aplicada en JAVA

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));
}

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 18


Programación orientada a objetos aplicada en JAVA

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.

Figura 14. Salida programa estructurado

3.2 Solución de programación orientada objetos

La clase Empleado: esta clase es responsable de gestionar la información de cada


empleado.

Figura 15. Estructura de la clase empleado

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 19


Programación orientada a objetos aplicada en JAVA

La clase Empresa: esta clase contiene un conjunto de empleados almacenados dentro


de un ArrayList y gestiona todas las funciones aplicables a todos los empleados de la
empresa.

/*
* 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 {

private ArrayList<Empleado> empleados;


//constructor
public Empresa()
{
empleados= new ArrayList<Empleado>();
}
//método que agrega empleados a la empresa
public void contratarEmpleado(Empleado e)
{
empleados.add(e);
}
//método que obtiene el total de empleados
public int getTotalEmpleados()
{
return empleados.size();
}
//método que muestra el nombre y salario de todos los empleados
public void nombreSalario()
{
for(Empleado e:empleados)
{
System.out.println(“Nombre: “+e.getNombre()+” Salario: “+e.getSalario());
}
}
//método que retorna el total de dinero pagado a todos los empleados
public double getTotalSalarios()
{
double total=0;
for(Empleado e:empleados)

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 20


Programación orientada a objetos aplicada en JAVA

{
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());
}
}

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 21


Programación orientada a objetos aplicada en JAVA

Clase aplicación

Figura 16. Clase aplicación

Resultados

Figura 17. Salida del programa orientado a objetos

Se puede apreciar que la salida del programa es la misma, sin embargo en su estructura
y el paradigma utilizado fue diferente.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 22


Programación orientada a objetos aplicada en JAVA

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.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 23


Programación orientada a objetos aplicada en JAVA

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.

Acoplamiento (coupling): medida del grado en el que un objeto o componente depende


de otro. Bajo acoplamiento minimiza las dependencias y es una indicación de un buen
diseño.

Agregación (aggregation): relación en la que un objeto se compone o está construido de


uno o más objetos, de modo que la colección completa representa un todo. Las relaciones
de agregación se especifican entre clases y se reflejan en instancias de objetos.

Algoritmo (algorithm): método que describe cómo se resuelve un problema en término


de las acciones que se ejecutan y especifica el orden en que se ejecutan estas acciones.
Los algoritmos ayudan al programador a planificar un programa antes de su escritura en
un lenguaje de programación.

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.

Encapsulamiento, encapsulación (encapsulation): localización y protección de las


características internas y estructura de un objeto. Combinación de métodos y datos en
una única estructura de datos. En Java se conoce como clase.

Función (function): construcción matemática a la que se pueden aplicar valores y que


devuelve un resultado.

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.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 24


Programación orientada a objetos aplicada en JAVA

Bibliografía

Deitel, H., Deitel, P. (2016). Como programar en JAVA. México: Pearson Educación.

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 25


Programación orientada a objetos aplicada en JAVA

Control del documento

PROGRAMACIÓN ORIENTADA A
OBJETOS APLICADA EN JAVA

Centro Industrial de Mantenimiento Integral - CIMI


Regional Santander
Líder línea de producción: Santiago Lozada Garcés
Rosa Elvia Quintero Guasca
Asesores pedagógicos:
Claudia Milena Hernández Naranjo
Líder expertos temáticos: Rita Rubiela Rincón Badillo

Andrés Julián Valencia O. (V1)


Experto temático:
Edward José Beltrán L. (V2)

Diseño multimedia: Eulises Orduz Amezquita

Programador: Francisco José Lizcano Reyes

Producción de audio: Víctor Hugo Tabares Carreño

Este material puede ser distribuido, copiado


y exhibido por terceros si se muestra en los Java es una marca comercial registrada de
créditos. No se puede obtener ningún beneficio Oracle y / o de sus filiales. Otros nombres
comercial y las obras derivadas tienen que pueden ser marcas comerciales de sus
estar bajo los mismos términos de la licencia respectivos propietarios.
que el trabajo original.

Registered trademark

FAVA - Formación en Ambientes Virtuales de Aprendizaje.

SENA - Servicio Nacional de Aprendizaje. 26

Potrebbero piacerti anche