Datos personales

Tuxtla Gutierrez, Chiapas, Mexico

miércoles, 19 de septiembre de 2007

Objetivo de Fundamentos de Programación

El estudiante analiza problemas, representara su solución mediante el modulo orientado a objetos, diseñara los algoritmos para las funciones, miembros y aplicaciones que interactúan con el objeto, así como implementarlos en algún lenguaje de programación.

Concepto de Objeto

Llegar a un propio concepto de objeto tomando en cuenta de que hablamos en fundamentos de programación. Puede ser algo tedioso y aburrido, pero es muy importante ya que sin un buen conocimiento o entendimiento de los conceptos, estos pueden convertirse en un gran problema posteriormente. El equipo a decidido tomar como concepto de objeto: <El objeto es aquello que posee atributos y caracteristicas, de las cuales podemos sacar probecho al realizar un software, estos pueden ser fisicos o no fisicos (aire) por ejemplo, en si los objetos son todos aquellas cosas que nos rodean y que interaptuan con nosotros.>.

1.1 Reconocimiento de objetos y clases en el mundo real y la interacción entre ellos.

La mayoría de los objetos en el mundo real tienen atributos (características que los describen). -Nombre-Edad-Sexo-etc.
El comportamiento de un objeto: Es el conjunto de cosas que pueden hacer un objeto.
Ejemplos de objetos:

1.-[Calculadora]
Atributos: color, teclas, pantalla, volumen, sistema electrónico.
Comportamientos: suma, resta, multiplicación, división, entre otras operaciones matemáticas.

2.-[Cañón]
Atributos: color, plásticos, luz, cristales, ventiladores, circuitos.
Comportamientos: proyectar imágenes.

3.-[Helicóptero]
Atributos: hélices, metal, cristales, motor.
Comportamientos: volar, avanzar a gran velocidad, dar vueltas, bajar y subir, suspenderse en el aire.

4.-[Impresora]
Atributos: Carcasa, tintas, circuitos, motores electrónicos, hojas.
Comportamientos: Imprimir fotos, acetatos, hojas blancas.

5.-[Clima]
Atributos: Cobertura metálica, circuitos electrónicos, tubos, gas, rendijas, sistemas electrónicos.
Comportamientos: enfriar el ambiente.

1.2 La abstracción y el encapsulamiento como un proceso natural.

La abstracción es un proceso con el cual podemos manejar de un amanera mas sencilla y eficaz la complejidad de los objetos. Esto es que podemos detallar los componentes que forman al objeto que y poder conocer y fijarnos en los elementos primordiales que a nosotros nos interesan. Para poder desarrollar un trabajo en base a dicho objeto. Es un proceso natural porque debe ser puesta a la práctica la capacidad de la persona para poder desarrollar lo diferentes niveles de abstracción, que manejamos, porque son estos como podemos tener el mayor control de la complejidad de los objetos, y sacar beneficios y provechos de nuestro abstracción, recordemos que para desarrollar un software debemos tener la mayor cantidad de datos posibles de los objetos.

En parte por el encapsulamiento es simplemente aquello que recubre el exterior del objeto para que los procesos y ejecuciones sean ocultos y no visibles ante las personas.

1.3 La POO y la complejidad del software

En este apartado hablaremos de las cosas que forman o debemos tomar en cuenta en programación orientada a objetos ya que son la unión de varios elementos inseparables que la conforman. Describimos a continuación.

La complejidad del dominio del problema: es en donde llevamos acabo la interacción entre desarrollador y usuario (cliente) en donde se tratan los términos y procesos que el usuario desea que el software ejecute o realice, pero en momentos el usuario puede tener poca o nula noción que saber explicarse y hacerse comprender por el desarrollador de software.

La dificultad de gestionar el proceso de desarrollo:
Aquí es en donde llevamos acabo el desarrollo de un software, es aquí donde surgen los problemas. El elaborar un sistema de software nuevo, es una gran cantidad de escritura, además de un grupo de desarrolladores, que se trate de hacer lo mas pequeño posible porque es aquí donde existen varios elementos que se exponen por diferentes desarrolladores. Si el grupo de desarrollo se manejan a distancia, es más el problema porque siempre existen comunicación complejas, ósea que existen comunicación compuestas por varios puntos de vistas diferentes. Que no pueden ser tratados muy específicamente por la distancia o dispersión de los desarrolladores.

La flexibilidad a través del software:
Esta es donde el desarrollador tiene todo una amplia gama de expresar todo lo que quiera que el programa ejecute. O tipos de abstracciones.

