programación orientada objetos problemas, soluciones y programas

32
Programación Orientada Objetos Problemas, soluciones y Programas

Upload: guadalupe-rumbo

Post on 28-Jan-2016

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Programación Orientada Objetos Problemas, soluciones y Programas

Programación Orientada Objetos

Problemas, soluciones y Programas

Page 2: Programación Orientada Objetos Problemas, soluciones y Programas

Explicar el proceso global de solución de un problema usando un programa de computador. Esto incluye las etapas que debe seguir para resolverlo y los distintos elemenos que debe ir produciendo a medida que construye la solución.

lAnalizar un problema simple que se va a resolver usando un programa de computador, construyendo un modelo con los elementeos que intervienen en el problema y especificando los servicios que el programa debe ofrecer.

lExplicar la estructura de un programa de computador y el papel que desempeña cada uno de los elementos que lo componen.

lDesarrollar una solucion a un problema (un programa escrito en el lenguaje c++) usando expresiones simples, asignaciones, creación de objetos e invocación de sus métodos.

lUtilizar Anjuta como ambiente de desarrllo de programas y un espacio de trabajo predefinido, para completar una solución parcial del problema.

Objetivos pedagógicos

Page 3: Programación Orientada Objetos Problemas, soluciones y Programas

Problemas y Soluciones

3IPOO

problema

programa solución

cliente

usuario

programador

análisis

diseño

Implementación

proceso

el cliente tiene un problema que requiere del uso del computador

para resolverlo

el programador ejecuta unas tareas, en etapas,

para resolver el problema

el proceso es la secuencia de

etapas que debe seguir el

programador

en cada etapa, se realizan ciertas

tareas, con objetivos

específicos

etapas

el final del proceso se tiene la solución del problema

el programa de computador hace parte

de la solución

el programa se instala en el computador del cliente, quien lo usa

Verificación

Page 4: Programación Orientada Objetos Problemas, soluciones y Programas

Proceso construcción de la solución

OJO!! Cada una de las etapas de desarrollo esta apoyada por herramientas y lenguajes, que van a permitir al programador expresar el producto de su trabajo. Todos los conceptos de ingeniería de software y sus herramientas se ven en detalle en cursos más adelante en la carrera.

Análisis del problema: el objetivo de esta etapa es entender y especificar el problema que se quiere resolver. Al terminar, deben estar especificados los requerimientos funcionales, debe estar establecida la información del mundo del problema y deben estar definidos los requerimientos no funcionales.

Diseño de la solución: el objetivo es detallar, usando algún lenguaje (planos, dibujos, ecuaciones, diagramas, texto, etc.), las características que tendrá la solución antes de ser construida. Los diseños nos van a permitir mostrar la solución antes decomenzar el proceso de fabricación propiamente dicho. Es importante destacar que dicha especiación es parte integral de la solución.

Construcción de la solución: tiene como objetivo implementar el programa a partir del diseño y probar su correcto funcionamiento.

Page 5: Programación Orientada Objetos Problemas, soluciones y Programas

¿cómo entender un problema?

En general, todos los problemas se pueden dividir en estos tres aspectos.

Requerimiento funcional. En el caso de la programación, un requerimiento funcional hace referencia a un servicio que el programa debe proveer al usuario.

El mundo o contexto: en el que ocurre el problema. Si alguien va a escribir un programa para una empresa, no le basta con entender la funcionalidad que éste debe tener, sino que debe entender algunas cosas de la estructura y funcionamiento de la empresa. Requerimientos no funcionales: que corresponden a las restricciones o condiciones que impone el cliente al programa que se le va a construir.

Page 6: Programación Orientada Objetos Problemas, soluciones y Programas

¿cómo entender un problema?

Page 7: Programación Orientada Objetos Problemas, soluciones y Programas

¿cómo entender un problema? – Ejemplo

El problema: una empresa de aviación quiere construir un programa que le permita buscar una ruta para ir de una ciudad a otra, usando únicamente los vuelos de que dispone la empresa. Se quiere utilizar este programa desde todas

