Programación 3. Tarea 1
Universidad abierta para adultos (UAPA).
Después de consultar el texto básico de la asignatura y otros documentos sugeridos por su facilitador, en el contenido de la Unidad I, realiza las actividades sugeridas:
1. Investigar en la web acerca de los lenguajes de programación orientados a objetos, características, ventajas y desventajas.
La programación orientada a objetos es un enfoque de programación que combina datos y acciones asociadas (métodos) en estructuras lógicas (objetos). Este enfoque aumenta la capacidad para administrar la complejidad del software, lo cual resulta especialmente importante cuando se desarrollan y mantienen aplicaciones y estructuras de datos de gran tamaño. (MATLAB, 2018).
La programación Orientada a objetos (POO, u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos en sus interacciones, para diseñar aplicaciones y programas informáticos.
Está basada en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos. (Ángel Roldán, 2017).
La POO es una forma especial de programar, este paradigma de programación es cercano a como expresamos las cosas en la vida real en nuestro día a día. Con la POO tenemos que aprender a pensar las cosas de una manera distinta para poder escribir nuestros programas en términos de objetos, propiedades y métodos. La POO tiene como principio que todo en la vida es un objeto programable, entonces para empezar a programar con este paradigma tendríamos que empezar con desarrollar nuestro pensamiento basado en objetos.
CARACTERISTICAS:
-Abstracción: denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un «agente» abstracto que puede realizar trabajo, informar y cambiar su estado, y «comunicarse» con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos, y, cuando lo están, una variedad de técnicas es requeridas para ampliar una abstracción. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.
-Encapsulamiento: significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
-Modularidad: se denomina modularidad a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la modularidad de diversas formas.
-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. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas; solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado interno de un objeto de manera inesperada, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
-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. O, dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en «tiempo de ejecución», esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en «tiempo de compilación») de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.
-Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento, permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.
-Recolección de basura: la recolección de basura o garbage collector es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando.
En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse expresamente.
VENTAJAS:
-Todo el código se encuentra en un solo lugar
-Los objetos pueden tener varios atributos, por ejemplo, que lea un sensor y a la vez encienda.
-Son más fáciles de entender los códigos.
-Le ejecución del programa es rápida y sencilla, todo se encuentra en una sola ventana.
DESVENTAJAS:
-Los programas no pueden ser moldeados enteramente por la programación orientada a objetos.
-Para leer, modificar, o hacerles algo simplemente; en algunos programas debes realizar un paso extra para realizar estas acciones.
-Si se fuerza el lenguaje puede perder algunos objetos y características.
-Los objetos requieren una extensa documentación.
-Los objetos al ser abstracto pueden no coincidir la visión de un programador a otro.
2. Elaborar informe de lectura, mapa conceptual o cuadro comparativo acerca de: clase, atributos, abstracción, y polimorfismo.
| Clase | Atributos | Abstracción | Polimorfismo |
| En la programación orientada a objetos, una clase es una construcción que se utiliza como un modelo (o plantilla) para crear objetos de ese tipo. El modelo describe el estado y el comportamiento que todos los objetos de la clase comparten. Un objeto de una determinada clase se denomina una instancia de la clase. La clase que contiene (y se utilizó para crear) esa instancia se puede considerar como del tipo de ese objeto, por ejemplo, una instancia del objeto de la clase «Personas» sería del tipo «Personas». Una clase por lo general representa un sustantivo, como una persona, lugar o (posiblemente bastante abstracta) cosa – es el modelo de un concepto dentro de un programa de computadora. Fundamentalmente, encapsula el estado y el comportamiento del concepto que representa. Encapsula el estado a través de marcadores de datos llamados atributos (o variables miembro o variables de instancia), encapsula el comportamiento a través de secciones de código reutilizables llamados métodos. | Los atributos son características que describen a determinado objeto, como puede ser su nombre, edad, sexo, tamaño, forma, color, altura, etc. En este momento los atributos también podrán ser llamados «Datos» de los objetos, involucrándonos un poco más con lo referente a la terminología de un sistema de información. Considerando por ejemplo el objeto ave, puede tener los siguientes «atributos»: alas, plumas, pico, patas, entre otros. Los atributos son elementos importantes en el campo de la programación, ya que serán determinados de forma más específica, y de acuerdo al análisis del contexto o ambiente de donde se extraigan los objetos, determinando los atributos que nos serán útiles en determinado momento, y no dejando nada de forma ambigua o indeterminada. | La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. 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). El común denominador en la evolución de los lenguajes de programación, desde los clásicos o imperativos hasta los orientados a objetos, ha sido el nivel de abstracción del que cada uno de ellos hace uso. Los lenguajes de programación son las herramientas mediante las cuales los diseñadores de lenguajes pueden implementar los modelos abstractos. La abstracción ofrecida por los lenguajes de programación se puede dividir en dos categorías: abstracción de datos (pertenecientes a los datos) y abstracción de control (perteneciente a las estructuras de control). Los diferentes paradigmas de programación han aumentado su nivel de abstracción, comenzando desde los lenguajes de máquina, lo más próximo al ordenador y más lejano a la comprensión humana; pasando por los lenguajes de comandos, los imperativos, la orientación a objetos (OO), la Programación Orientada a Aspectos (POA); u otros paradigmas como la programación declarativa, etc. | En programación orientada a objetos el polimorfismo se refiere a la capacidad para que varias clases derivadas de una antecesora utilicen un mismo método de forma diferente. Por ejemplo, podemos crear dos clases distintas: Pez y Ave que heredan de la superclase Animal. La clase Animal tiene el método abstracto mover que se implementa de forma distinta en cada una de las subclases (peces y aves se mueven de forma distinta). Como se mencionó anteriormente, el concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. Así nacen los conceptos de funciones y tipos polimórficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimórficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está especificado. |
3. Crear una clase pública, con atributos y métodos.
Carpeta comprimida:
Código fuente:
using System;
namespace carro
{
class Program
{
static void Main(string[] args)
{
Carro carro = new Carro();
Console.WriteLine(«Digite la marca del carro: «);
carro.Marca = Console.ReadLine();
Console.WriteLine(«Digite el color del carro: «);
carro.Color = Console.ReadLine();
carro.ImpripmirMarcaYColor();
}
}
}
Subir la carpeta comprimida de tu tarea, debe de contener el código fuente.
[ratings]
