Está en la página 1de 55

Algortmica y Programacin Orientada a Objetos I

Introduccin

Christian Fernando Ariza Porras cf.ariza975@uniandes.edu.co

Bienvenidos

Christian Fernando Ariza Porras


Ingeniero de sistemas, Universidad Nacional de Colombia. Magster en Ingeniera, rea Sistemas y Computacin, Universidad de los Andes. Estudiante de doctorado en ingeniera, Universidad de los Andes. http://www.christian-ariza.net cf.ariza975@uniandes.edu.co @cronosnull Of. ML 701 Ext. 1884

Reglas de Juego
Entrega del programa Cronogramas Esquema de Evaluacin

Cronogramas
Cronograma de actividades Cronograma de entrega de notas
http://cupi2.uniandes.edu.co/sitio/index.php/cursos/a po1/profesores-y-secciones

El examen del nivel 6 se realizar en la fecha programada por registro Convenciones: N1-C1: Clase 1 del nivel 1 N1-L1: Laboratorio 1 del nivel 1 N1-EXAM: Examen terico del nivel 1 N1-LABO: Examen prctico del nivel 1 N1-PUBLI: Publicacin del ejercicio de nivel 1 N1-EJER: Entrega del ejercicio de nivel 1 4

Esquema de evaluacin

Esquema de evaluacin

Algortmica y Programacin Orientada a Objetos I


Introduccin: Por qu aprender a programar

Christian Fernando Ariza Porras cf.ariza975@uniandes.edu.co

Conrad Wolfram

Desarrollar habilidades de solucin de problemas. Desarrollar una manera de pensar. Aprender a aprender:
Since a computer program never works the first time, the userin this case, a childhas to debug it, to try again, to look at the programs behavior, iterate, and finally succeed. That process is the closest a child will ever come to understanding how to learn, to learn learning. Nicholas Negroponte

10

Algortmica y Programacin Orientada a Objetos I


Nivel 1: Problemas, Soluciones y programas.

Christian Fernando Ariza Porras cf.ariza975@uniandes.edu.co


Basada en una presentacin de Marcela Hernndez

Objetivos
Comprender el proceso de solucin de un problema usando un programa de computador. Construir un modelo con los elementos que intervienen en el problema. Especificar los servicios de un programa. Completar una solucin parcial a un problema:
Expresiones simples Asignaciones Invocaciones a mtodos

Utilizar un ambiente de desarrollo y un espacio de trabajo.


12

Solucionar un problema => Construir un programa


Entender y especificar el problema a resolver. Identificar los requerimientos funcionales, los requerimientos no funcionales y el contexto (mundo) del problema. Imaginar la solucin. Detallar, usando algn lenguaje (diagramas, ecuaciones, planos, texto), las caractersticas que tendr la solucin.

Anlisis del problema

Diseo de la solucin

Implementacin de la solucin

Implementar el programa a partir del diseo. Probar su correcto funcionamiento.

13

Anlisis del problema

Problema

Anlisis del problema

Especificacin

14

Anlisis del problema

Requerimientos funcionales

Mundo del problema

Requerimientos no funcionales

Especificacin

Requerimientos funcionales: Las necesidades del cliente. Operaciones o servicios que el programa debe proveer al usuario.

15

Anlisis del problema

Requerimientos funcionales

Mundo del problema

Requerimientos no funcionales

Especificacin

Mundo del Problema: Contexto en el que ocurre el problema Elementos (Datos, Informacin) que intervienen en el problema

16

Anlisis del problema

Requerimientos funcionales

Mundo del problema

Requerimientos no funcionales

Especificacin

Requerimientos no funcionales: Restricciones o condiciones que impone el cliente al programa. Atributos de calidad que se deben cumplir. Ej.: La aplicacin debe atender 500 usuarios simultneamente. 17

Caso de estudio

EL EMPLEADO

18