las agencias del país.

Cliente La empresa de aviaciónUsuario: Las agencias de viaje del pais

Requerimiento funcional:

R1:dadas dos ciudades C1y C2, el programa debe dar el itinerario para ir de C1 a C2, usando los vuelos de la empresa.

Mundo del problema

En el enunciado no esta explicito, pero para poder resolver el problema es necesario conocer todos los vuelos de la empresa y la lista de ciudades a la cual va. De cada vuelo es necesario conocer la ciudad de la que parte, la ciudad a la que llega, la hora de salida y la duración del vuelo. Aqui debe ir todo el conocimiento que tenga la empresa que pueda ser necesario para resolver los requerimientos funcionales.

Requerimiento no funcional

El unico requerimiento no funcional mencionadao en el enunciado es el de distribucion, ya que las agencias de viaje estan geograficamente dispersas y se debe tener esta caracteristica al momento de construir el programa.

Identificar los aspectos que hacen parte del problema

Page 8: Programación Orientada Objetos Problemas, soluciones y Programas

Requerimientos funcionales

Un requerimiento funcional es una operación que el programa que se va a construir debe proveer al usuario, y que esté directamente relacionada con el problema que se quiere resolver.

Un requerimiento funcional se describe a través de cuatro elementos:Un identificador y un nombre. Un resumen de la operación.Las entradas (datos) que debe dar el usuario para que el programa pueda realizar la operación.El resultado esperado de la operación. Hay tres tipos posibles de resultado en un requerimiento funcional: (1) una modificación de un valor en el mundo del problema, (2) el cálculo de un valor, o (3) una mezcla de los dos anteriores.

Page 9: Programación Orientada Objetos Problemas, soluciones y Programas

Requerimientos funcionales

Nombre R1:Dar el itinerario para ir de C1 a C2, usando los vuelos de la empresa.

Es conveniente asociar un identificador con cada requerimiento, para poder hacer facilmente referencia a él. En este caso el identificador es R1. Es aconsejable que el nombre de los requerimientos corresponda a un verbo en infinitivo, para dar una idea clara de la acción asociada con la operación. En este ejemplo el verbo asociado con el requerimeirnto es dar

Resumen Permitir conocer las rutas entre dos ciudades, usando los vuelos de la empresa. es una frase corta que explica sin mayores detalles el requerimiento funcional

Entradas Vuelos de la empresa y ciudades a la que va cada vuelo.Las entradas se refiere a los valores que debe entar el usuario para resolver el requerimiento. El requerimeinto puede tener 0 o muchas entradas. Cada entrada debe tener un nombre que indique claramente su contenido. Se debe usar nombres cortos.

Resultado Itinerario entre dos ciudades

Page 10: Programación Orientada Objetos Problemas, soluciones y Programas

El Modelo del Mundo del Problema

En este segundo componente del análisis, el objetivo es entender el mundo en el que ocurre el problema y recopilar toda la información necesaria para que el programador pueda escribir el programa. Identificar Entidades sus características y sus operaciones.

Page 11: Programación Orientada Objetos Problemas, soluciones y Programas

Entidades : características , operaciones y relaciones

Es buena practica empezar por identificar la clase más importante del problema.Cuando el nombre de la entidad es compuesto se usa por convención una letra mayúscula al comienzo de cada palabra.No es posible usar tildes en los nombres de las clases

Page 12: Programación Orientada Objetos Problemas, soluciones y Programas

Entidades sus características y sus operaciones

Modelar las características

Los nombre de los atributos deben ser significativos ( dar una idea clara de lo que representan)

El nombre de un atributo debe ser único en la clase.

Clase Vuelo

Atributos Valores Posibles

ciudadLlegada cadena de caracteres

ciudadPartida cadena de caracteres

horaLlegada numero

horaSalida numero

duracion entero

Clase Ciudad

Atributos Valores Posibles

nombre cadena de caracteres

pais cadena de caracteres

temperatura cadena de caracteres

altura número

poblacion número

