28
Programación Orientada a Objetos Usando el diagrama de clases

Programación Orientada a Objetos Usando el diagrama de clases

Embed Size (px)

Citation preview

Page 1: Programación Orientada a Objetos Usando el diagrama de clases

Programación Orientada a Objetos

Usando el diagrama de clases

Page 2: Programación Orientada a Objetos Usando el diagrama de clases

OBJETOS

La POO es un método muy parecido a la forma en que hacemos cosas. Se caracteriza por las siguientes propiedades: Objetos, Clases, Encapsulación, Herencia y Polimorfismo.

Un programa orientado a objetos está formado por una colección de objetos interaccionando conjuntamente para representar y solucionar algún problema.

Page 3: Programación Orientada a Objetos Usando el diagrama de clases

OBJETOS

Gráficamente, podríamos observar un programa orientado a objetos, como:

Objeto1

Objeto2

Objeto3

Objeto4

Objeto5

Objeto6

Objeto8

Objeto7

Page 4: Programación Orientada a Objetos Usando el diagrama de clases

QUÉ SON LOS OBJETOS

Son entes, entidades, sujetos o cosas que encontramos en el dominio del problema de nuestra realidad. Entiéndase, en situaciones o problemas de nuestro mundo cotidiano empresarial, organizacional o institucional, que se requiere manejar o solucionar mediante la computadora.

Page 5: Programación Orientada a Objetos Usando el diagrama de clases

CÓMO ESTÁN FORMADOS LOS OBJETOS

Los objetos están formados por dos elementos:

1. Datos que representan su estructura. En otras palabras; atributos que describen su forma o apariencia

2. Métodos que implementan las funciones propias de su comportamiento; es decir, métodos que manipulan los datos para hacer la entrada, proceso y salida de los mismos

Page 6: Programación Orientada a Objetos Usando el diagrama de clases

ESQUEMA DE UN OBJETO

El objeto se representa con un rectángulo redondeado y está formado por dos partes: una parte se compone de los datos que representan la estructura del objeto, y la otra, parte de los métodos que implementan las operaciones que se deben realizar sobre los datos

Objeto

Dato1Dato2Dato3

---datoN

Método1()Método2()Método3()

---MétodoN()

Page 7: Programación Orientada a Objetos Usando el diagrama de clases

CUÁNDO Y CÓMO IDENTIFICAR LOS OBJETOS

En el entorno del proceso de programación, en el paso de análisis del problema, el elemento central es el objeto; es decir, se estudia el problema y se identifican los objetos involucrados y sus relaciones.

Page 8: Programación Orientada a Objetos Usando el diagrama de clases

EJEMPLO DE CÓMO IDENTIFICAR LOS OBJETOS

Definición del problema (Paso 1 del proceso de programación)

Elaborar un programa que permita calcular el sueldo de los empleados de una empresa

Análisis del problema (paso 2)

1. Planteamiento del problemaEn la empresa X hay varios empleados, por cada empleado se tienen los datos: Nombre, Número de horas trabajadas y la Cuota que se le paga por hora trabajada. Cada quincena se requiere emitir un cheque con los datos: nombre del empleado y sueldo que se le debe pagar. El sueldo se calcula multiplicando horas trabajadas por cuota por hora.Resumiendo desde la perspectiva de entrada-proceso-salida:

Información de salida: Nombre y SueldoDatos que se deben leer: Nombre, Horas trabajadas y Cuota por horaProceso a seguir: Calcular Sueldo = Horas trabajadas x Cuota por hora

Page 9: Programación Orientada a Objetos Usando el diagrama de clases

EJEMPLO DE CÓMO IDENTIFICAR LOS OBJETOS

Análisis del problema (paso 2)

2. Identificar objetosPara identificar los objetos en el dominio del problema, se debe estudiar el caso expuesto, con el propósito de distinguir y determinar el objeto o colección de objetos, que el programa debe representar y manejar; para solucionar la situación planteada.

¿Cómo se identifican los objetos?