Enunciado
Se quiere una aplicacin que permita manejar la informacin de un empleado. El empleado tiene nombre, apellido, sexo, fecha de nacimiento y una imagen asociada. Adems, como trabaja en una determinada compaa tiene una fecha de ingreso a la misma y un salario bsico asignado. En la aplicacin se puede
Modificar el salario del empleado Realizar algunos clculos con la informacin disponible:
edad actual antigedad en la empresa prestaciones a las que tiene derecho. Para el clculo de las prestaciones se utiliza la frmula p = (a * s)/12 (p: prestaciones, a: antigedad, s: salario).

19

Anlisis del problema: Especificacin de los Requerimientos funcionales


Cada requerimiento funcional (RF) se describe usando:
Un identificador Nombre Resumen de la operacin Entradas Resultado

20

Ejemplo de requerimiento funcional

21

Ejemplo de requerimiento funcional

22

Modelo del mundo del problema


Identificar Entidades

Modelar Caractersticas de las entidades

Buscar relaciones entre las entidades

Documentar (reglas, restricciones) 23

Identificar las Entidades


Elementos relevantes del mundo que intervienen en el problema.
Concretos (persona, vehculo) Abstractos (Cuenta bancaria)

Se les da un nombre significativo Pista para ubicarlas: Sustantivos del problema. En POO se denominan Clases.

24

Modelar las caractersticas de las entidades.


En POO se denominan atributos. Por ejemplo para la entidad Empleado, sus atributos son:
Atributo nombre apellido sexo salario Valores Posibles Cadena de caracteres Cadena de caracteres Masculino/Femenino Valores enteros positivos

25

Definicin de la clase empleado en UML

Empleado nombre apellido sexo salario

Nombre de la entidad o clase

Caractersticas o atributos

26

Relaciones entre entidades


Se identifican las relaciones entre las diferentes clases(entidades) Les damos un nombre representativo. En UML se representan como flechas entre las clases.

27

Ejemplo sobre empleado

28

EJERCICIO
Identificar requerimientos funcionales, las entidades y sus atributos para el siguiente caso: Se quiere construir un programa que permita manejar un tringulo. Esta figura geomtrica est definida por tres puntos, cada uno de los cuales tiene dos coordenadas X, Y. Un tringulo tiene, adems, un color para las lneas y un color de relleno. Un color, por su parte, est definido por tres valores numricos entre 0 y 255 ( estndar RGB por Red-Green-Blue). El primer valor numrico define la intensidad en rojo, el segundo en verde y el tercero en azul. El programa debe (1) dibujar el tringulo en la pantalla, (2) calcular el permetro del tringulo, (3) calcular el rea del tringulo, (4) calcular la altura del tringulo.

29

30

Solucionar un problema => Construir un programa


Entender y especificar el problema a resolver. Identificar los requerimientos funcionales, los requerimientos no funcionales y el contexto (mundo) del problema. Imaginar la solucin. Detallar, usando algn lenguaje (diagramas, ecuaciones, planos, texto), las caractersticas que tendr la solucin.

Anlisis del problema

Diseo de la solucin

Implementacin de la solucin

Implementar el programa a partir del diseo. Probar su correcto funcionamiento.

31

CONSTRUCCIN DE LA SOLUCIN
32

Algoritmos e instrucciones
Un algoritmo es una secuencia ordenada de pasos (o instrucciones) para realizar una actividad. Ejemplos:
Algoritmo para preparar un sndwich. Algoritmo para encontrar el mayor de 2 nmeros. Algoritmo para llegar de un punto a otro de la ciudad.

33

34

Cmo expresamos un algoritmo para que lo entienda el computador?

35

JAVA
Orientado a Objetos Un programa en Java est formado por un conjunto de clases. Cada clase se guarda en un archivo distinto (que debe tener el mismo nombre de la clase) y la extensin .java. Existen palabras reservadas como package, class, public.

36

Declaracin de una clase en Java