1.4 Conceptos del ciclo de vida del software

El proceso de elaboración de un software comienza con el análisis y diseño del mismo, cuando el personal en general se percata de que se haya en la necesidad de implementar un sistema que proporcione un mejor acondicionamiento del establecimiento y un mejor rendimiento.

[Ciclo de vida del software – Modelo de Cascada]


1.4.1 Especificaciones de requerimientos

El comienzo de la elaboración de un software comienza con la petición de una persona e ahí donde comienza la investigación preliminar, que consta de tres partes: aclaración de la solicitud, Estudio de factibilidad, Aprobación de la solicitud.

*Aclaración de de la solicitud: es el proceso donde se definen bien los términos de que es lo que el usuario desea en el programa.

* Estudio de factibilidad: Se debe determinar que el sistema solicitado sea factible de desarrollar; existen 3 aspectos relacionados con el estudio de factibilidad:
a) Factibilidad Técnica: esto es ver, cuales son las condiciones en que esta la empresa el equipo y el personal si los dos están alta mente calificados o si se debe invertir.
b) Factibilidad económica: esta parte es en donde comprobamos si la empresa tiene dinero como para invertir en la tecnología que se requiere y otros implementos, y saber si el beneficio de implementación de nueva tecnología será recuperada a corto o a largo plazo.
c) Factibilidad Operacional: esto es si el personal será capaz de manejar y administrar tanto la nueva tecnología según sea el caso o el software, o si existirá una resistencia por parte de alguna persona que se oponga al cambio evolutivo.

*Aprobación de la solicitud: al realizar el estudio de factibilidad en sus tres aspectos, y determinar que si pasan la calidad, se aprueba el proyecto y se comienza a la pronta realización del software.

Los analistas al trabajar con los empleados y administradores, deben estudiar los procesos de una empresa para dar respuesta a las siguientes preguntas clave:

¿Qué es lo que hace?
¿cómo se hace?
¿con qué frecuencia se presenta?
¿Qué tan grande es el volumen de transacciones o de decisiones?
¿Cuál es el grado de eficiencia con el que se efectúan las tareas?
¿Existe algún problema?
si existe un problema, ¿qué tan serio es?
si existe un problema, ¿cuál es la causa que lo origina?

1.4.2 Análisis Orientado a Objetos.

¿Qué hace? Esta pregunta es la que debemos de cuestionarnos para poder tener un buen análisis orientado a objeto ya así deducir los tipos de objetos del mundo real que están implicados y obtener los atributos de estos objetos determinando su comportamiento e interacciones.

1.4.3 Diseño Orientado a Objetos.

¿Cómo lo hace? Se piensa en objetos del mundo real que pueden ser representados como objetos del mundo informático. Se deben especificar los objetos con mayor precisión especificando en detalle lo que los objetos conocen y lo que pueden hacer, y describe son prudencia, sus interacciones. Se entra en un proceso detallado de los objetos para poder capturar la información más posible que podamos utilizar para la estructuración del software.

1.4.4 Programación Orientada a Objetos, conceptos y características

Este es una en la que no es necesarios por cada vez que necesitemos crear un programa no necesitamos crear todas las líneas de códigos si no que podemos estructurar uno nuevo en base uno anterior esto es porque podemos reutilizar los códigos fuentes por decir así. Para ahorrar tiempo y tener ventajas.

Los principios en que se apoyan las tecnologías orientadas a objetos son:

Objetos como instancias de una clase
Métodos
Mensajes

Y las características que ayudan a definir un objeto son:

Encapsulamiento
Modularidad
Abstracción
Polimorfismo

1.5 Elementos primordiales en el modelo de objetos.

1.5.1 Abstracción

Abstracción. Consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. Entonces entendemos que abstracción es analizar a fondo y desmembrar parte por parte hasta llegar al centro que compone un objeto que estemos analizando. Como lo es en abstracción orientada a objetos, es analizar los atributos, de los objetos para poder ir conociendo a fondo que es lo que conforman o las partes que forman dicho objeto. Y así sacar provecho de los atributos porque recordemos que entre más características del objeto mas base o fundamento de trabajo podemos tener.

1.5.2 Encapsulamiento

Encapsulamiento. Consiste en ocultar los atributos de un objeto, a la vez que se provee una interfaz pública por medio de sus métodos permitidos. También se define como la propiedad de los objetos de permitir acceso a su estado solamente a través de su interfaz o de relaciones preestablecidas con otros objetos. Dicho de otra manera el encapsulamiento es la manera de aislar la información del diseño y ejecución, como lo es los programas, únicamente miramos ante nos ojos una fachada bonita del programa mas sin embargo no miramos a simple vista el proceso de ejecución de cada orden que le damos al programa eso seria el encapsulamiento.