Se buscan los sustantivos presentes en la especificación; los sustantivos son los objetos, en el presente problema se menciona un sustantivo, los empleados.

Page 10: Programación Orientada a Objetos Usando el diagrama de clases

EJEMPLO DE CÓMO IDENTIFICAR LOS OBJETOS

Análisis del problema (paso 2)

2. Identificar objetosAsí, tenemos que nuestro programa debe representar una colección de empleados como la siguiente figura:

ObjetoEmpleado

NombreJuan

Horas trabajadas40

Cuota por hora50.00

Sueldo2000.00

ObjetoEmpleado

NombrePedro

Horas trabajadas45

Cuota por hora100.00

Sueldo4500.00

------

ObjetoEmpleado

NombreMateo

Horas trabajadas55

Cuota por hora80.00

Sueldo4400.00

Page 11: Programación Orientada a Objetos Usando el diagrama de clases

CLASES Y SU RELACIÓN CON LOS OBJETOS

La clase es una representación abstracta que describe a un conjunto de objetos; en otras palabras, es un tipo de dato abstracto que representa a un conjunto de objetos que tienen en común una misma estructura (da datos) y un mismo comportamiento (las mismas funciones), es decir, son la misma cosa y hacen lo mismo.

En la fase de diseño del programa, el elemento central es la clase; porque un conjunto de objetos iguales, debe ser representado en forma abstracta por una clase, que fungirá como una plantilla o molde, para crear todos y cada uno de los objetos necesarios.

Page 12: Programación Orientada a Objetos Usando el diagrama de clases

CLASES Y SU RELACIÓN CON LOS OBJETOS

3. Diseño del programa

Para diseñar el programa, se elabora o diseña el algoritmo que soluciona el problema, se diseña la lógica de las clases en pseudocódigo; después se hace la prueba de escritorio

Page 13: Programación Orientada a Objetos Usando el diagrama de clases

DETERMINAR LA CLASE

Una vez identificados los objetos del problema, se procede a diseñar el diagrama de clases, para lo cual primero debemos determinar la(s) clase(s) que necesitaremos, y luego dibujar el diagrama con la representación de la(s) clase(s) y sus instancias.

Los objetos identificados en el punto anterior se convierten en clases, que como ya se mencionó, son la representación abstracta de un conjunto de objetos.

En el problema mencionado se tiene un conjunto de objetos empleados; clase empleado:

Empleado

Page 14: Programación Orientada a Objetos Usando el diagrama de clases

REPRESENTACIÓN DE LA CLASE Y SUS INSTANCIAS

Empleado

ObjetoEmpleado

NombreJuan

Horas trabajadas40

Cuota por hora50.00

Sueldo2000.00

ObjetoEmpleado

NombrePedro

Horas trabajadas45

Cuota por hora100.00

Sueldo4500.00

------

ObjetoEmpleado

NombreMateo

Horas trabajadas55

Cuota por hora80.00

Sueldo4400.00

Page 15: Programación Orientada a Objetos Usando el diagrama de clases

MÉTODOS Y ENCAPSULACIÓN

Métodos Los métodos son las acciones que implementan el

comportamiento o las funciones de un objeto; por ejemplo, leer o dar entrada a los datos, hacer cálculos, imprimir o dar salida de datos.

EncapsulaciónSignifica colocar juntos los datos y los métodos dentro de un

objeto. Uno de los principios más importantes de la POO, es que el programador debe pensar en el código y los datos juntos durante el diseño del programa.

Page 16: Programación Orientada a Objetos Usando el diagrama de clases

ENCAPSULACIÓN

Al diseñar la estructura de una clase, se debe hacer dos cosas:

1. Definir los datos que representarán a los objetos de la clase. Los datos que representan a un objeto son de dos tipos: datos que se leen y datos que se generan por cálculos

2. Definir los métodos que implementarán las acciones de los objetos. Los métodos son de dos tipos: un tipo son los métodos que colocan o establecen (setters) valores a los datos del objeto; ya sea a través de leerlos o mediante cálculos. El otro tipo son métodos que acceden u obtienen (getters) los valores de los datos para utilizarlos.

