Introducción poo

1,913 views

Published on

Guía para el aprendizaje de la Programación Orientada a Objetos

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,913
On SlideShare
0
From Embeds
0
Number of Embeds
127
Actions
Shares
0
Downloads
59
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introducción poo

  1. 1. Universidad Centroccidental “Lisandro Alvarado”<br />Decanato de Ciencias y Tecnología<br />Lapso 2010-2<br />Introducción a la <br />Programación Orientada a Objetos (POO)<br />con C++<br />Programa de Análisis de Sistemas<br />Coordinación del Área de Computación<br />
  2. 2. Programación de Funciones<br />Una función contiene una o más sentencias y se crean generalmente para realizar una única tarea.<br />En la Programación Orientada a Objetos, las funciones se utilizan para definir los métodos de las clases. <br />
  3. 3. Programación de Funciones<br />Implementación de una Función:<br />tipo_de_retornoNombreFuncion (lista parámetros){ <br /> sentencias<br />return valor;<br />}<br />Cuando en el tipo de retorno aparece la palabra reservada void significa que la función no retornaningún valor.<br />voidNombreFuncion (lista parámetros){ <br /> sentencias<br /> .....<br />}<br />
  4. 4. Parámetros de una función<br /><ul><li>También se conocen como Argumentos.
  5. 5. Una función puede utilizar parámetros por valor y parámetros por referencia, o puede no tener parámetros.
  6. 6. TIPOS DE ARGUMENTOS SEGÚN
  7. 7. EL VALOR QUE RETORNAN
  8. 8. Párametros por valor: En C++ el paso por valor significa que al compilar la función y el código que llama a la función, ésta recibe una copia de los valores de los parámetros que se le pasan como argumentos. Las variables reales no se pasan a la función, sólo copias de su valor.</li></li></ul><li>Tipos de parámetros según lo que retornan<br />Según el valor que puede retornar un argumento, los parámetros se clasifican en parámetros por valor o por referencia<br />
  9. 9. Tipos de parámetros según su ubicación<br />Tanto en la definición (cabecera) de la función como en las llamadas deben colocarse parámetros:<br /><ul><li>Parámetros formales: están en la definición de la función (cabecera).
  10. 10. Parámetros actuales: están en cada llamada a una función.</li></li></ul><li>Ejemplos de funciones<br />Ejemplo de una Función con parámetros<br />Ejemplo de Funciones sin parámetros<br />Parámetros formales de la función<br />void ImprimirMensaje (string mensaje) { <br /> cout << mensaje << endl;<br />}<br />void LimpiarPantalla () {<br /> system (“cls”);<br />}<br />void DetenerPantalla () {<br /> system (“pause”);<br />}<br />Funciones que no ameritan argumentos<br />Llamado de la función ImprimirMensaje<br />ImprimirMensaje (“Ingrese los siguientes datos:”);<br />Parámetros actuales de la función<br />Llamado de las funciones anteriores<br />LimpiarPantalla ();<br />DetenerPantalla ();<br />Igual se colocan paréntesis que abre y cierra (sin argumentos)<br />
  11. 11. Programación Orientada a Objetos (POO)Conceptualización<br /><ul><li>Es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas de computadora.
  12. 12. Es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real.
  13. 13. Se basa en la idea natural de la existencia de un mundo lleno de objetos, de modo que la resolución del problema se realiza en términos de objetos.</li></ul>Otros paradigmas de Programación:<br /><ul><li>Programación Estructurada o por Procedimientos.
  14. 14. Funcional.
  15. 15. Lógico.
  16. 16. Visual</li></li></ul><li>Clases, Instancias y Objetos<br />Clase: Representa un dato de tipo objeto, es su definición, no puede tomar valores ni ejecutar métodos.<br />Instancia: Un ejemplar de una clase. Una variable de algún tipo de objeto.<br />Objeto: Un objeto es una Instancia de una Clase. Un objeto en POO, representa alguna entidad de la vida real, es decir, alguno de los objetos que pertenecen al negocio con que estamos trabajando o al problema con el que nos estamos enfrentando<br />
  17. 17. Composición de los Objetos<br /><ul><li>Un atributo es una característica individual que diferencia un objeto de otro y determinan su apariencia, estado u otras cualidades.
  18. 18. Un método es un conjunto de instrucciones que realizan una determinada tarea y son similares a las funciones de los lenguajes estructurados.</li></li></ul><li>Ejemplos de Objetos<br />Una Cuenta Bancaria en términos de objetos<br />Un Teléfono en términos de objetos<br />Métodos:<br />- Abrir<br />- Depositar<br />- Retirar<br />- Cerrar<br />Atributos:<br />- NumeroCta<br />- Titular<br />- FechaApertura <br />- SaldoActual<br />Métodos:<br />- Llamar<br />- Contestar<br />- Encender<br />- GuardarNro<br />Atributos:<br />- Tipo<br />- Numero<br />- Operadora<br />- Modelo<br />Observa que una cuenta bancaria es un objeto intangible, una forma de representarla es con una libreta de ahorros. Otro ejemplo: si te piden calcular el promedio de 3 números, tendremos un objeto que llamaríamos Calculo.<br />Fíjate que a cada uno de los atributos es posible asignarle un valor. Ej: Tipo=Celular, Numero=0414-123.45.67, Operadora=Cantv, Modelo=Samsung. Por su parte, los métodos denotan alguna acción con el celular.<br />
  19. 19. Lenguajes Orientados a Objetos<br />En la actualidad la mayoría de los lenguajes de programación admiten la Programación Orientada a Objetos. Un lenguaje de programación orientado a objetos es aquel que admite el paradigma de la POO.<br />En este curso programarás con C++ y el entorno de desarrollo integrado (IDE) Dev-C++, el cual te ofrece una interfaz de fácil operación que te permite:<br /><ul><li>Escribir los programas
  20. 20. Compilarlos
  21. 21. Ejecutarlos
  22. 22. Depurarlos</li></ul>Otros lenguajes que admiten objetos son los siguientes:<br /><ul><li>Object Pascal, y el entorno BorlandDelphi
  23. 23. Java, con el entorno NetBeans
  24. 24. Basic, con el entorno Microsoft Visual Basic
  25. 25. XBase, con el entorno Microsoft Visual FoxPro</li></li></ul><li>Lenguajes Orientados a Objetos<br />Observa en la siguiente ilustración el aspecto de la IDE con la que trabajarás en este curso.<br />
  26. 26. Pilares de la Programación Orientados a Objetos<br />
  27. 27. Abstracción<br /><ul><li>La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan.
  28. 28. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (Característica de caja negra).
  29. 29. Ejemplificación de la Abstracción:</li></li></ul><li>Encapsulamiento<br />Se denomina encapsulamiento al ocultamiento del estado de los componentes de un objeto, de manera que sólo se pueden cambiar mediante las operaciones definidas para ese objeto<br />
  30. 30. Herencia<br />Jerarquía de clases de transportes<br />La herencia es el mecanismo fundamental para implementar la reutilización y extensibilidad del software. A través de ella los diseñadores pueden construir nuevas clases partiendo de una jerarquía de clases ya existente (comprobadas y verificadas) evitando con ello el rediseño, la remodificación y verificación de la parte ya implementada<br />
  31. 31. Polimorfismo<br />El polimorfismo se refiere a la posibilidad de definir en una jerarquía de clases métodos y/o atributos denominados de forma idéntica, pero que se comportan de manera distinta<br />
  32. 32. Identificación de Objetos<br />Una técnica a seguir para lograr la identificación de los objetos es subrayar cada sustantivo (nombre) presente en el planteamiento del problema. Ej:<br /><ul><li>Hacer un programa que permita leer las operaciones realizadas a una cuenta bancaria y determinar al final el saldo de la misma.
  33. 33. Se desea determinar la nota final de un estudiante sabiendo que presentó 3 pruebas parciales.
  34. 34. En una organización laboran varios trabajadores que tienen un sueldo base, asignaciones y deducciones. Se desea determinar el sueldo neto de cada trabajador.</li></ul>Algunos criterios a seguir para identificar los objetos son:<br /><ul><li>Cosas tangibles (mesa, carro, avión).
  35. 35. Organizaciones (empresa, departamentos, divisiones)
  36. 36. Incidentes (representa un suceso, Ej: vuelo, inscripción, transacción).
  37. 37. Papeles o roles (cliente, empleado, médico).
  38. 38. Interacciones (compras, ventas).
  39. 39. Lugares (ciudad, muelle de carga, sala de embarque).</li></li></ul><li>Identificación de Objetos<br />Considere lo siguiente al momento de identificar los objetos que participan en un planteamiento:<br /><ul><li>Posiblemente subrayarás múltiples sustantivos, no todos tendrás que usarlos en tu programa.
  40. 40. Inicialmente cuando haces el subrayado, lo que tienes es varias objetos candidatos (candidatos a ser el objeto que usarás).
  41. 41. Producto de un análisis más detallado terminarás determinando cual (o cuales) objetos serán los definitivos.
  42. 42. Los objetos que determinas que no usarás simplemente forman parte de la redacción del enunciado, pero no de la solución del problema. De alguna manera u otra estos objetos que no usarás te servirán para comprender la información que te suministra el planteamiento.</li></li></ul><li>Ejemplificación de Requerimientos<br />La forma más inequívoca de expresar los requerimientos es con la formulación de al menos una situación que ejemplifique lo que se necesita. Ejemplificar requerimientos es en programación de computadoras similar a: <br /><ul><li>Una maqueta de un centro comercial, presentada por un arquitecto.
  43. 43. La radiografía de un hueso roto que muestra un doctor.
  44. 44. El dibujo de un vestido que presenta un diseñador.
  45. 45. Una tabla con la información de sueldos de los trabajadores de la organización</li></ul>Nota que todas las situaciones mencionadas presentan visualmente lo requerido por parte de un cliente:<br /><ul><li>Construir un Centro Comercial, que es requerido por un inversionista con mucho dinero que no sabe nada de Ingeniería Civil.
  46. 46. Enyesar un brazo, que es requerido por una persona herida.
  47. 47. Elaborar un vestido, que es requerido por la novia que va a casarse.
  48. 48. Hacer un programa que determine el sueldo neto de cada trabajador y el total a pagar por la empresa.</li></li></ul><li>Ejemplificación de Requerimientos<br />
  49. 49. El control remoto de los objetos<br />Otra técnica para identificar los componentes de los objetos es precisamente imaginarlos como un aparato (o robot) que opera con un control remoto, donde:<br /><ul><li>El aparato tiene componentes internos, que tal vez no sea preciso visualizarlos en primera instancia (están encapsulados). Estos componentes internos serán los atributos y métodos.
  50. 50. También tiene botones, cada uno de los cuales permitirá resolver un requerimiento del problema.
  51. 51. Cuando presionamos los botones, según necesitemos, el objeto realizará algunas acciones (procesos) que alterarán los atributos, o bien nos mostrarán el resultado de lo que deseamos hacer.
  52. 52. Los botones servirán entonces tanto para que veamos el funcionamiento de nuestro programa, como para que los objetos que lo conforman se comuniquen entre sí.</li></li></ul><li>El control remoto de los objetos<br />
  53. 53. Representación de Clases<br />
  54. 54. Representación de Clases<br />
  55. 55. Objetos en C++<br />Un Programa Orientado a Objetos en C++, está compuesto por:<br /><ul><li>Varias librerías de uso genérico, bien sean incorporadas al lenguaje o programadas por el usuario.
  56. 56. Una carpeta en el disco duro (o pendrive) con el nombre del proyecto.
  57. 57. Clases propias para el programa. Cada clase se almacena en 2 archivos: uno para la interfaz (extensión .h) y otro para la implementación (extensión .cpp). Estos archivos van dentro de la carpeta del proyecto</li></ul>Cada clase que se diseña tendrá 2 partes:<br /><ul><li>La interfaz: contiene solamente la declaración de los componentes de la clase, siguiendo la sintaxis de C++.
  58. 58. La implementación: contiene la programación de los métodos de la clase</li></li></ul><li>Objetos en C++: Interfaz de Clase<br />Sintaxis para la programación de la interfaz de una clase<br />#ifndef <NombreArchivo_H><br />#define <NombreArchivo_H><br />#include <NombreLibreria><br />[#include <NombreLibreria> [...]]<br />class <nombreClase> {<br /> <componentes><br />};<br />#include “NombreArchivo.cpp”<br />#endif<br />Componentes de tipo atributo=<br />[private:|public:|protected:]<br /> <TipoCampo> <NombreCampo>;<br /> [<TipoCampo> <NombreCampo>; [...]]<br />Componentes de tipo método=<br />[private:|public:|protected:]<br /> <TipoDevuelto> <NombreMétodo> ([<parametros>]);<br /> [<TipoDevuelto> <NombreMétodo> ([<parametros>]); [...]]<br />
  59. 59. Objetos en C++: Implementación de Clase<br />
  60. 60. Objetos en C++: El Programa Principal<br />
  61. 61. Objetos en C++: Constructores<br />Es un método especial que se ejecuta automáticamente al momento de la creación de un objeto; su propósito es la inicialización de los atributos del objeto, bien sea con valores predefinidos o con valores que se “pasan” al objeto a través de parámetros.<br />Consideraciones:<br /><ul><li>Se denominan exactamente igual que la clase.
  62. 62. Pueden haber varios constructores en una clase, con la diferenciación entre ellos de los argumentos que reciben (sobrecarga de métodos).
  63. 63. Para efectos de este curso, principalmente se usarán 2 constructores: (valores predeterminados, y otro que recibe los argumentos de inicialización).
  64. 64. En la interfaz de la clase, solamente colocarás al encabezado.
  65. 65. En la implementación, entonces declaras la implementación.
  66. 66. En caso de que sea un constructor de inicialización predeterminada, colocarás valores base.</li></li></ul><li>Objetos en C++: Setters (Sets) y Getters (Gets)<br /><ul><li>La función Set es un método que nos permite modificar el valor (asignar) de una variable privada (atributo) de una clase.
  67. 67. La función Get es un método que nos permite visualizar el valor de una variable privada (atributo) de una clase, en otras palabras provee el valor del atributo a quien lo solicite.</li></ul>Considera lo siguiente en relación a los Sets y Gets:<br /><ul><li>Por cada atributo debería existir un Set y un Get.
  68. 68. Con frecuencia podrás solamente implementar los Sets y Gets de los atributos que necesites para resolver el problema que se te plantea. Queda a discreción del profesor si te permite esto.
  69. 69. Los Sets constituyen un método cuya única función será asignarle un valor a un atributo en particular, el cual viene por parámetro. Dado que no tiene que retornar valor, los Sets son procedimientos, o funciones void.
  70. 70. Los Gets son métodos que se invocarán para que retornen el valor de una atributo en particular, de manera que el tipo de retorno de cada Get dependerá del tipo del atributo que retorna.</li></li></ul><li>Objetos en C++<br />
  71. 71. Integración de componentes con DevC++<br />
  72. 72.
  73. 73. Identificación de errores de compilación<br />Cuando compilas tu programa:<br /><ul><li>DevC++ revisa la sintaxis de todos los archivos que conforman tu proyecto.
  74. 74. La secuencia de comandos #include establece el orden de compilación.
  75. 75. En ese mismo orden se muestran los errores.
  76. 76. El compilador intentará identificar tantos errores como sea posible</li></ul>Metodología para corregir errores de compilación con Devc++<br /><ul><li>Comience con el primer error mostrado, haga doble clic en él.
  77. 77. Debes aprender el significado del mensaje de error.
  78. 78. Lo mejor es resolver un error y volver a compilar.
  79. 79. Si cuando compilas identificas más de un error, entonces aprovecha y corrige tantos errores como puedas.
  80. 80. Ya sabes que la ventanita con el mensaje “Done” te indica que ya tu programa es sintácticamente correcto.</li></li></ul><li>Metodología para el análisis y Programación Orientada a Objetos<br />
  81. 81. Metodología para el análisis y Programación Orientada a Objetos<br />
  82. 82.
  83. 83.
  84. 84.
  85. 85. LECTURAS OBLIGATORIAS<br />En la Guía Didáctica:<br /><ul><li>Estado de la memoria en una ejecución
  86. 86. Corridas en frío
  87. 87. Depuración de Programas
  88. 88. Sintaxis de comandos de Programación
  89. 89. Métricas de Programación: Legibilidad del código
  90. 90. Entrada de datos desde archivos</li>

×