La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a la Programación Orientada a Objetos Los sistemas de software actuales suelen resolver problemas complejos que requieren soluciones dinámicas.

Presentaciones similares


Presentación del tema: "Introducción a la Programación Orientada a Objetos Los sistemas de software actuales suelen resolver problemas complejos que requieren soluciones dinámicas."— Transcripción de la presentación:

1 Introducción a la Programación Orientada a Objetos Los sistemas de software actuales suelen resolver problemas complejos que requieren soluciones dinámicas y capaces de adaptarse a situaciones imprevisibles. El desarrollo de estos sistemas de software es un proceso que abarca distintas etapas y requiere la participación de un equipo de profesionales con diferentes capacidades y roles. Uno de los modelos más populares y simples para el proceso de desarrollo de software es el modelo en cascada. El proceso de desarrollo de software

2 Estudio de Factibilidad Especificación de Requerimientos Análisis y Diseño del Sistema Implementación Verificación Mantenimiento DOCUMENTACIONDOCUMENTACION Introducción a la Programación Orientada a Objetos El proceso de desarrollo de software

3 Introducción a la Programación Orientada a Objetos El producto final de este proceso es un sistema de software documentado que resuelve el problema planteado por la especificación de requerimientos. En los problemas de mediana y gran escala este proceso requiere de creatividad, capacidad de abstracción y también de un principio y una metodología que sirvan de guía, orienten y sistematicen las actividades en cada etapa. Con frecuencia una parte del desarrollo consiste en adaptar un sistema existente a nuevos requerimientos. La metodología debe facilitar los cambios.

4 El proceso de desarrollo de software Introducción a la Programación Orientada a Objetos Principio Describe propiedades generales que se aplican a todo el proceso de desarrollo Metodología Conjunto integrado de métodos, estrategias y técnicas Métodos, estrategias y técnicas Reglas específicas que guían las actividades de cada etapa

5 Programación Orientada a Objetos La programación orientada a objetos brinda un principio, una metodología y herramientas que apoyan al proceso de desarrollo de software en todas sus etapas. Las principales herramientas son el lenguaje de modelado y el lenguaje de programación. Estas herramientas deben brindar mecanismos adecuados para aplicar la metodología y favorecer la calidad y productividad. Introducción a la Programación Orientada a Objetos

6 Especificación de Requerimientos El ajedrez es un juego de mesa para dos personas. Es uno de los juegos más populares del mundo. Se considera no sólo un juego, sino un arte, una ciencia y un deporte mental. Cada bando posee 16 piezas, con diferentes capacidades de movimiento, que se mueven en un tablero cuadrado de 8×8 casillas, alternativamente claras y oscuras. Las piezas de cada jugador al principio de la partida son un rey, una dama o reina, dos alfiles, dos caballos, dos torres y ocho peones. … Introducción a la Programación Orientada a Objetos

7 Análisis orientado a objetos Introducción a la Programación Orientada a Objetos A partir de la especificación de requerimientos se identifican los objetos relevantes del problema, sus atributos y su comportamiento

8 Los objetos se agrupan en clases de acuerdo a atributos y comportamiento compartido En resultado de esta etapa es un conjunto de diagramas elaborados usando un lenguaje de modelado. Entre ellos un diagrama de clases que especifica la colección de clases y sus relaciones. Introducción a la Programación Orientada a Objetos TableroPeon Pieza Diseño orientado a objetos

9 El diseño de cada clase especifica los siguientes elementos: Nombre Atributos Servicios Responsabilidades Introducción a la Programación Orientada a Objetos

10 Diseño orientado a objetos El nombre de una clase representa la abstracción del conjunto de instancias Un atributo representa a una propiedad o cualidad relevante y que caracteriza a todos los objetos de una clase. Un servicio representa a una operación que todas las instancias de una clase pueden realizar. El conjunto de servicios modela el comportamiento de los objetos de la clase. Introducción a la Programación Orientada a Objetos

11 Diseño orientado a objetos Las responsabilidades especifican informalmente las obligaciones y compromisos de cada clase Introducción a la Programación Orientada a Objetos Los casos de prueba establecen conjuntos de valores para verificar si cada servicio satisface su funcionalidad y si en conjunto la clase cumple con sus responsabilidades

12 En esta etapa se escribe el código de cada clase en un lenguaje de programación, manteniendo las relaciones especificadas en el diagrama de clases. Introducción a la Programación Orientada a Objetos class Tablero { } class Pieza { } class Peon extends Pieza { } Implementación La implementación de cada servicio puede constituir en sí mismo un problema y demandar el diseño de un algoritmo que lo resuelva.