1.5.3 Modularidad

Propiedad que permite subdividir un programa en módulos para poder ser utilizados mas fácilmente, un modulo puede o se hace los mas independiente de otros lo mas que se pueda. Pero ante esto se pueden tener por separado los módulos pero tienen relación entre ellos.

1.5.4 Jerarquía y herencia

Jerarquía es una propiedad que permite una ordenación de las abstracciones, es decir permite ordenar en una estructura los objetos de más rango a los menores.

Herencia es aquello que define una relación entre clases, en donde una clase comparte la estructura o comportamiento definido en una o más clases, en otras palabras es un compartimiento de atributos de un objeto de mayor jerarquía a uno de menor jerarquía.

1.5.5 Polimorfismo.

Esta característica permite implementar múltiples formas de un mismo método, dependiendo cada una de ellas de la clase sobre la que se realice la implementación. Un ejemplo muy comprendedor de polimorfismo seria una gelatina colocada en varios moldes aun que los mondes son diferentes formas el contenido sigue siendo gelatina. Esto es que aunque pusimos varios moldes se estaría empleando diferentes formas pero siempre llegaremos a que es gelatina.

1.6 Historia de los paradigmas en el desarrollo del software.

Paradigmas: Representan un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas.
También hay situaciones donde un paradigma resulta más apropiado que otro.
Los más comunes son el desarrollo en cascada, el desarrollo en espira’‘, el desarrollo por prototipos, el desarrollo incremental, el desarrollo en V y el desarrollo orientado a objetos. También existen modelo híbridos, los cuales combinan elementos de diferentes modelos según las necesidades existentes.
En Ingeniería de software el desarrollo en cascada es el enfoque metodológico que ordena rigurosamente las etapas del ciclo de vida del software, de forma tal que el inicio de cada etapa debe esperar a la finalización de la inmediatamente anterior. Un ejemplo de una metodología de desarrollo en cascada es:  Análisis de requisitos  Diseño  Programación  Prueba  Implantación  Mantenimiento De esta forma, cualquier error de diseño detectado en la etapa de prueba conduce necesariamente al rediseño y nueva programación del código afectado, aumentando los costes del desarrollo. La palabra cascada sugiere, mediante la metáfora de la fuerza de la gravedad, el esfuerzo necesario para introducir un cambio en las fases más avanzadas de un proyecto. Si bien ha sido ampliamente criticado desde el ámbito académico y la industria, sigue siendo el paradigma más seguido al día de hoy Para cada actividad habrá cuatro tareas. Imagen:Modelo Espiral.JPG Determinar o fijar objetivos Fijar también los productos definidos a obtener: requerimientos, especificacion, manual de usuario. Fijar las restricciones. Identificación de riesgos del proyecto y estrategias alternativas para evitarlos. Hay una cosa que solo se hace una vez: planificacion inicial o previa.
Análisis del riesgo Se estudian todos los riesgos potenciales y se seleccionan una o varias alternativas propuestas para reducir o eliminar los riesgos. Desarrollar, verificar y validar (probar) Tareas de la actividad propia y se prueba. Planificar Revisamos todo lo hecho, evaluándolo, y con ello decidimos si continuamos con las fases siguientes y planificamos la proxima actividad. Ventajas El analisis del riesgo se hace de forma explícita y clara. Une los mejores elementos de los restantes modelos. Inconvenientes Genera mucho trabajo adicional. Exige una cierta habilidad en los analistas

1.7 Beneficios del modelo de objetos y de la POO sobre otros paradigmas

En resumen, la programación orientada a objetos beneficia a los desarrolladores debido a que: Los programas son fáciles de diseñar debido a que los objetos reflejan elementos del mundo real.


  1. Las aplicaciones son más sencillas para los usuarios debido a que los datos innecesarios están ocultos.
  2. Los objetos son unidades autocontenidas.
  3. La productividad se incrementa debido a que puede reutilizar el código.
  4. Los sistemas son fáciles de mantener y se adaptan a las cambiantes necesidades de negocios.
  5. Es más fácil crear nuevos tipos de objetos a partir de los ya existentes.
    Simplifica los datos complejos.
  6. Reduce la complejidad de la transacción.
  7. Confiabilidad.
  8. Robustez.
  9. Capacidad de ampliación.