Page 13: Programación Orientada Objetos Problemas, soluciones y Programas

Problemas y Soluciones

Caso de estudio 1: Programa de un juego de canicas entre dos amigos.

Dos amigos Pepito y Luisita se encuentra para jugar canicas en el primer recreo del tercer día de la semana. Cada uno trae en su bolsa de canicas y en ella 5 canicas. El juego inicia justo después de 10 minutos del recreo y Pepito gana una canica a Luisita, sin embargo, en los siguientes tres juegos consecutivos gana Luisita. En cada juego se gana o pierde una canica.

Pepito de los ahorros de su recreo compra 15 canicas y las guarda en su bolsa. ¿Hasta el momento cuántas canicas tiene cada uno? Y ¿cuántas canicas tienen entre los dos? Con la compra de canicas de Pepito su bolsa quedo muy pesada y a Pepito se le hace un agujero y se le cayeron todas sus canicas. ¿Hasta el momento cuántas canicas tiene cada uno? Y ¿cuántas canicas tienen entre los dos?

Trabajar en casa: Luisita regala una tercera parte de sus canicas a Pepito, ¿cuantas canicas le quedan?

Page 14: Programación Orientada Objetos Problemas, soluciones y Programas

Problemas y Soluciones

Caso de estudio 1: Programa que simula un juego de canicas.Requerimientos

 

Programa de un juego de canicas entre dos amigos.

 

CLIENTE 

USUARIO 

REQUERIMIENTO FUNCIONAL

 

MUNDO DEL PROBLEMA

 

REQUERIMIENTO NO FUNCIONAL

 

Page 15: Programación Orientada Objetos Problemas, soluciones y Programas

Problemas y Soluciones

Caso de estudio 1: Programa que simula un juego de canicas.Requerimientos

 

Programa de un juego de canicas entre dos amigos.

 

CLIENTEProfesor 

USUARIOEstudiantes y profesor 

REQUERIMIENTO FUNCIONAL

Simular juego de canicas 

MUNDO DEL PROBLEMAEs necesario conocer cual es el resultado del un juego de canicas, cada cuanto se pierde o gana

canicas. 

REQUERIMIENTO NO FUNCIONAL

xxx 

Page 16: Programación Orientada Objetos Problemas, soluciones y Programas

Problemas y Soluciones

Caso de estudio 1: Programa que simula un juego de canicas.Requerimientos

REQUERIMIENTO FUNCIONAL 1

NOMBRE

RESUMEN

ENTRADAS  

RESULTADO  

REQUERIMIENTO FUNCIONAL 2

NOMBRE  

RESUMEN  

ENTRADAS  

RESULTADO  

Page 17: Programación Orientada Objetos Problemas, soluciones y Programas

Problemas y Soluciones

Caso de estudio 1: Programa que simula un juego de canicas.Requerimientos

REQUERIMIENTO FUNCIONAL 1

NOMBRE  R1: Jugar canicas

RESUMEN Representa cada vez que se juega a las canicas 

ENTRADAS  Cantidad de canicas ganadas

RESULTADO  Número de canicas actualizada

REQUERIMIENTO FUNCIONAL 2

NOMBRE  R2: Perder todas las canicas

RESUMEN  Representa la perdida total de canicas, (cuando se le salen de la bolsa).

ENTRADAS  Saber que se perdieron las canicas.

RESULTADO  La cantidad de canicas del jugador queda en 0

Page 18: Programación Orientada Objetos Problemas, soluciones y Programas

Problemas y Soluciones

Caso de estudio 1: Programa que simula un juego de canicas.Entidades

CLASE:      

ATRIBUTO VALORES POSIBLES

  

  

  

Page 19: Programación Orientada Objetos Problemas, soluciones y Programas

Problemas y Soluciones

Caso de estudio 1: Programa que simula un juego de canicas.Entidades

CLASE: BolsaCanica      

ATRIBUTOS VALORES POSIBLES

numeroCanicas Todos los números enteros mayores o iguales a 0. 

METODOS  

