PRÁCTICA 1: POO VS PROGRAMACIÓN ESTRUCTURADA ESIME CULHUACAN INGENIERÍA EN COMPUTACIÓN FECHA DE ENTREGA: 12 de septiembre del 2022 PROGRAMACIÓN ORIENTADA A OBJETOS Dr. Sabás Flores Ascencio NOMBRE DEL ALUMNO: Ian Tonatiuh Aguilar Monroy CALIFICACIÓN: Objetivos generales Conocer los fundamentos de la programación estructurada y los fundamentos de la programación orientada a objetos. Comparar ambos paradigmas y obtener conclusiones. Equipo y materiales Equipo de cómputo equipado con compilador C++ Conceptos: En la programación estructurada, los programas son más fáciles de entender, debido a que pueden ser leídos de forma secuencial. La estructura del programa es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí. Reducción del esfuerzo en las pruebas, por lo que los errores se pueden detectar y corregir más fácil. Reducción de los costos de Mantenimiento de los programas. Programas más sencillos y rápidos (debido a que es más fácil su Optimización). En el caso de la programación orientada a objetos, el paradigma cambia. Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Que el usuario interactúe solo con los atributos y métodos seleccionados de un objeto. Encapsulamiento: Sígnica reunirá todos los elementos que pueden considerarse pertenecientes a una misa entidad, al mismo nivel de abstracción. Toda la información importante de un objeto dentro del mismo. Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se está usando. Diseñar objetos para compartir comportamientos Herencia: Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. Relaciones jerárquicas entre clases Recolección de basura: la Recolección de basura o Garbage Collector es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente, y por tanto desasignar de la memoria los Objetos que hayan quedado sin ninguna referencia a ello. Se utilizan principalmente clases, una clase es una plantilla. Define de manera genérica cómo van a ser los objetos de un determinado tipo. Código de trabajo 1: #include<iostream.h> #include<conio.h> void main(); void main(void) { clrscr(); cout<<”SUMA DE 2 ENTEROS MEDIANTE FUNCIÓN”<<endl; suma(); getch(); } Void suma(void) { int a,b; cout<<”Dame el valor de a: ”<<endl; getch(); } Código de trabajo 2: #include<iostream.h> #include<conio.h> #include<stdlib.h> class Operación { Private: Int a; Int b; Public: Void suma (void) { Cout<<”dame el valor de a: ”; Cin>>a; Cout<<”dame el valor de b: ”; Con>>b; Cout<<”La suma es: ”<<a+b<<endl; } }; Void main(void) { Operación s1; Clrscr(); S1.suma(); System(“pause”); } Desarrollo 1. Introduzca y compile los programas de trabajo. Para ambos casos verifique que no existen alertas y/o errores de compilación. En caso de haberlos corrija 2. Para cada línea de código, proporcione una explicación de lo que significa. Código 1: #include<iostream.h> Instrucción de preprocesador que ordena llamar a la librería iostream (líneas de código ya creadas y las incluye en el programa) #include<conio.h> Instrucción de preprocesador que ordena llamar a la librería conio.h (líneas de código ya creadas y las incluye en el programa) void suma(void); Crea el punto de entrada llamado suma void main(void) Inicia el punto de entrada principal llamado main { clrscr(); Esta función despeja la ventana de texto actual y coloca el cursor en la esquina superior izquierda. cout<<"SUMA DE 2 ENTEROS MEDIANTE FUNCION"<<endl; Imrpime en la ventana el texto “SUMA DE 2 ENTEROS MEDIANTE FUNCION” suma(); } void suma(void) Inicia el punto de entrada llamada suma { int a,b; Define las variables a y b como enteros (Busca un espacio en la memoria y le asigna el nombre de a y b, pero lo deja vacío) cout<<"Dame el valor de a: "; Imprime el texto “Dame el valor de a” cin>> a; Lee el valor de a dado por el usuario y lo almacena en la memoria con ese nombre cout<<"Dame el valor de b: "; Imprime el texto “Dame el valor de b” cin>> b; Lee el valor de b dado por le usuario y lo almacena en la memoria con ese nombre. cout<<"La suma es: "<<(a+b)<<endl; Imprime el texto “La suma es” y después imprime el resultado de la suma de los valores guardados en a y bgetch(); Espera a recibir una tecla para cerrar el programa. } Termina de ejecutar los operadores dentro de void suma() Código 2: #include<iostream.h> Instrucción de preprocesador que ordena llamar a la librería iostream (líneas de código ya creadas y las incluye en el programa) #include<conio.h> Instrucción de preprocesador que ordena llamar a la librería conio (líneas de código ya creadas y las incluye en el programa) #include<stdlib.h> Instrucción de preprocesador que ordena llamar a la librería stlib (líneas de código ya creadas y las incluye en el programa) class Operación Crea un objeto llamado operación y características { private: Hace que todo lo que este después de esta palabra sea inaccesible, solo para la clase int a; Crea una variable entero llamada a, y busca un espacio en la memoria para guardarla. int b; Crea una variable entero llamada b, y busca un espacio en la memoria para guardarla. public: Hace que todo lo que este después de esta palabra sea accesible, para todos incluyendo la clase. void suma (void) Inicia el punto de entrada llamada suma. { cout<<"dame el valor de a: "; Imprime la frase “dame el valor de a” en la pantalla del usuario. cin>> a; Recibe el valor dado por el usuario y lo almacena en el espacio de la memoria llamado a cout<<"dame el valor de b: "; Imprime la frase “dame el valor de b” en la pantalla del usuario. cin>> b; Recibe el valor dado por el usuario y lo almacena en el espacio de la memoria llamado b cout<<"La suma es: "<<(a+b)<<endl; Imprime la frase “La suma es” y después imprime el valor de la suma de los valores de las variables a y b. } }; Cierra el objeto void main(void) Inicia la el punto de entrada llamada main. { Operacion s1; Crea un objeto tipo operación llamado S1 clrscr(); Esta función despeja la ventana de texto actual y coloca el cursor en la esquina superior izquierda. s1.suma(); Utiliza el objeto s1 y ejecuta la orden suma system("pause"); Pone en pausa la ejecución de main. } Termina main 3. Para el código de trabajo 2, note que la función “suma”, esta declarada dentro del cuerpo de la clase. Modifique el código para que el cuerpo de la clase solo tenga el prototipo de la función “suma”, y declare la función de fuera de la clase. 4. Repita el código de estudio 2, modificando para que trabaje con una estructura en lugar de una clase. Haga sus comentarios y registre la salida proporcionada del programa. Los cambios en cuanto a esperar errores y correr el programa no son notorios ya que class y struct son en base lo mismo, solo que cuando se cambia a struct la memoria que se le aloja pasa a ser la del más grande. Cuestionario: 1.- Que es un paradigma de programación? Son las maneras o estilos de programación, ya que existen diferentes formas de diseñar un lenguaje de programación y varios modos de trabajar para obtener los resultados que necesitan los programadores. 2.- Investigue el origen y características de la programación estructurada. Tiene origen a finales de los años 1970, surgió una nueva forma de programar que no solamente permitía programas fiables y eficientes, sino que además estos estaban escritos de manera que se facilitaba su comprensión en fases de mejora posteriores. El teorema del programa estructurado, propuesto por Böhm-Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes: Secuencia Instrucción condicional. Iteración (bucle de instrucciones) con condición al principio. 3.- Investigar el origen y las características de la programación orientada a objetos. Surge en Noruega en 1967 con un lenguaje llamado Simula 67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl. Simula 67 introdujo por primera vez los conceptos de clases, corrutinas y subclases (conceptos muy similares a los lenguajes Orientados a Objetos El nacimiento de la Programación Orientación a Objetos en Europa pasó inadvertido para gran parte de los programadores. Hoy tenemos la Orientación a Objetos como un niño de 33 años al que todos quieren bautizar. 4.- Haga un cuadro comparativo entre las características de la programación estructurada y la programación orientada a objetos. Programación estructurada Es secuencial, permite escribir programas fáciles de leer y modificar. Sus tres estructuras de control son, secuencia, selección e iteración. Pretende resolver un problema de principio a fin en una sola estructura. Separa los datos de las funciones. Programación orientada a objetos Es un conjunto de datos y programas que poseen estructuras y forman parte de una organización Esta basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Debes atar basado en objetos, basado en clases y capaz de tener herencia de clases. Es una forma especial de programar, más cercana a cómo expresarías las cosas den la vida real que otros tipos de programación. Conclusiones: Haga sus conclusiones y expréselas en al menos media cuartilla. La programación estructurada aunque muy poco usada en estos últimos tiempos, fue la base para poder generar otro tipo de programaciones más avanzadas que permitieran a los programadores utilizar herramientas más complicadas, y de esta misma se crea la programación orientada a objetos, que en pequeño, sigue la misma lógica que la estructurada, pero con diferencias que la hacen mejor y más avanzada, como lo es principalmente que en este tipo de programación el usuario tiene permitido crear sus propias clases y ponerle las características que desee, para después poder utilizarlas para mejorar su programa, además de las características ya vistas en el documento como lo son, la abstracción el encapsulamiento, principio e ocultación, polimorfismo, herencia y recolección de basura, que son también las principales características que crean a la programación orientada a objetos. Durante esta práctica se nos fueron entregados dos códigos los cuales tenían errores, tanto de escritura como de sintaxis, ya que al intentar correrlos en un lenguaje de programación este arrojaba errores comunes y los cuales debemos comenzar a familiarizarnos para poder identificar en un futuro más rápidamente donde estamos erróneos y poder corregirlo sin retrasar o arruinar nuestro código.