Archivo: Empleado.java public class Empleado{ //Atributos: private String nombre; private String apellido; private int sexo; private int salario; }

37

Clase y Objeto

38

39

Tipos de datos en java


Tipos de datos Primitivos Numricos Enteros byte short int long Punto Flotante float double Caracteres char Booleanos boolean Referencia Clases Array Interfaces

40

Diagrama de clases para el caso del empleado

41

Clase Empleado
public class Empleado{ //Atributos: private String nombre; private String apellido; private int sexo; private int salario; private Fecha fechaNacimiento; private Fecha fechaIngreso; }
42

Mtodos
Los algoritmos de la clase. Lo que la clase sabe hacer.
Resolver un problema puntual. Un servicio que ofrece a otras clases.

Una clase es responsable de manejar la informacin que contienen sus atributos. Los mtodos son el medio para hacerlo. Se compone de: Tipo de respuesta, nombre, lista de parmetros y cuerpo del mtodo.

43

Firma/contrato/signatura del mtodo

44

Cuerpo del mtodo


Conjunto de instrucciones del algoritmo. Cada instruccin en java es terminada por el carcter ;

public void agregarMoneda50( ) { numeroMonedas50 = numeroMonedas50 + 1; }

45

Tipos de instrucciones
Tipo Asignacin Retorno Llamada (invocacin) Descripcin Define un nuevo valor para un atributo. (=) Devuelve un resultado como resultado de un mtodo. Ejecuta un mtodo de una clase. Ejemplo numeroMonedas50 = numer oMonedas50 + 1; return numeroMonedas50; darNumeroMonedas500(); nombreAsociacion.nombreM etodo();

46

Parmetros
Se utilizan para recibir en el mtodo informacin necesaria que no est en los atributos de la clase. Los valores recibidos se pueden usar nicamente dentro del mtodo.

47

Creacin de una instancia


Las asociaciones con otras clases son instancias que deben ser inicializadas antes de ser usadas. Los crea la clase duea de la asociacin en alguno de sus mtodos. Se utiliza la instruccin new.

48

CASO DE ESTUDIO: La alcanca

49

Enunciado
En la alcanca es posible guardar monedas de las siguientes denominaciones: $20, $50, $100, $200 y $500, no se guardan ni billetes ni monedas de otras denominaciones. Al dueo de la alcanca le parece muy til conocer cunto tiene en la alcanca sin necesidad de romperla, es ms, l quiere conocer cuntas monedas tiene en cada denominacin para as romper la alcanca slo cuando quiera disponer de todo su dinero ahorrado. Se quiere un programa que ilustre el manejo de la alcanca. El programa debe permitir (1) agregar una moneda de una de las denominaciones indicadas, (2) contar cuntas monedas tiene de cada denominacin, (3) calcular el total de dinero ahorrado, (4) romper la alcanca vaciando su contenido y (5) comenzar una nueva alcanca.

50

Modelo conceptual

51

Anlisis del problema

Diseo de la solucin

Imaginar la solucin. Detallar, usando algn lenguaje (diagramas, ecuaciones, planos, texto), las caractersticas que tendr la solucin.

Implementacin de la solucin

52

Partes del diseo de la solucin


Interfaz de usuario (Tema nivel 5) Arquitectura de solucin Diseo de las clases (UML volveremos al tema de las responsabilidades en el nivel 4)

53

Arquitectura de la solucin
Divide y vencers Definicin a grandes rasgos de los elementos que conforman la solucin. Una primera aproximacin ser identificar los paquetes y las clases que van en cada uno de ellos. NOTA: Para los problemas que trabajaremos en este curso se identifican 3 grandes grupos de clases:
Las clases que implementan la interfaz del usuario. Las clases que implementan el modelo del mundo. Las clases que implementan las pruebas.

54

uniandes.cupi2.empleado.interfaz

uniandes.cupi2.empleado.mundo

InterfazEmpleado PanelConsultas PanelDatos PanelExtensiones PanelSalario


uniandes.cupi2.empleado.test

Empleado Fecha

EmpleadoTest FechaTest

55