Page 17: Programación Orientada a Objetos Usando el diagrama de clases

ENCAPSULACIÓN

¿Cómo identificar los métodos? Se buscan los verbos presentes en el planteamiento del problema, en nuestro caso se debe

Imprimir como salida: Nombre y SueldoLeer los datos: Nombre, Horas trabajadas y Cuota por horaCalcular el Sueldo = Horas trabajadas x Cuota por hora

Típicamente, para establecer los valores para cada uno de los datos de un objeto, se requiere definir y diseñar un método perteneciente al objeto que permita colocar (setter) el valor a cada dato; ya sea que lo lea o lo calcule

Continua…

Page 18: Programación Orientada a Objetos Usando el diagrama de clases

ENCAPSULACIÓN

Así mismo, para dar salida al valor de un dato, se requiere definir y diseñar un método que permita acceder (getter) al valor del dato para darlo como salida, esto es, un método para obtener cada dato.

En la POO, la encapsulación de datos es una disciplina que se debe respetar siempre. Para establecer u obtener los datos de un objeto, se debe hacer mediante métodos del mismo objeto, y no leerlos o accederlos directamente.

Page 19: Programación Orientada a Objetos Usando el diagrama de clases

ENCAPSULACIÓN

Ejemplo

En el ejemplo de calcular el sueldo de varios empleados, tenemos que cada objeto de empleado se representa mediante los datos:nombreEmp Nombre del empleadohorasTrab Número de horas trabajadascuotaHora Cuota por horasueldo Sueldo del empleado

Para cada dato se debe definir un método para establecer o colocar (setter) el valor que tomará, ya sea al leer el dato, por cálculo o de otra forma

Page 20: Programación Orientada a Objetos Usando el diagrama de clases

ENCAPSULACIÓN

EjemploY, otro método que permita obtener o acceder (getter) al

valor para utilizarlo, ya sea para hacer cálculos, para imprimirlo o hacer otra cosa con él. En el problema antes mencionado se requieren los siguientes métodos:

establecerNombreEmp(). Para leer (entrada) el valor del dato nombreEmp

establecerHorasTrab(). Para leer (entrada) el valor del dato horasTrab

establecerCuotaHora(). Para leer (entrada) el valor del dato cuotaHora

calcularSueldo(). Para calcular y establecer el valor del dato sueldo

obtenerNombreEmp(). Para acceder e imprimir el valor del dato nombreEmp

obtenerSueldo(). Para acceder e imprimir el valor del dato sueldo

Page 21: Programación Orientada a Objetos Usando el diagrama de clases

DIAGRAMA DE CLASES

Empleado

nombreEmphorasTrabcuotaHora

Sueldo

establecerNombreEmp()establecerHorasTrab ()establecerCuotaHora ()

calcularSueldo()obtenerNombreEmp()

obtenerSueldo()

Page 22: Programación Orientada a Objetos Usando el diagrama de clases

GENERAR INSTANCIAS DE UNA CLASE

Empleado

nombreEmphorasTrabcuotaHora

Sueldo

establecerNombreEmp()establecerHorasTrab ()establecerCuotaHora ()

calcularSueldo()obtenerNombreEmp()

obtenerSueldo()

ObjetoEmpleadoNombre

JuanHoras trabajadas

40Cuota por hora

50.00Sueldo

2000.00establecerNombreEmp()establecerHorasTrab ()establecerCuotaHora ()

calcularSueldo()obtenerNombreEmp()

obtenerSueldo()

ObjetoEmpleadoNombreMateo

Horas trabajadas55

Cuota por hora80.00Sueldo

4400.00establecerNombreEmp()establecerHorasTrab ()establecerCuotaHora ()

calcularSueldo()obtenerNombreEmp()

obtenerSueldo()

Page 23: Programación Orientada a Objetos Usando el diagrama de clases

ARQUITECTURA MODELO-VISTA-CONTROLADOR