retornarCanicas()añadirCanicas() ganarCanica()

perderCanicas()perderTodo()  

Page 20: Programación Orientada Objetos Problemas, soluciones y Programas

Problemas y Soluciones

Diagrama de la solución

Page 21: Programación Orientada Objetos Problemas, soluciones y Programas

Problemas y Soluciones

Diagrama Otra solución

Page 22: Programación Orientada Objetos Problemas, soluciones y Programas

Métodos

Son las acciones o tareas que realiza el objeto. Se encarga de resolver una tarea específica.

Modificador_de_acceso Tipo_de_retorno  nombre(parámetros,…){

declaración_variables_locales

cuerpo_del_método

       valor_de_retorno

}

Sintaxis de un Método

Tiene un nombre, Recibe unos parámetros o argumentos (opcionalmente), Contiene sentencias o instrucciones para realizar algo, y Devuelve un valor de algún Tipo de dato conocido (opcionalmente). Tiene un modificador de acceso

Page 23: Programación Orientada Objetos Problemas, soluciones y Programas

Métodos

Modificador de acceso:

public – cualquiera puede acceder usar e invocar al métodoprivate – Sólo puede acceder ó invocarse el método desde otro método de la clase. protected - proporciona acceso público para las clases derivadas y acceso privado (prohibido) para el resto de clases.

Partes de un Método

Page 24: Programación Orientada Objetos Problemas, soluciones y Programas

Métodos

Partes de un Método

Tipo de Retorno

Corresponde al tipo de dato del valor que el método debe retornar, que puede ser:lint, float, double, char, String. etclvoid – Indica que el método no retorna ningún valor

Page 25: Programación Orientada Objetos Problemas, soluciones y Programas

Métodos

Partes de un Método

Parámetros / argumentos

Hay métodos que reciben algunos valores para poder hacer operaciones con ellos. Si son varios se separan con comas.

Page 26: Programación Orientada Objetos Problemas, soluciones y Programas

Métodos

Método constructor

El constructor es un método con el mismo nombre de la clase. Se ejecuta en el momento en que se crea cada objeto de esa clase.Su misión es inicializar el objeto. Admite parámetros de entrada.

BolsaDeCanicas::BolsaDeCanicas(){

numeroDeCanicas = 0;}

Indica la clase a a la que

pertenece el método

Page 27: Programación Orientada Objetos Problemas, soluciones y Programas

Métodos

Método Destructor

El destructor es un método con el mismo nombre de la clase pero antecedido de virgulilla (~). Se ejecuta en el momento en que se destruye cada objeto. Su misión es borrar el objeto (devolver memoria dinámica, cerrar archivos, destruir otros objetos dependientes...). No admite parámetros de entrada.

BolsaDeCanicas::~BolsaDeCanicas(){

// aquí va la implementación}

Page 28: Programación Orientada Objetos Problemas, soluciones y Programas

Métodos

Método set() - modificar los valores de los atributos

Public void BolsaDeCanicas::setNumeroDeCanicas(){

numeroDeCanicas = numeroDeCanicas + 1;}

Page 29: Programación Orientada Objetos Problemas, soluciones y Programas

Métodos

Método get() – devolver o visualizar los valores de los atributos

void BolsaDeCanicas::getNumeroDeCanicas(){

return numeroDeCanicas;}

Page 30: Programación Orientada Objetos Problemas, soluciones y Programas

Métodos

Otros Métodos

void BolsaDeCanicas::ganeUnaCanica(){

numeroDeCanicas = numeroDeCanicas + 1;}

Page 31: Programación Orientada Objetos Problemas, soluciones y Programas

Métodos

Otros Métodos

public void BolsaDeCanicas::ganeUnaCanica(){

numeroDeCanicas = numeroDeCanicas + 1;}

Page 32: Programación Orientada Objetos Problemas, soluciones y Programas

Métodos

Otros Métodos

void BolsaDeCanicas::ganeUnaCanica(){

numeroDeCanicas = numeroDeCanicas + 1;}