13 Verificación La verificación consiste en probar que cada servicio brinda la funcionalidad adecuada, cada clase cumple con sus responsabilidades y que la colección de clases en conjunto satisfacen los requerimientos. Si la clase Tablero usa los servicios provistos por la clase Peon, verificaremos cada servicio de la clase Peon y luego los servicios de la clase Tablero. Introducción a la Programación Orientada a Objetos

14 Objetos del problema Objetos de Software abstracción Cada objeto relevante del problema está asociado a un objeto de software que lo modela. Los objetos se comunica a través de mensajes. Por ejemplo un objeto de clase Jugador puede enviar un mensaje al objeto de clase Tablero, quien a su vez envía un mensaje a un objeto de clase Peon. El modelo computacional

15 El término objeto se utiliza entonces para referirse a dos conceptos relacionados pero diferentes. En la etapa de análisis de un sistema se identifican los objetos del problema. Durante la ejecución de un programa se crean objetos de software. Introducción a la Programación Orientada a Objetos El concepto de Objeto

16 Los objetos se caracterizan a través de atributos y comportamiento. Un atributo es una propiedad o cualidad El comportamiento queda determinado por un conjunto de servicios. Los objetos se agrupan en clases de acuerdo a los atributos y el comportamiento compartido. Introducción a la Programación Orientada a Objetos Una clase es un patrón o esquema que especifica los atributos y servicios compartidos por todos los objetos que pertenecen a ella. El concepto de Clase

17 Introducción a la Programación Orientada a Objetos Caso de Estudio: Cuenta Bancaria Se desea modelar un cajero que brinde opciones para Depositar, Extraer y Mostrar el saldo de una cuenta Bancaria. Una cuenta cancaria tiene un código y un saldo. El código identifica unívocamente a la cuenta y es fijo. El saldo aumenta cuando el titular de la cuenta efectúa un depósito y disminuye cuando realiza una extracción. En condiciones normales el saldo debe ser un valor no negativo, pero eventualmente es posible que el titular extraiga más dinero que el que tiene disponible y en es caso decimos que la cuenta está en descubierto. El banco tiene establecido un monto máximo para los saldos en descubierto. Este monto es común para todas las cuentas.

18 Introducción a la Programación Orientada a Objetos Se desea modelar un cajero que brinde opciones para Depositar, Extraer y Mostrar el saldo de una cuenta bancaria. El cajero tiene asociada una interfaz gráfica. CuentaBancariaGUI_Cta_Bancaria Cajero Caso de Estudio: Cuenta Bancaria

19 Introducción a la Programación Orientada a Objetos El atributo max_descubierto es compartido por todas las instancias de la clase CuentaBancaria. Sólo usaremos como atributos de clase valores constantes. CuentaBancaria > max_descubierto: real Atributos de Clase Diagrama de Clases

20 Introducción a la Programación Orientada a Objetos CuentaBancaria > max_descubierto: real > codigo : entero saldo : real Atributos de Instancia El código se establece en la creación de la Cuenta Bancaria y no cambia. Diagrama de Clases

21 Introducción a la Programación Orientada a Objetos CuentaBancaria > max_descubierto: real > codigo : entero saldo : real > CuentaBancaria (cod : entero) CuentaBancaria (cod: entero, sal:real) Constructores Diagrama de Clases

22 Introducción a la Programación Orientada a Objetos > depositar (mto : real) extraer (mto : real) establecerSaldo (mto : real) La operación solo se realiza si no se supera el máximo autorizado para extraer en descubierto Comandos CuentaBancaria > max_descubierto: real > codigo : entero saldo : real En todos los casos se asume mto>0 Diagrama de Clases

23 Introducción a la Programación Orientada a Objetos … > obtenerCodigo () : int obtenerSaldo () : real obtenerMax_Descubierto(): real descubierto () : boolean La cuenta está en descubierto cuando el saldo es negativo Consultas CuentaBancaria > max_descubierto: real > codigo : entero saldo : real Diagrama de Clases

24 Introducción a la Programación Orientada a Objetos La unidad básica de programación en Java es la clase. Un programa en Java está constituido por una colección de clases. La implementación de una clase consiste en definir sus miembros: Atributos: variables de instancia y de clase Servicios: constructores y métodos Implementación en Java