El diagrama de clases que se ha diseñado es lo que constituye el modelo del programa, sin embargo este modelo necesita ser usado en la solución del problema, y para hacerlo se requiere la arquitectura modelo-vista-controlador; la cual establece que un programa orientado a objetos está formado por tres partes:

Page 24: Programación Orientada a Objetos Usando el diagrama de clases

ARQUITECTURA MODELO-VISTA-CONTROLADOR

El modelo. Es la clase o conjunto de clases identificadas en el dominio del problema, mismas que representan al objeto u objetos presentes en el problema.

Las vista. Es la interfaz de usuario; es decir, lo que el usuario observará en la pantalla, impresora u otro dispositivo de salida

El controlador. Es la parte que permite que el usuario interactúe con la vista para utilizar el modelo que representa y soluciona el problema

Controlador

Modelo Vista

Page 25: Programación Orientada a Objetos Usando el diagrama de clases

ARQUITECTURA MODELO-VISTA-CONTROLADOR

Nota. En programas no muy complejos o que la vista es sencilla, la parte controlador incluye a la parte vista; y la arquitectura del programa se simplifica a dos partes.

Aplicando la arquitectura al problema del Empleado, el diagrama queda:

Empleado

nombreEmphorasTrabcuotaHora

Sueldo

establecerNombreEmp()establecerHorasTrab ()establecerCuotaHora ()

calcularSueldo()obtenerNombreEmp()

obtenerSueldo()

EjecutaEmpleado

Page 26: Programación Orientada a Objetos Usando el diagrama de clases

Algoritmo CALCULAR SUELDO DE UN EMPLEADOClase Empleado 1. Declaraciones

DatosnombreEmp: CadenahorasTrab: EnterocuotaHora: Realsueldo: Real

2. Método estableceNombreEmp(nom: Cadena) a. nombreEmp = nom b. Fin Método establecerNombreEmp

3. Método estableceHorasTrab(horasTr: Entero) a. horasTrab = horasTr b. Fin Método estableceHorasTrab

4. Método estableceCuotaHora(cuotaHr: Real) a. cuotaHora = cuotaHr b. Fin Método estableceCuotaHora

5. Método calcularSueldo() a. sueldo = horasTrab * cuotaHora b. Fin Método calcularSueldo

Page 27: Programación Orientada a Objetos Usando el diagrama de clases

6. Método obtenerNombreEmp(): Cadena a. return nombreEmp b. Fin Método obtenerNombreEmp

7. Método obtenerSueldo(): Real a. return sueldo b. Fin Método obtenerSueldo

Clase EjecutaEmpleado 1. Menú pricnipal

a. Declaraciones Variables

nomEmp: CadenahrsTra: EnterocuoHr: Real

b. Declarar, crear e iniciar objetoEmpleado objEmpleado = new Empleado()

c. Solicitar Nombre, número de horas trabajadas y cuota por hora d. Leer nomEmp, hrsTra, cuoHr e. Establecer objEmpleado.establecerNombreEmp(nomEmp)

objEmpleado.establecerHorasTrab(hrsTra)objEmpleado.establecer.Cuotahora(cuoHr)

f. Calcular objEmpleado.calcularSueldo()

Page 28: Programación Orientada a Objetos Usando el diagrama de clases

Clase EjecutaEmpleado 1. Menú pricnipal

a. Declaraciones Variables

nomEmp: CadenahrsTra: EnterocuoHr: Real

b. Declarar, crear e iniciar objetoEmpleado objEmpleado = new Empleado()

c. Solicitar Nombre, número de horas trabajadas y cuota por hora d. Leer nomEmp, hrsTra, cuoHr e. Establecer objEmpleado.establecerNombreEmp(nomEmp)

objEmpleado.establecerHorasTrab(hrsTra)objEmpleado.establecer.Cuotahora(cuoHr)

f. Calcular objEmpleado.calcularSueldo() g. Imprimir objEmpleado.obtenerNombreEmp()

objEmpleado.obtenerSueldo() h. Fin Método principal

Fin Clase EjecutaEmpleadoFin