25 Introducción a la Programación Orientada a Objetos Implementación en Java class CuentaBancaria { //atributos de la clase //atributos de instancia //Constructores //Comandos //Consultas }

26 Cada atributo compartido por todas las instancias de una clase, esto es, cada atributo de clase queda asociado la declaración de una variable. Introducción a la Programación Orientada a Objetos class CuentaBancaria { //atributos de la clase private static final int max_descubierto=1000; … } CuentaBancaria > max_descubierto: real Implementación de una Clase en Java Atributos de Clase

27 Introducción a la Programación Orientada a Objetos CuentaBancaria … > codigo : entero saldo : real class CuentaBancaria { … private int codigo; private float saldo; … } Implementación de una Clase en Java Atributos de Instancia

28 Introducción a la Programación Orientada a Objetos Modificadores de Acceso Implementación de una Clase en Java Dentro de la definición de una clase cada declaración de atributo de instancia y cada definición de un método puede ser precedida por el modificador de acceso public o private. Si un atributo de instancia se declara como privado solo puede ser usado dentro de la clase, esto es, es visible en los métodos definidos en la misma clase. Si se declara como público puede accederse desde el exterior de la clase. Adoptaremos la convención de declarar los atributos de instancia como privados.

29 Introducción a la Programación Orientada a Objetos Modificadores de Acceso Implementación de una Clase en Java Un método que se declara privado sólo puede ser invocado por métodos de la misma clase. Si un método se define como público es visible desde el exterior de la clase. Declararemos como públicos los métodos que estén especificados en el diagrama de clases. Los métodos auxiliares los definiremos como privados.

30 class CuentaBancaria { //atributos de clase private static final float max_descubierto=1000; //atributos de instancia private int codigo; private float saldo; … } Introducción a la Programación Orientada a Objetos Implementación de una Clase en Java

31 Introducción a la Programación Orientada a Objetos En la implementación cada constructor, comando o consulta tiene encabezamiento y un bloque. Un bloque define un nuevo ambiente de referenciamiento. Las variables declaradas dentro de un bloque son locales y no son visibles fuera de él. Un mismo nombre no puede ligarse a dos variables en el mismo bloque ni en bloques anidados. Una variable puede ser usada a partir de la instrucción que sigue a su declaración. Adoptaremos la convención de declarar las variables de un bloque al principio. Servicios Implementación de una Clase en Java

32 Introducción a la Programación Orientada a Objetos parámetro argumento parámetro formal parámetro real Un servicio recibe información desde el exterior a través de sus parámetros. En Java el pasaje de parámetros es por valor. Implementación de una Clase en Java El mismo identificador puede ligarse a servicios diferentes, siempre que el tipo o número de parámetros sea también distinto.

33 Introducción a la Programación Orientada a Objetos ( [ ]* ) { } El bloque no incluye una instrucción para retornar un valor Constructores Implementación de una Clase en Java

34 Introducción a la Programación Orientada a Objetos public CuentaBancaria(int cod) { codigo = cod; saldo = 0 ; } CuentaBancaria > CuentaBancaria (cod : entero) CuentaBancaria (cod: entero, sal:real) Implementación de una Clase en Java Constructores

35 Introducción a la Programación Orientada a Objetos CuentaBancaria > CuentaBancaria (cod : entero) CuentaBancaria (cod: entero, sal:real) Implementación de una Clase en Java public CuentaBancaria(int cod, float sal) { codigo = cod; saldo = sal ; } Constructores

36 Introducción a la Programación Orientada a Objetos [ ]* ::= [ ]* ( [ ]* ) { } Comandos y Consultas Implementación de una Clase en Java

37 Introducción a la Programación Orientada a Objetos Implementación de una Clase en Java Un comando es un servicio que modifica el estado interno del objeto y en algunos casos retorna un valor. Si no retorna un valor el método se define de tipo void. La instrucción return en este caso es opcional. Comandos

38 Introducción a la Programación Orientada a Objetos Implementación de una Clase en Java CuentaBancaria … > establecerSaldo (mto : real) depositar (mto : real) public void establecerSaldo (float mto) { saldo = mto ; } public void depositar (float m) { saldo += m ; } Comandos Se asume mto>0

39 Introducción a la Programación Orientada a Objetos CuentaBancaria … > … extraer (mto : real) La operación solo se realiza si no se supera el máximo autorizado para extraer en descubierto Comandos Implementación de una Clase en Java

40 Introducción a la Programación Orientada a Objetos public void extraer(float m) { /*La operación solo se realiza si no se supera el máximo autorizado a extraer en descubierto */ if puedeExtraer(m) saldo = saldo – m; } Incluimos los comentarios en el diagrama como comentarios en el programa Comandos Implementación de una Clase en Java

41 Introducción a la Programación Orientada a Objetos Implementación de una Clase en Java Una consulta es un método que retorna un valor de un tipo establecido. La definición establece el tipo del resultado y el bloque incluye una o más instrucciones para retornar un valor. Una invocación a una consulta aparece, en general, en una expresión. Consultas

42 Introducción a la Programación Orientada a Objetos private boolean puedeExtraer(float m) { if (saldo – m > -max_descubierto) return true; else return false; } Consultas Implementación de una Clase en Java Escribimos dos instrucciones de retorno porque la legibilidad del código no se compromete.

43 Introducción a la Programación Orientada a Objetos private boolean puedeExtraer(float m) { return (saldo – m > -max_descubierto); } Consultas Implementación de una Clase en Java

44 Introducción a la Programación Orientada a Objetos Implementación de una Clase en Java public float obtenerSaldo (){ return saldo; } CuentaBancaria … > obtenerSaldo(): real Consultas

45 Introducción a la Programación Orientada a Objetos Implementación de una Clase en Java public boolean descubierto(){ return saldo<0; } CuentaBancaria … > descubierto(): boolean Consultas

46 Introducción a la Programación Orientada a Objetos La definición de una clase permite la creación de objetos en ejecución, dentro de la misma clase o en otra. Una vez definida la clase Cuenta_Bancaria podemos definir otra clase Cajero, que brinda el método main que crea un objeto de clase Cuenta_Bancaria. Creación de Objetos class Cajero { public static void main (String args[]) {... CuentaBancaria cta = new CuentaBancaria(1555,1000); }

47 [ ]. ( [ ] ) Un método puede modificar los valores de los atributos de instancia, computar un valor o provocar algún otro tipo de efecto. Introducción a la Programación Orientada a Objetos Mensajes La comunicación entre objetos se realiza a través de mensajes. Cuando un objeto recibe un mensaje ejecuta un método. La clase del objeto determina el método que se ejecuta en respuesta al mensaje. La sintaxis de un mensaje es: Comunicación entre Objetos

48 Introducción a la Programación Orientada a Objetos Mensajes Un objeto de clase CuentaBancaria va a ejecutar un método cuando reciba un mensaje requiriendo ese servicio: Comunicación entre Objetos class Cajero { public static void main (String args[]) {... CuentaBancaria cta = new CuentaBancaria(1555,1000); cta.depositar(550); }

49 Durante la implementación de un sistema, una clase puede pensarse como una pieza, una componente de la colección de clases que en conjunto va a constituir el sistema. Antes de que la clase se integre en la colección y pueda ser usada por otras clases, es muy importante verificar que actúa de acuerdo a su especificación. La verificación puede hacerse en forma interactiva desde el ambiente. Introducción a la Programación Orientada a Objetos Verificación de una Clase en Java

50 Introducción a la Programación Orientada a Objetos Una alternativa más natural es verificar inicialmente la clase usando un tester o driver. La clase tester puede verificar los servicios provistos por CuentaBancaria con valores fijos, establecidos adecuadamente. Por ejemplo podríamos testear la clase creando una cuenta con saldo inicial 100 y luego alternar depósitos y extracciones (150,-60,150,500,-160). Verificación de una Clase en Java Testers

51 Introducción a la Programación Orientada a Objetos Testers Para definir un tester implementamos una clase que incluye un método definido como: class tester_CuentaBancaria { public static void main (String args[]) { } Todo programa en Java debe incluir un método con esta especificación. Verificación de una Clase en Java

52 Introducción a la Programación Orientada a Objetos Testers class tester_CuentaBancaria { public static void main (String args[]) { CuentaBancaria cb; } Declara una variable llamada cb de tipo clase CuentaBancaria Verificación de una Clase en Java

53 Introducción a la Programación Orientada a Objetos Testers class tester_CuentaBancaria { public static void main (String args[]) { CuentaBancaria cb; cb = new CuentaBancaria (125,100); } Crea un objeto de clase CuentaBancaria, lo liga a la variable cb e invoca al constructor. Verificación de una Clase en Java

54 El tipo de la variable cb es CuentaBancaria La instrucción new crea un objeto, una instancia de esta clase, y lo liga a la variable. El objeto está caracterizados por dos atributos de instancia. Los atributos de instancia de un objeto de clase CuentaBancaria son privados, de modo que sus valores sólo pueden ser accedidos desde el exterior por los servicios públicos que brinda la clase. Introducción a la Programación Orientada a Objetos Testers Verificación de una Clase en Java

55 Introducción a la Programación Orientada a Objetos Testers class tester_CuentaBancaria { public static void main (String args[]) { CuentaBancaria cb; cb = new CuentaBancaria (125,100); cb.depositar(150); } Le envía el mensaje depositar(150) al objeto ligado a la variable cb. Verificación de una Clase en Java

56 Introducción a la Programación Orientada a Objetos Testers class tester_CuentaBancaria { public static void main (String args[]) { CuentaBancaria cb; cb = new CuentaBancaria (125,100); cb.depositar(150); cb.extraer(60); } Le envía el mensaje extraer(60) al objeto ligado a la variable cb. Verificación de una Clase en Java

57 Cuando una instancia de la clase CuentaBancaria recibe el mensaje depositar (150) se ejecuta el método del mismo nombre. Es decir, la ejecución de cb.depositar (150); modifica el atributo de instancia saldo incrementando su valor en 150. Introducción a la Programación Orientada a Objetos Verificación de una Clase en Java Testers

58 Introducción a la Programación Orientada a Objetos Tester con valores generados al azar Otra alternativa para verificar la clase CuentaBancaria es usar una clase tester que no use valores fijos sino valores generados al azar. Para obtener una secuencia de valores al azar podemos usar la clase Random provista por Java. Esta alternativa se desarrollará en una clase práctica de laboratorio. Verificación de una Clase en Java

59 Introducción a la Programación Orientada a Objetos Alternativas de Diseño El diseñador de la aplicación había decidido que era responsabilidad de la clase CuentaBancaria controlar si es posible hacer una extracción Otra decisión posible es que la clase CuentaBancaria asuma que la verificación la hace la clase que usa el servicio. > depositar (mto : real) extraer (mto : real) establecerSaldo (mto : real) Asume que antes de ser invocado se ha controlado que no se superará el máximo autorizado para extraer en descubierto

60 Introducción a la Programación Orientada a Objetos public void extraer(float m) { /* Asume que antes de ser invocado se ha controlado que no se superará el máximo autorizado para extraer en descubierto */ saldo -= m; } Alternativas de Diseño

61 Introducción a la Programación Orientada a Objetos int i = 0; int monto; int saldo; int azar; while (i<50) { i++; azar = gen.nextInt(2)+1; monto = gen.nextInt(500)+10; if (azar==1)… else { if (puedeExtraer(m){ cb.extraer(monto); System.out.println (i+" extraer " + monto+" Saldo "+cb.obtenerSaldo());} else … } Alternativas de Diseño

62 Introducción a la Programación Orientada a Objetos public boolean puedeExtraer(float m) { return (saldo – m > -max_descubierto); } Alternativas de Diseño

63 Introducción a la Programación Orientada a Objetos Recomendaciones Declarar las variables al principio del bloque. Usar identificadores significativos e indentar adecuadamente. Incluir comentarios que describan la funcionalidad de cada método y las responsabilidades establecidas en el diseño. NO escribir comentario que expliquen características del lenguaje No exagerar con los comentarios oscureciendo la lógica de la resolución.

64 Introducción a la Programación Orientada a Objetos Recomendaciones Si el método produce un resultado incluye una única instrucción de retorno al final, excepto si todo el código del método es un if-else con instrucciones simples. Los atributos de instancia son privados Los atributos de clase son privados y constantes

65 Introducción a la Programación Orientada a Objetos Contenido de la clase Objetos y Clases Atributos de instancia y de clase Servicios. Constructores, Comandos y Consultas Modificadores de acceso Creación y comunicación entre objetos. Implementación y Verificación de una Clase en Java Tester con valores establecidos Alternativas de diseño para Cuenta Bancaria

66 Introducción a la Programación Orientada a Objetos Contenido de la próxima clase Lenguaje de modelado y lenguaje de programación El modelo computacional de la POO La clase Cliente y la clase Proveedor Responsabilidades Diagramas de memoria


Descargar ppt "Introducción a la Programación Orientada a Objetos Los sistemas de software actuales suelen resolver problemas complejos que requieren soluciones dinámicas."

Presentaciones similares


Anuncios Google