Fundamentos de La Programación Orientada a Objetos

54
Fundamentos de la programación orientada a objetos Enviado por Juan Antonio Fonseca Hernández Anuncios Google: Consolidación de Deudas Consolide y Reduzca Sus pagos. Reciba Aquí Su Análisis Gratuito! | www.LibredeDeudas.com Stoneware webRDP Free Crossplatform RDP Client Runs standalone or in a browser | www.stone- ware.com diseño de paginas web ¿Buscas diseño de paginas web? Consigue Mejores Resultados con ASK | www.Ask.com 1. 2. Resumen 3. 4. Desarrollo 5. Conclusiones 6. Bibliografía Resumen: En este artículo el autor hace una sucinta descripción de los fundamentos de la programaciónorientada a objetos, necesaria para aquellos que no poseen nociones sobre esta materia, y material de consulta para los que la conocen o dominan. Introducción: En el universode la programación actual, es de amplio consenso que la programación orientada a objetos es el mejor paradigmadisponible para enfrentar las cada vez más complejas tareas de la programación. Sin embargo, no todos los programadores tienen claro los fundamentos de este paradigma, y tienden a confundir la programación usando objetos con la programación orientada a objetos. En Visual Basic, por ejemplo, se usan objetos (componentes) sin que ello implique que estemos en presencia de un lenguaje orientado a objetos. Programamos orientado a objetos cuando, usando un lenguaje de programación, somos capaces de modelar el problema en términos de objetos y sus relaciones.

description

Informatica

Transcript of Fundamentos de La Programación Orientada a Objetos

Fundamentos de la programación orientada a objetosEnviado por Juan Antonio Fonseca Hernández

Anuncios Google:

Consolidación de DeudasConsolide y Reduzca Sus pagos. Reciba Aquí Su Análisis Gratuito! | www.LibredeDeudas.com

Stoneware webRDPFree Crossplatform RDP Client Runs standalone or in a browser | www.stone-ware.com

diseño de paginas web¿Buscas diseño de paginas web? Consigue Mejores Resultados con ASK | www.Ask.com

1.2. Resumen 3.4. Desarrollo 5. Conclusiones 6. Bibliografía

Resumen:

En este artículo el autor hace una sucinta descripción de los fundamentos de la programaciónorientada a objetos, necesaria para aquellos que no poseen nociones sobre esta materia, y material de consulta para los que la conocen o dominan.

Introducción:

En el universode la programación actual, es de amplio consenso que la programación orientada a objetos es el mejor paradigmadisponible para enfrentar las cada vez más complejas tareas de la programación. Sin embargo, no todos los programadores tienen claro los fundamentos de este paradigma, y tienden a confundir la programación usando objetos con la programación orientada a objetos.

En Visual Basic, por ejemplo, se usan objetos (componentes) sin que ello implique que estemos en presencia de un lenguaje orientado a objetos.

Programamos orientado a objetos cuando, usando un lenguaje de programación, somos capaces de modelar el problema en términos de objetos y sus relaciones.

Es decir cuando cada entidad en el programa es un objeto que brinda determinados servicios.

En este trabajo se hace una sucinta descripción de los fundamentos de la programación orientada a objetos, necesaria para aquellos que no poseen nociones sobre esta materia, y material de consulta para los que la conocen o dominan.

Desarrollo:

La programación orientada a objetos es la expresión de uno de los más avanzados paradigmasen el campo de la programación, y es, al mismo tiempo, el resultado de la evolución experimentada por los paradigmas anteriores.

A diferencia de otros paradigmas de programación, que intentan, al abordar un problema, representarlo o modelarlo empleando entidades cercanas a la computadora (arreglos, subrutinas, módulos) la programación orientada a objetos se propone emplear entidades lo más cercanas posibles a la realidad.

La programación orientada a objetos tiene como conceptos fundamentales los conceptos de objeto y clase.

Un objeto es un ente que posee sus características propias (propiedades) y un conjunto de acciones que es capaz de realizar (métodos).

Una clase es un ente abstracto que permite declarar las propiedades y los métodos de objetos similares.

Un lenguaje de programaciónorientado a objetos debe permitir al programador realizar definiciones de clases, y construir objetos a partir de esas clases.

Para resolver un problema bajo el paradigma de la programación orientada a objetos basta con determinar y caracterizar los diferentes objetos que intervienen en el problema, definir sus propiedades y métodos y ponerlos a interactuar entre sí.

Ejemplo:

Supongamos que se desea diseñar una aplicación para controlar a todo el personal que estudia o trabaja en el Instituto Superior Pedagógico conociendo la información correspondiente a cada uno de ellos.

Trabajadores Docentes Trabajadores de Servicio Estudiantes

Nombre Nombre Nombre

Dirección Dirección Dirección

Número de Identidad Número de Identidad Número de Identidad

Sexo Sexo Sexo

Fecha de Ingreso Fecha de Ingreso Año

Cargo Cargo Especialidad

Salario Salario 

Departamento Área 

Asignatura   

Tabla #1

Inicialmente podríamos pensar en declarar tres clases : TDocente, TServicio y Estudiante; pero si analizamos la información observamos que hay propiedades que se repiten en las tres clases como son: Nombre, Dirección, Número de Identidad y Sexo por lo que se pudiera declarar una clase Persona que agrupe estas propiedades comunes y así no tener que repetirlas en cada una de las clases por lo que tendríamos ahora cuatro clases:

pero aún quedan, en las clase TDocente y TServicio propiedades comunes por lo que se pudiera declarar una clase Trabajador con las propiedades Fecha Ingreso, cargo y Salario quedando finalmente cinco clases:

De acuerdo a las clase que hemos concebido podemos decir que un Estudiante es una Persona que tiene un año y una especialidad; un Trabajador es una Persona que tiene una fecha de ingreso, un cargo y un salario; un Trabajador docente es un Trabajador que tiene un departamento y una asignatura y un Trabajador de servicio es un Trabajador que tiene área.

Los Estudiantes y los Trabajadores forman subconjuntos de las Personas. La clase Persona es la Clase Base de las clases Estudiante y Trabajador por lo que estas clases heredan las propiedades y los métodos de la clase Persona.

De manera similar los Trabajadores Docentes y los Trabajadores de Servicio son subconjuntos de los Trabajadores por lo que la clase Trabajador es Clase Base de las clases TDocente y TServicio y por tanto heredan las propiedades y los métodos de la clase Trabajador.

Luego las cinco clases serían:

Clase Persona

Propiedades: Nombre

Dirección

Número de Identidad

Sexo

Métodos: Entrar Dirección

Visualizar Nombre

Visualizar Dirección

Visualizar Número Identidad

Visualizar Sexo

Tabla #2

Puedes constatar que no hemos definido métodos para Entrar nombre, Entrar número de identidad, ni Entrar sexo porque no tienen sentido; la persona no puede cambiar su nombre, número de carné de identidad, ni sexo ella misma.

Nuestra persona tiene la posibilidad de cambiar de dirección y de visualizar su nombre, dirección, número de identidad y sexo.

Clase Trabajador

Propiedades y métodos de la clase Persona

Propiedades: Fecha de Ingreso

Cargo

Salario

Métodos: Entrar Cargo

Entrar Salario

Visualizar Fecha de Ingreso

Visualizar Cargo

Visualizar Salario

Tabla #3

Nuestro trabajador tiene la posibilidad de cambiar de cargo y de salario y de visualizar su cargo, salario y fecha de ingreso; pero también puede cambiar su dirección y visualizar su nombre, dirección, número de carné de identidad y sexo porque es a la vez un trabajador y una persona.

Clase Estudiante

Propiedades y métodos de la clase Persona

Propiedades: Año

Especialidad

Métodos: Entrar Año

Visualizar Año

Visualizar Especialidad

Tabla #4

Nuestro estudiante tiene la posibilidad de cambiar de año y de visualizar el año que cursa y su especialidad; pero también puede cambiar su dirección y visualizar se nombre, dirección, número de carné de identidad y sexo porque es a la vez un estudiante y una persona.

Clase TDocente

Propiedades y métodos de la clase Trabajador

Propiedades: Departamento

Asignatura

Métodos: Entrar Departamento

Entrar Asignatura

Visualizar Departamento

Visualizar Asignatura

Tabla #5

Nuestro trabajador docente tiene la posibilidad de cambiar de departamento y de asignatura y de visualizar el departamento y la asignatura a la que pertenece; pero también puede cambiar su dirección, cargo y salario y visualizar su nombre, dirección, número de carné de identidad, sexo y fecha de ingreso porque es a la vez un trabajador docente y un trabajador que es a su vez una persona.

Clase TServicio

Propiedades y métodos de la clase Trabajador

Propiedades: Área

Métodos: Entrar Área

Visualizar Área

Tabla #6

Nuestro trabajador de servicio tiene la posibilidad de cambiar de área y de visualizar el área donde trabaja; pero también puede cambiar su dirección, cargo y salario y visualizar su nombre, dirección, número de carné de identidad, sexo y fecha de ingreso porque es a la vez un trabajador de servicio y un trabajador que es a su vez una persona.

Los objetos que intervienen en la solución de este problema son las instancias de las clases TDocente, TServicio y Estudiante que se llenan con datos reales. Por ejemplo:

El trabajador docente Juan, que vive en la Calle 5 # 29, con número de carné de identidad 57062406503, del sexo masculino, con fecha de ingreso 1/9/94, que ocupa el cargo de profesor, con salario de 620 pesos, perteneciente al departamento de Informática, y que imparte la asignatura de Programación.

El trabajador de servicio Pedro, que vive en Maceo # 39, con número de carné de identidad 61120306325, del sexo masculino, con fecha de ingreso 2/7/91, que ocupa el cargo de electricista, con salario de 230 pesos, y que pertenece al área de mantenimiento.

La estudiante María, que vive en el Edificio # 78, con número de carné de identidad 65082706224, del sexo femenino, que está en primer año, y es de la especialidad de Inglés.

Como ya se dijo, en la programación orientada a objetos, un programa no es más que una colección de objetos interactuando entre sí.

Esa interacción se produce a través de mensajes.

Un mensaje es un pedido al objeto de que ejecute uno de sus métodos y consta del nombre del objeto y el nombre del método a ejecutar. Un mensaje podría ser "Estudiante dígame su especialidad".

Como se explicó anteriormente, puede considerarse a un estudiante como una persona y en consecuencia solicitarle los mismos servicios que a una persona por lo que también podríamos pedirle al estudiante que nos diga su nombre, dirección, carne de identidad y sexo.

A esta posibilidad de considerar una instancia de una clase como instancia de la clase base se le conoce con el nombre de polimorfismo.

Conclusiones:

Para entender cómo funciona el paradigma de la programación orientada a objetos es necesario ver un programa como una colección de objetos que interactúan entre sí enviándose mensajes y cambiando su estado durante la ejecución.

Resolver un problema bajo el paradigma de la programación orientada a objetos implica determinar y caracterizar los diferentes objetos que intervienen en el problema, definir sus propiedades y métodos y ponerlos a interactuar.

Bibliografía:

Rivero Errico, Alfonso J. Introducción a la programación para Windows con Visual Basic.-- Ciudad de la Habana : Editorial Pueblo y Educación, 2001

Díaz Iglesias, Jack y Pérez González, Franklin. Delphi 5 Básico.-- Ciudad de la Habana : Editorial Pueblo y Educación, 2001

Curso por correo electrónico sobre Borland Delphi.

 

 

Autor:

Asistente Juan Antonio Fonseca Hernández

http://www.monografias.com/trabajos28/programacion-objetos/programacion-objetos.shtml

Diseño de bases de datosEnviado por Guillermo de Jesús Saldivar Vargas

Anuncios Google:

Licenciaturas en LíneaPensando en una Carrera en Diseño? Obtén tu Diploma, Lanza tu Carrera! | www.ClassesUSA.com

Free Website TemplatesDesign Your Own Free Website Flash, Drag & Drop, Easy, Unique | www.Wix.com/Free-Website-Builder

diseño de paginas web¿Buscas diseño de paginas web? Consigue Mejores Resultados con ASK | www.Ask.com

1.2. Diseño de Bases de Datos 3. Objetivos del diseño de bases de datos 4. Conceptos importantes 5. Conclusión 6. Referencias

INTRODUCCIÒN.

Hoy en día las empresasmanejan una gran cantidad de datos. Cualquier empresa que se precie debe tener almacenados todos estos datos en una base de datos para poderrealizarlos mediante una aplicación profesional; sin esta funcionalidad resultaría imposible tratar y manejar en su totalidad los datos que leva a cabo la empresa y se perdería un tiempo y un dinero muy valiosos

Uno de los pasos cruciales en la construcciónde una aplicación que maneje una base de datos, es sin duda, el diseño de la base de datos.

Si las tablas no son definidas apropiadamente, podemos tener muchos dolores de cabeza al momento de ejecutar consultas a la base de datos para tratar de obtener algún tipo de información.

No importa si nuestra base de datos tiene sólo 20 registros, o algunos cuantos miles, es importante asegurarnos que nuestra base de datos está correctamente diseñada para que tenga eficienciay que se pueda seguir utilizando por largo del tiempo.

En este artículo, se mencionarán algunos principios básicos del diseño de base de datos y se tratarán algunas reglas que se deben seguir cuando se crean bases de datos.

Dependiendo de los requerimientos de la base de datos, el diseño puede ser algo complejo, pero con algunas reglas simples que tengamos en la cabeza será mucho más fácil crear una base de datos perfecta para nuestro siguiente proyecto.

Diseño de Bases de Datos

Son muchas las consideraciones a tomar en cuenta al momento de hacer el diseño de la base de datos, quizá las más fuertes sean:

La velocidadde acceso, El tamaño de la información, El tipo de la información, Facilidad de acceso a la información, Facilidad para extraer la información requerida, El comportamiento del manejador de bases de datos con cada tipo de

información.

No obstante que pueden desarrollarse sistemas de procesamiento de archivo e incluso manejadores de bases de datos basándose en la experiencia del equipo de desarrollo de software logrando resultados altamente aceptables, siempre es recomendable la utilización de determinados estándares de diseño que garantizan el nivel de eficiencia mas alto en lo que se refiere a almacenamiento y recuperación de la información.

De igual manera se obtiene modelos que optimizan el aprovechamiento secundario y la sencillez y flexibilidad en las consultas que pueden proporcionarse al usuario.

OBJETIVOS DEL DISEÑO DE BASES DE DATOS

Entre las metas más importantes que se persiguen al diseñar un modelode bases de datos, se encuentran las siguientes que pueden observarse en esta figura.

 

1. Almacenar Solo La Información Necesaria.

A menudo pensamos en todo lo que quisiéramos que estuviera almacenado en una base de datos y diseñamos la base de datos para guardar dichos datos. Debemos de ser realistas acerca de nuestras necesidades y decidir qué información es realmente necesaria.

Frecuentemente podemos generar algunos datos sobre la marcha sin tener que almacenarlos en una tabla de una base de datos. En estos casos también tiene sentido hacer esto desde el punto de vista del desarrollo de la aplicación.

1.2. Normalizar la Estructura de las Tablas.

Si nunca antes hemos oído hablar de la "normalización de datos", no debemos temer. Mientras que la normalización puede parecer un tema complicado, nos podemos beneficiar ampliamente al entender los conceptos más elementales de la normalización.

Una de las formas más fáciles de entender esto es pensar en nuestras tablas como hojas de cálculo. Por ejemplo, si quisiéramos seguir la pista de nuestra colección

de CD’s en una hoja de cálculo, podríamos diseñar algo parecido a lo que se muestra en la siguiente tabla.

 

+------------+-------------+--------------+ .. +--------------+

| Álbum | track1 | track2 | | track10 |

+------------+-------------+--------------+ .. +--------------+

Esto parece razonable. Sin embargo el problema es que el número de pistas que tiene un CD varía bastante. Esto significa que con este método tendríamos que tener una hoja de cálculo realmente grande para albergar todos los datos, que en los peores casos podrían ser de hasta 20 pistas. Esto en definitiva no es nada bueno.

Uno de los objetivosde una estructura de tabla normalizada es minimizar el número de "celdas vacías". El darnos cuenta de que cada lista de CD’s tiene un conjunto fijo de campos (título, artista, año, género) y un conjunto variable de atributos (el número de pistas) nos da una idea de cómo dividir los datos en múltiples tablas que luego podamos relacionar entre sí.

Mucha gente no esta familiarizada con el concepto "relacional", de manera sencilla esto significa, que grupos parecidos de información son almacenados en distintas tablas que luego pueden ser "juntadas" (relacionadas) basándose en los datos que tengan en común.

Es necesario que al realizar la estructura de una base de datos, esta sea flexible. La flexibilidad está en el hecho que podemos agregar datos al sistemaposteriormente sin tener que rescribir lo que ya tenemos. Por ejemplo, si quisiéramos agregar la información de los artistas de cada álbum, lo único que tenemos que hacer es crear una tabla artista que esté relacionada a la tabla álbum de la misma manera que la tabla pista. Por lo tanto, no tendremos que modificar la estructura de nuestras tablas actuales, simplemente agregar la que hace falta.

La eficiencia se refiere al hecho de que no tenemos duplicación de datos, y tampoco tenemos grandes cantidades de "celdas vacías".

El objetivoprincipal del diseño de bases de datos es generar tablas que modelan los registros en los que guardaremos nuestra información.

Es importante que esta información se almacene sin redundancia para que se pueda tener una recuperación rápida y eficiente de los datos.

A través de la normalización tratamos de evitar ciertos defectos que nos conduzcan a un mal diseño y que lleven a un procesamiento menos eficaz de los datos.

Podríamos decir que estos son los principales objetivos de la normalización:

Controlar la redundancia de la información. Evitar pérdidas de información. Capacidad para representar toda la información.

Mantener la consistencia de los datos.

3. Seleccionar el Tipo de Dato Adecuado.

Una vez identificadas todas las tablas y columnas que necesita la base de datos, debemos determinar el tipo de dato de cada campo. Existen tres categorías principales que pueden aplicarse prácticamente a cualquier aplicación de bases de datos:

Texto Números Fecha y hora

Cada uno de éstos presenta sus propias variantes, por lo que la elección del tipo de dato correcto no sólo influye en el tipo de información que se puede almacenar en cada campo, sino que afecta al rendimiento global de la base de datos.

A continuación se dan algunos consejos que nos ayudarán a elegir un tipo de dato adecuado para nuestras tablas:

Identificar si una columna debe ser de tipo texto, numérico o de fecha. Elegir el subtipo más apropiado para cada columna. Configurar la longitud máxima para las columnas de texto y numéricas, así

como otros atributos.

1.4. Utilizar Índices Apropiadamente

Los índices son un sistema especial que utilizan las bases de datos para mejorar su rendimiento global. Dado que los índices hacen que las consultas se ejecuten más rápido, podemos estar incitados a indexar todas las columnas de nuestras tablas.

Sin embargo, lo que tenemos que saber es que el usar índices tiene un precio. Cada vez que hacemos un INSERT, UPDATE, REPLACE, o DELETE sobre una tabla, MySQL tiene que actualizar cualquier índice en la tabla para reflejar los cambios en los datos.

¿Así que, cómo decidimos usar índices o no? La respuesta es "depende". De manera simple, depende que tipo de consultas ejecutamos y que tan frecuentemente lo hacemos, aunque realmente depende de muchas otras cosas.

Así que antes de indexar una columna, debemos considerar que porcentaje de entradas en la tabla son duplicadas. Si el porcentaje es demasiado alto, seguramente no veremos alguna mejora con el uso de un índice. Ante la duda, no tenemos otra alternativa que probar.

1.5. Usar Consultas REPLACE

Existen ocasiones en las que deseamos insertar un registroa menos de que éste ya se encuentre en la tabla. Si el registro ya existe, lo que quisiéramos hacer es una actualización de los datos.

1.6. Usar Una Versión Reciente de MySQL

La recomendación es simple y concreta, siempre que esté en nuestras manos, debemos usar la versión más reciente de MySQL que se encuentre disponible. Además de que las nuevas versiones frecuentemente incluyen muchas mejoras, cada vez son más estables y más rápidas. De esta manera, a la vez que sacamos provecho de las nuevas características incorporadas en MySQL, veremos significativos incrementos en la eficiencia de nuestro servidor de bases de datos.

1.8. Usar Tablas Temporales.

Cuando estamos trabajando con tablas muy grandes, suele suceder que ocasionalmente necesitemos ejecutar algunas consultas sobre un pequeño subconjunto de una gran cantidad de datos. En vez de ejecutar estas consultas sobre la tabla completa y hacer que MySQL encuentre cada vez los pocos registros que necesitamos, puede ser mucho más rápido seleccionar dichos registros en una tabla temporal y entonces ejecutar nuestras consultas sobre esta tabla.

Una tabla temporal existe mientras dure la conexión a MySQL. Cuando se interrumpe la conexión MySQL remueve automáticamente la tabla y libera el espacio que ésta usaba.

1.7. Recomendaciones.

El último paso del diseño de la base de datos es adoptar determinadas convenciones de nombres. Aunque MySQL es muy flexible en cuanto a la forma de asignar nombre a las bases de datos, tablas y columnas, he aquí algunas reglas que es conveniente observar:

Utilizar caracteres alfanuméricos. Limitar los nombres a menos de 64 caracteres (es una restricción de MySQL). Utilizar el guión bajo (_) para separar palabras. Utilizar palabras en minúsculas (esto es más una preferencia personal que una

regla). Los nombres de las tablas deberían ir en plural y los nombres de las columnas

en singular (es igual una preferencia personal). Utilizar las letras ID en las columnas de clave primaria y foránea. En una tabla, colocar primero la clave primaria seguida de las claves foráneas. Los nombres de los campos deben ser descriptivos de su contenido. Los nombres de los campos deben ser unívocos entre tablas, excepción hecha

de las claves.

Los puntos anteriores corresponden muchos de ellos a preferencias personales, más que a reglas que debamos de cumplir, y en consecuencia muchos de ellos pueden ser pasados por alto, sin embargo, lo más importante es que la nomenclaturautilizada en nuestras bases de datos sea coherente y consistente con el fin de minimizar la posibilidad de errores al momento de crear una aplicación de bases de datos.

CONCEPTOS IMPORTANTES

1.

2. Base de Datos.- Cualquier conjunto de datos organizados para su almacenamiento en la memoria de un ordenador o computadora, diseñado para facilitar su mantenimiento y acceso de una forma estándar. Los datos suelen aparecer en forma de texto, números o gráficos. Hay cuatro modelos principales de bases de datos: el modelo jerárquico, el modelo en red, el modelo relacional (el más extendido hoy en día).

3. Base de Datos Relacional.- Tipo de base de datos o sistema de administración de bases de datos, que almacena información en tablas (filas y columnas de datos) y realiza búsquedas utilizando los datos de columnas especificadas de una tabla para encontrar datos adicionales en otra tabla.

4. Datos Elementales.-Un dato elemental, tal como indica su nombre, es una pieza elemental de información. El primer paso en el diseño de una base de datos debe ser un análisis detallado y exhaustivo de los datos elementales requeridos.

5. Campos y Subcampos.- Los datos elementales pueden ser almacenados en campos o en subcampos. Un campo es identificado por un rótulo numérico que se define en la FDT de la base de datos. A diferencia de los campos, los subcampos no se identifican por medio de un rótulo, sino por un delimitador de subcampo.

6. Delimitador de Subcampo.- Un delimitador de subcampo es un código de dos caracteres que precede e identifica un subcampo de longitud variable dentro de un campo.

7. DBMS: Data Base Management System (SISTEMA DE MANEJO DE BASE DE DATOS).-Consiste de una base de datos y un conjunto de aplicaciones ( programas) para tener acceso a ellos.

à Errores que se pueden encontrar en el diseño de una base de datos:

8. Modelo de Datos.- es un conjunto de herramientas conceptuales para describir los datos, las relaciones entre ellos, su semántica y sus limitantes.

9. Redundancia.- Esta se presenta cuando se repiten innecesariamente datos en los archivos que conforman la base de datos.

10.Inconsistencia.- Ocurre cuando existe información contradictoria o incongruente en la base de datos.

11.Dificultad en el Acceso a los Datos.-Debido a que los sistemas de procesamiento de archivos generalmente se conforman en distintos tiempos o épocas y ocasionalmente por distintos programadores, el formato de la información no es uniforme y se requiere de establecer métodos de enlace y conversión para combinar datos contenidos en distintos archivos.

12.Aislamiento de los Datos.- Se refiere a la dificultad de extender las aplicaciones que permitan controlar a la base de datos, como pueden ser, nuevos reportes, utilerías y demás debido a la diferencia de formatos en los archivos almacenados.

13.Anomalías en el Acceso Concurrente.- Ocurre cuando el sistema es multiusuario y no se establecen los controles adecuados para sincronizar los procesos que afectan a la base de datos. Comúnmente se refiere a la poca o nula efectividad de los procedimientos de bloqueo.

14.Problemas de Seguridad.- Se presentan cuando no es posible establecer claves de acceso y resguardo en forma uniforme para todo el sistema, facilitando así el acceso a intrusos.

à Niveles de Diseño:

15.Problemas de Integridad.- Ocurre cuando no existe a través de todo el sistema procedimientos uniformes de validación para los datos.

16.Nivel Físico.- Es aquel en el que se determinan las características de almacenamiento en el medio secundario. Los diseñadores de este nivel poseen un amplio dominio de cuestiones técnicas y de manejo de hardware.

17.Nivel Conceptual.- Es aquel en el que se definen las estructuras lógicas de almacenamiento y las relaciones que se darán entre ellas. Ejemplos comunes de este nivel son el diseño de los registros y las ligas que permitirán la conexión entre registros de un mismo archivo, de archivos distintos incluso, de ligas hacia archivos.

à Clasificación de Modelos de Datos:

18.Nivel de Edición.-Es aquel en el que se presenta al usuario final y que puede tener combinaciones o relaciones entre los datos que conforman a la base de datos global. Puede definirse como la forma en el que el usuario aprecia la información y sus relaciones.

19.Modelos Lógicos Basados en Objetos.- Son aquellos que nos permiten una definición clara y concisa de los esquemas conceptuales y de visión. Su característica principal es que permiten definir en forma detallada las limitantes de los datos.

20.Modelos Lógicos Basados en Registros.- Operan sobre niveles conceptual y de visión. Sus características principales son que permiten una descripción más amplia de la implantación, pero no son capaces de especificar con claridad las limitantes de los datos.

21.Modelos Físicos de Datos.- Describen los datos en el nivel más bajo y permiten identificar algunos detalles de implantación para el manejo del hardware de almacenamiento.

CONCLUSIÒN.

La finalidad de este trabajo, es dar una inducción en el tema de Diseño de Bases de Datos, a personas ajenas al tema. De manera que por ello los temas se presentan de una manera sencilla y sin tanta terminología.

Nos muestra la gran importancia que para cualquier entidad, ya sea una empresa grande o chica, para el gobierno, hasta para la vida cotidiana de una persona (como se muestra en el ejemplo de los CD’s), tienen las bases de datos. Todo gira alrededor de ellas, todos los procesos del mundo están registrados en ellas, de ahí la importancia de llevar a cabo un diseño eficiente y libre de errores de las mismas.

Siempre que una persona escucha hablar de bases de datos y de toda la terminología que las acompaña piensa que es un tema excesivamente complicado,

y no es así, todo tiene un porque y lógica, es cosa de familiarizarse un poco con ellas (bases de datos).

Cuando se ven en realidad todas las ventajas que tienen, es mas sencillo el proceso de aprendizaje, ya que siente que el aprender a manejarlas se vera recompensado.

Además de los sencillas que son, es muy fácil acceder a información, manualesy cursos relacionados a ellas, todo esta a la mano, con la facilidad de poner este tema en un buscador de la red y aparecerán infinidad de temas, unos mas complejos que otros, pero siempre uno que se adecue a las capacidades de aprendizaje de cada persona.

Otro punto muy importante es que la mayoría son gratis.

REFERENCIAS

INTERNET.

1.- wwww3.uji.es/~mmarques/f47/apun/node68.html.

2.- ww.programacion.com/bbdd/articulo/bbdd_disenyo/

3.- .http://www.cindoc.csic.es/isis/03-1.htm

4.- http://faea.uncoma.edu.ar/materias/tdbd/

5.- http://www.itlp.edu.mx/publica/tutoriales/basedat2/

LIBROS:

1.- Introducción a las Bases de Datos:THOMSON PARANINFO, S.A. 2005

2.- Access: Los Mejores Trucos (Anaya Multimedia): Bluttman, Ken.

 

 

Guillermo de Jesús Saldivar Vargas                

          

ESCUELA: ITSON (Instituto Tecnológico de Sonora)

FECHA: 29/NOVIEMBRE/2005

TUTORIAL DE VISUAL BASIC

Fundamentos de programacionEscrito por Mauro Rondinelli el Miércoles 27 de Febrero de 2008 a las 13:54hs

Variables

Una variable es una ubicación temporal de memoria donde se almacenan datos que interesan retener durante la ejecución de la aplicación. Las variables pueden contener texto, valores numéricos, fechas o propiedades de cierto objeto. Es una forma de dar nombre a una porción de datos con la que deseamos trabajar en nuestro programa.

Las variables se caracterizan por un nombre que las identifica y por un tipo de datos, que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar. El valor de una variable puede cambiar a lo largo de la vidad de ésta.

Es necesario declarar las variables para poder utilizarlas en el programa. En Visual Basic no es obligatorio pero si recomendable. Al declarar una variable se reserva memoria para ella y se indica qué valores puede contener a través de su tipo de datos.

Para establecer la declaración de una variable antes de ser utilizada en el código, puedes hacerlo en la ficha entorno del cuadro de diálogo opciones. Al activar la casilla Declaración de las variables requerida, Visual Basic introduce la instrucción Option Explicit en la sección de declaraciones de cada módulo nuevo que se cree, no de los ya existentes donde tienes que introducirlos manualmente. Esta instrucción obliga a declarar las variables antes de utilizarlas, lo que es muy recomendable.

El uso de las variables puede hacer que la aplicación sea más rápida, por ejemplo, si usas muchas veces un determinado valor, es aconsejable guardarlo en una variable y utilizarla cuando se necesite que tener que volver a escribir código cada vez que quieras llamarla. Es más rápido el acceso a las variables que a una propiedad de un objeto, por lo que también es aconsejable guardar el valor de una propiedad en una variable.

Veamos un ejemplo:

Dim Variable Variable = txtEntrada.Text txtSalida.Text = Variable

La forma de declara una variable es a través de la instrucción Dim. En la línea se declara la variable de nombre Variable y al mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla. En la segunda línea ya se utiliza la variable. En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text). En la tercera línea se hace justo lo contrario, se utiliza la variable Variable para establecer el valor de la propiedad Text del cuado de texto txtSalida. Si añadimos las siguientes líneas de código:

Variable = 125 txtNumero.Text = Variable

Hemos establecido una variable de valor numérico. Sin embargo en las anteriores líneas se había establecido un valor de texto ya que la propiedad Text es de ese tipo de datos. En la última línea se vuelve a utilizar la variable como origen de la propiedad Text del cuadro de texto txtNúmero.

Tipo de datos

El tipo de datos de una variable establece el número de valores que ésta puede tener, así como el conjunto de operaciones en las que puede tomar parte como operando. En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder alamacenar los valores de dicho tipo de datos.

Es importante indicar el tipo de datos ya que no todos tienen la misma representación en memoria, ocupando distinto espacio físico.

Visual Basic de forma predeterminada, a no ser que se indique el tipo de datos, establece el tipo Variant para todas las variables. Así, al utilizar una instrucción como Dim NombreVarialbe, se especifica implícitamente el tipo Variant para dicha variable.

El tipo Variant es un tipo especial de datos que puede contener cualquier clase de datos excepto cadenas de longitud fija y tipos definidos por el usuario. Al utilizar variables de este tipo, no hay que preocuparse de efectuar conversiones entre tipos para utilizarlas en distintos contextos. Las variables de tipo Variant son muy flexibles, pero ocupan mucha memoria y disminución de la velocidad.

Vamos a ver los siguientes tipos de variables:

Tipo de datos Tamaño

Entero (Integer) 2 bytes

Entero Largo (Long) 4 bytes

Simple (Single) 4 bytes

Doble (Double) 8 bytes

Moneda (Currency) 8 bytes

Cadena de caracteres (String) 1 byte por caracter

Byte 1 byte

Boleano (Boolean) 2 bytes

Fecha (Date) 8 bytes

Objecto (Object) 4 bytes

Variant 16 bytes + 1 byte por cada carácter

Para declarar las variables debes de usar su nombre en inglés.

Constantes

Cuando un valor se repite frecuentemente es interesante guardarlo en una variable. Las constantes son semejantes a las variables, pero su valor no puede cambiar a lo largo de la aplicación. Para utilizar una constante hay que declararla previamente. La forma de declararla es a través de de la instrucción: Const NombreConstante = Expresión, donde la expresión será un valor literal o un conjunto de palabras que se evalúen a un valor válido.

Operadores

En Visual Basic existe un gran número de operadores que se pueden utilizar para crear fórmulas. Los operadores más utilizados en una aplicación de Visual Basic son los siguientes:

Operador Operación que realiza

+ Suma / Concatenación de cadenas de caracteres

- Resta

* Multiplicación

/ División

\ División entera

Mod Resto de la división entera

^ Exponencial

& Concatenación de cadena de caracteres

Programación estructuradaDe Wikipedia, la enciclopedia libre

Saltar a navegación, búsqueda

La programación estructurada es una forma de escribir programas de ordenador (programación de computadora) de manera clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN).

Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.

Contenido[ocultar]

1 Orígenes de la programación estructurada o 1.1 Estructura secuencial o 1.2 Estructura selectiva o de selección o 1.3 Estructura iterativa o 1.4 Anidamiento

2 Ventajas de la programación estructurada 3 Inconvenientes de la programación estructurada 4 Bibliografia 5 Véase también 6 Enlaces externos

[editar] Orígenes de la programación estructurada

A finales de los años 1960 surgió una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que además estaban escritos de manera que facilitaba su comprensión posterior.

El teorema del programa estructurado, demostrado 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.

Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, éstas pueden ser construidas mediante las tres básicas.

[editar] Estructura secuencial

Una estructura de programa es secuencial si se ejecutan una tras otra a modo de secuencia, es decir que una instrucción no se ejecuta hasta que finaliza la anterior.

Ejemplo:

INPUT x INPUT y auxiliar= x x= y y= auxiliar PRINT x PRINT y

Esta secuencia de instrucciones permuta los valores de x e y, con ayuda de una variable auxiliar, intermedia.

1º Se guarda una copia del valor de x en auxiliar. 2º Se guarda el valor de y en x, perdiendo su valor anterior, pero se mantiene una copia

del contenido en auxiliar. 3º Se copia a y el valor de auxiliar, que es el valor inicial de x.

El resultado es el intercambio de los valores entre x e y, en tres operaciones secuenciales.

[editar] Estructura selectiva o de selección

La estructura selectiva permite que la ejecución del programa se bifurque a una instrucción u otra según un criterio o condición lógica, solo una de estas instrucciones se ejecutará.

Ejemplo:

IF a > b THEN PRINT a ; " es mayor que " ; b ELSE PRINT a ; " no es mayor que " ; b END IF

La instrucción selectiva anterior puede presentar uno de dos mensajes: a es mayor que b o a no es mayor que b, según el resultado de la comparación entre a y b; si el resultado de a > b es verdadero, se presenta el primer mensaje, si es falso se exterioriza el segundo. Las palabras clave IF, THEN, ELSE, y END IF; constituyen la propia estructura de la instrucción condicional (palabra reservadas), proporcionada por el lenguaje, el usuario no debe utilizar sus nombres salvo para este fin. El caso ejemplo se ha codificado en BASIC.

IF señala el comienzo de la instrucción condicional, y se espera que después siga la condición de control de la instrucción.

THEN señala el fin de la condición, y después estará la instrucción a ejecutar si la condición es verdadera.

ELSE es opcional, le sigue la instrucción que se ejecutará si la condición es falsa. END IF indica el final de la estructura, seguidamente el programa seguirá su curso.

Ampliemos un poco el ejemplo anterior con estructuras anidadas:

IF a > b THEN PRINT a ; " es mayor que " ; b ELSEIF a < b THEN PRINT a ; " es menor que " ; b ELSE PRINT a ; " es igual que " ; b END IF

Este ejemplo permite considerar situaciones en las que se tiene más de dos alternativas. En este caso se ha considerado tres, pero hay situaciones en las que deben considerarse más casos y para ellos se puede repetir las veces que sea necesario la opcional ELSEIF.

[editar] Estructura iterativa

Un bucle iterativo o iteración de una secuencia de instrucciones, hace que se repitan mientras se cumpla una condición, en un principio el número de iteraciones no tiene porque estar determinado.

Ejemplo:

a= 0 b= 7 WHILE b > a DO PRINT a a= a + 1 WEND

Esta instrucción tiene tres palabras reservadas WHILE, DO y WEND.

WHILE: señala el comienzo del bucle y después de esta palabra se espera la condición de repetición, si la condición es cierta se pasa al cuerpo del bucle, si no al final de la instrucción mientras.

DO: señala el final de la condición, lo que esté después será el cuerpo del bucle. WEND: señala el final del cuerpo del bucle y de la instrucción WHILE.

El bucle mientras, se repite mientras la condición sea cierta, esta condición se comprueba al principio por lo que el cuerpo del bucle puede que no se ejecute nunca, cuando la condición es falsa en un principio, o que se repita tantas veces como sea necesario, mientras la condición sea cierta.

En el ejemplo tenemos dos variables a y b que al iniciarse el bucle tienen los valores a=0 y b=7.

La condición del bucle es b > a.

Cuando a=0 y b=7. la condición es cierta, en el cuerpo del bucle se escribe el valor de a en pantalla y se incrementa a en una unidad. Entonces a=1 y b=7.

...

...

Cuando a=6 y b=7. la condición es cierta, se escribe el valor de a en pantalla y se incrementa en una unidad.

Resultando que a=7 y b=7. Entonces la condición es falsa y la instrucción WHILE finaliza.

La salida por pantalla de este ejemplo seria 0 1 2 3 4 5 6

[editar] Anidamiento

El cuerpo de cualquier estructura puede ser una instrucción simple u otra estructura, que a su vez puede anidar a otra.

Ejemplo:

IF a > b THEN auxiliar= a a= b b= auxiliar ELSE REM nada END IF PRINT a ; b

[editar] Ventajas de la programación estructurada

1. Los programas son más fáciles de entender, ya que pueden ser leídos de forma secuencial, sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de los bloques de código para entender la lógica.

2. La estructura del programa es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí.

3. Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa ("debugging") se facilita debido a la estructura más visible, por lo que los errores se pueden detectar y corregir más fácilmente.

4. Reducción de los costos de mantenimiento de los programas.

5. Programas más sencillos y más rápidos (ya que es más fácil su optimización).

6. Los bloques de código son auto explicativos, lo que facilita la documentación.

7. Los GOTO se reservan para construir las instrucciones básicas. Aunque no se usan de forma directa, por estar prohibida su utilización, están incluidas implícitamente en las instrucciones de selección e iteración.

8. Un programa escrito de acuerdo a estos principios no solamente tendrá una mejor estructura sino también una excelente presentación.

La programación estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el desarrollo de programas es, principalmente, una tarea de dedicación, esfuerzo y creatividad.

[editar] Inconvenientes de la programación estructurada

El principal inconveniente de este método de programación es que se obtiene un único bloque de programa, que cuando se hace demasiado grande puede resultar problemático su manejo; esto se resuelve empleando la programación modular, definiendo módulos interdependientes programados y compilados por separado (en realidad esto no es necesario, pero es recomendable para su mantenimiento y funcionalidad).

En realidad, cuando se programa hoy en día (inicios del siglo XXI) se suelen utilizar, tanto las técnicas de programación estructurada como las de programación modular, de forma conjunta y por lo tanto es posible que cuando uno haga referencia a la programación estructurada esté considerando también las técnicas de modularización.

Un método un poco más sofisticado es la programación por capas, en la que los módulos tienen una estructura jerárquica en la que se pueden definir funciones dentro de funciones o de procedimientos

http://es.wikipedia.org/wiki/Programaci%C3%B3n_estructurada

Programación orientada a objetosDe Wikipedia, la enciclopedia libre

Saltar a navegación, búsqueda

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.

Contenido[ocultar]

1 Introducción 2 Origen 3 Conceptos fundamentales 4 Características de la POO 5 Resumen 6 Lenguajes orientados a objetos 7 Enlaces externos

[editar] Introducción

Los objetos son entidades que combinan estado (atributo), comportamiento (método) e identidad:

El estado está compuesto de datos, será uno o varios atributos a los que se habrán asignado unos valores concretos (datos).

El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto, es decir, qué operaciones se pueden realizar con él.

La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).

Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento.

Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos. Hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos.

La POO difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o

funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programación estructurada sólo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.

[editar] Origen

Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo. En este centro, se trabajaba en simulaciones de naves, que fueron confundidas por la explosión combinatoria de cómo las diversas cualidades de diferentes naves podían afectar unas a las otras. La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamientos. Fueron refinados más tarde en Smalltalk, que fue desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita sobre Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar "en marcha" (en tiempo de ejecución) en lugar de tener un sistema basado en programas estáticos.

La programación orientada a objetos tomó posición como el estilo de programación dominante a mediados de los años ochenta, en gran parte debido a la influencia de C++, una extensión del lenguaje de programación C. Su dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario, para las cuales la programación orientada a objetos está particularmente bien adaptada. En este caso, se habla también de programación dirigida por eventos.

Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, entre otros. La adición de estas características a los lenguajes que no fueron diseñados inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de mantenimiento del código. Los lenguajes orientados a objetos "puros", por su parte, carecían de las características de las cuales muchos programadores habían venido a depender. Para saltar este obstáculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en métodos orientados a objetos, pero permitiendo algunas características imperativas de maneras "seguras". El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparición de Internet, y a la implementación de la máquina virtual de Java en la mayoría de navegadores. PHP en su versión 5 se ha modificado, soporta una orientación completa a objetos, cumpliendo todas las características propias de la orientación a objetos.

[editar] Conceptos fundamentales

La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:

Clase : definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

Herencia : (por ejemplo, herencia de la clase C a la clase D) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables publicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de OOP.

Objeto : entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.

Método : Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

Evento: Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.

Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

Estado interno: es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.

Componentes de un objeto: atributos, identidad, relaciones y métodos. Identificación de un objeto: un objeto se representa por medio de una tabla o entidad

que esté compuesta por sus atributos y funciones correspondientes.

En comparación con un lenguaje imperativo, una "variable", no es más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función" es un procedimiento interno del método del objeto.

[editar] Características de la POO

Existe un acuerdo acerca de qué características contempla la "orientación a objetos", las características siguientes son las más importantes:

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 son 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 a 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 pueden cambiar el estado interno de un objeto de maneras inesperadas, 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 manualmente.

[editar] Resumen

La programación orientada a objetos es un paradigma que utiliza objetos como elementos fundamentales en la construcción de la solución. Surge en los años 70. Un objeto es una abstracción de algún hecho o ente del mundo real que tiene atributos que representan sus características o propiedades y métodos que representan su comportamiento o acciones que realizan. Todas las propiedades y métodos comunes a los objetos se encapsulan o se agrupan en clases. Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los objetos son instancias de clases.

[editar] Lenguajes orientados a objetos

Simula (1967) es aceptado como el primer lenguaje que posee las características principales de un lenguaje orientado a objetos. Fue creado para hacer programas de simulación, en donde los "objetos" son la representación de la información más importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo canónico, y con el que gran parte de la teoría de la programación orientada a objetos se ha desarrollado.

Entre los lenguajes orientados a objetos se destacan los siguientes:

ABAP ABL Lenguaje de programación de OpenEdge de Progress Software ActionScript ActionScript 3 Ada C++ C# Clarion Clipper (lenguaje de programación) (Versión 5.x con librería de objetos Class(y)) D Object Pascal (Delphi) Gambas Harbour Eiffel

Java JavaScript (la herencia se realiza por medio de la programación basada en prototipos) Lexico (en castellano) Objective-C Ocaml Oz R Perl (soporta herencia múltiple. La resolución se realiza en preorden, pero puede

modificarse al algoritmo linearization C3 por medio del módulo Class::C3 en CPAN) PHP (a partir de su versión 5) PowerBuilder Python Ruby Smalltalk (Proyecto investigativo. Influenció a Java.) Magik (SmallWorld) Vala VB.NET Visual FoxPro (en su versión 6) Visual Basic 6.0 Visual Objects XBase++ Lenguaje DRP Lenguaje de programación Scala (lenguaje usado por Twitter)

http://www.scala-lang.org/page.jsp

Muchos de estos lenguajes de programación no son puramente orientados a objetos, sino que son híbridos que combinan la POO con otros paradigmas.

Al igual que C++ otros lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object REXX, han sido creados añadiendo extensiones orientadas a objetos a un lenguaje de programación clásico.

Un nuevo paso en la abstracción de paradigmas de programación es la Programación Orientada a Aspectos (POA). Aunque es todavía una metodología en estado de maduración, cada vez atrae a más investigadores e incluso proyectos comerciales en todo el mundo.

Programación EstructuradaEnviado por Henry Sandino Cabrera Alvarado

Anuncios Google:

Diplomado en administracionUniv Nacional de Florida ofrece Web Clases, Títulos online de Negocios | www.FNC.edu

Free Website TemplatesDesign Your Own Free Website Flash, Drag & Drop, Easy, Unique | www.Wix.com/Free-Website-Builder

diseño de paginas web¿Buscas diseño de paginas web? Consigue Mejores Resultados con ASK | www.Ask.com

INTRODUCCION

La computadora automática debe su derecho a existir, su utilidad, precisamente a su capacidad de efectuar vastos cálculos que no pueden realizar los seres humanos. Deseamos que la computadoraefectúe lo que nunca podríamos hacer nosotros, y la potencia de las maquinas actuales es tal, que inclusive los cálculos pequeños, por su tamaño, escapan al poder de nuestra imaginación limitada.

Sin embargo debemos organizar el calculo de manera tal que nuestros limitados poderes sean suficientes para asegurar que se establecerá el efecto deseado. Esta organización incluye la composición de los programas.

Los avances en la tecnologíasiempre van parejos con progresos en los lenguajes de programación y con nuevas ayudas para simplificar el uso del computador, con lo cual un numero mayor de usuarios se beneficia del. Pero la necesidad de hacer programas para resolver problemas específicos quizás nunca desaparecerá.

CONCEPTO DE PROGRAMACION ESTRUCTURADA

EL creciente empleode los computadores ha conducido a buscar un abaratamiento del desarrollo des software, paralelo a la reducción del costo del hardware obtenido gracias a los avances tecnológicos. Los altos costos del mantenimientode las aplicaciones en producciónnormal también han urgido la necesidad de mejorar la productividad del personal de programación.

En la década del sesenta salieron a la luz publica los principiosde lo que más tarde se llamo Programación Estructurada, posteriormente se libero el conjunto de las llamadas " Técnicas para mejoramiento de la productividad en programación" (en ingles Improved Programming Technologies, abreviado IPTs), siendo la Programación Estructurada una de ellas.

Los programas computarizados pueden ser escritos con un alto grado de estructuración, lo cual les permite ser mas fácilmente comprensibles en actividades tales como pruebas, mantenimiento y modificación de los mismos. Mediante la programación Estructurada todas las bifurcaciones de control de un programa se encuentran estandarizadas, de forma tal que es posible leer la codificación del mismo desde su inicio hasta su terminación en forma continua, sin tener que saltar de un lugar a otro del programa siguiendo el rastro de la lógicaestablecida por el programador, como es la situación habitual con codificaciones desarrolladas bajo otras técnicas.

EN programación Estructurada los programadores deben profundizar mas que lo usual al procederá realizar el diseñooriginal del programa, pero el resultado final es más fácil de leer y comprender, el objetivo de u programador profesional al escribir programas de una manera estructurada, es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados.

EL resultado de aplicar la sistemática y disciplinada manera de elaboración de programas establecida por la Programación Estructurada es una programación de alta precisión como nunca antes había sido lograda. Las pruebas de los

programas, desarrollados utilizando este método, se acoplan mas rápidamente y el resultado final con programas que pueden ser leídos, mantenidos y modificados por otros programadores con mucho mayor facilidad.

DEFINICIONES

Programación Estructurada es una técnica en la cual la estructurade un programa, esto es, la interpelación de sus partes realiza tan claramente como es posible mediante el uso de tres estructuras lógicas de control:

a. Secuencia: Sucesión simple de dos o mas operaciones.b. Selección: bifurcación condicional de una o mas operaciones.c. Interacción: Repetición de una operación mientras se cumple una condición.

Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir programas que manejen cualquier tarea de procesamiento de información.

Un programa estructurado esta compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una pagina o más de codificación. Cada segmento tiene solamente una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamas se ejecuten, se denominan programas propios. Cuando varios programas propios se combinan utilizando las tres estructuras básicas de control mencionadas anteriormente, el resultado es también un programa propio.

La programación Estructurada esta basada en el Teorema de la Estructura, el cual establece que cualquier programa propio (un programa con una entrada y una salida exclusivamente) es equivalente a un programa que contiene solamente las estructuras lógicas mencionadas anteriormente.

Una característica importante en un programa estructurado es que puede ser leído en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programación. Esto es importante debido a que, es mucho más fácil comprender completamente el trabajo que realiza una función determinada, si todas las instrucciones que influyen en su acción están físicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control y de eliminar la instrucción de desvío de flujo de control, excepto en circunstancias muy especiales tales como la simulaciónde una estructura lógica de control en un lenguaje de programación que no la posea.

VENTAJAS POTENCIALES

Un programa escrito de acuerdo a estos principios no solamente tendrá una estructura, sino también una excelente presentación.

Un programa escrito de esta forma tiende a ser mucho más fácil de comprender que programas escritos en otros estilos.

La facilidad de comprensión del contenido de un programa puede facilitar el chequeo de la codificación y reducir el tiempode prueba y depuración de

programas. Esto ultimo es cierto parcialmente, debido a que la programación estructurada concentra los errores en uno de los factores más generador de fallas en programación: la lógica.

Un programa que es fácil para leer y el cual esta compuesto de segmentos bien definidos tiende a ser simple, rápido y menos expuesto a mantenimiento. Estos beneficios derivan en parte del hecho que, aunque el programa tenga una extensión significativa, en documentación tiende siempre a estar al día, esto no suele suceder con los métodos convencionales de programación.

La programación estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el desarrollo de programas es, principalmente, una tarea de dedicación, esfuerzo y creatividad.

TEOREMA DE LA ESTRUCTURA

El teorema de la estructura establece que un programa propio puede ser escrito utilizando solamente las siguientes estructuras lógicas de control: secuencia, selección e iteración.

Un programa de define como propio si cumple con los dos requerimientos siguientes:

a. Tiene exactamente una entrada y una salida para control del programa.b. Existen caminos seguibles desde la entrada hasta la salida que conducen por

cada parte del programa, es decir, no existen lazos infinitos ni instrucciones que no se ejecutan.

Las tres estructuras lógicas de control básicas, se definen de la siguiente forma:

Secuencia: es simplemente la formalización de la idea de que las instrucciones de un programa son ejecutadas en el mismo orden en que ellas aparecen en el programa. En términos de diagrama de flujo la secuencia es representada por una función después de la otra, como se muestra a continuación.

A y B pueden ser instrucciones sencillas hasta módulos completos, lo importante es que sean programas propios, independientemente de su tamaño o complejidad interna. Ay B deben ser programas propios en el sentido en que estos fueron definidos, es decir, que posean solamente una entrada y una salida; la combinación de A seguida por B es también un programa propio, ya que esta unión tiene una entrada y una salida exclusivamente, esto se muestra gráficamente en la figura siguiente:

Donde la caja externa sugiere que la combinación de A seguida de puede ser tratada como una unidad para propósitos de control.

Selección: Es la escogencia entre dos acciones tomando la decisión en base al resultado de evaluar un predicado. Esta estructura de control es denominada usualmente IFTHENELSE. La representación en forma de diagrama de flujo de esta estructura lógica de control se muestra a continuación:

F

Donde P es predicado y A y B son las dos funciones.

Iteración: Esta estructura lógica es utilizada para que se repita la ejecución de un conjunto de instrucciones mientras se cumpla una condición o predicado. Generalmente a esta estructura se le conoce como DOWHILE (hacer mientras) y su representación se muestra a continuación:

V

F

donde P es predicado y A es el modulo controlado.

Se debe comprender claramente que un rectángulo, que representa un modulo en un diagrama, siempre puede ser sustituido por cualquiera de las tres estructuras de control descritas anteriormente; por ejemplo, veamos el diagrama siguiente:

En él, la línea punteada limita un rectángulo que contiene una estructura, que a su vez controla dos módulos X y Y. La estructura limitada por la línea punteada es sustituida por una función quedando de la siguiente forma:

V

F

es decir, una función sustituye a una estructura lógica de control o viceversa.

OTRAS ESTRUCTURAS LOGICAS DE CONTROL

Aunque todos los programas pueden ser escritos utilizando solamente las tres estructuras de control descritas anteriormente, es algunas veces, conveniente utilizar algunas estructuras adicionales; a continuación se hará una descripción de esas formas lógicas de control diferentes a las ya definidas:

El Dountil:La estructuras de iteración básica es el DOWHILE, pero existe una estructura que es muy parecida a ella y que aveces es usada, dependiendo del proceso que se este tratando de representar y de las características apropiadas en el lenguaje con el cual se esta trabajando, esta forma de control es la que se llama DOUNTIL, cuya representación gráfica en forma de diagrama de flujo se muestra a continuación:

V

Donde A es el modulo controlado y P el predicado.

La diferencia entre el DOWHILE y el DOUNTIL es que en el primero el predicado es probado antes de ejecutar la función, si el predicado es falso la función no es ejecutada; mientras que en el segundo, el predicado es probado después de ejecutar la función, o sea, que la función siempre será ejecutada al menos una vez, independientemente si el predicado es cierto o falso.

La estructura CASE:Algunas veces resulta de gran ayuda, desde el punto de vista de eficiencias y facilidad de lectura de un programa, tener alguna forma de expresar una desviación del flujo de control hacia múltiples procesos en función del resultado de la evaluación de un predicado; usualmente, a la estructura de control que satisface el requerimiento anterior, se le denomina la estructura CASE. Por ejemplo, si es necesario ejecutar una de cien rutinas diferentes en

función del valor de un código de 2 dígitos, podemos representar este proceso mediante 100 estructuras IF, sin embargo el sentido común nos induce a pensar que no hay razón para adherirnos rígidamente a las tres estructuras básicas de control y en lugar de 100 IF usaríamos la estructura CASE.

Esta estructura utiliza el valor de una variable para determinar cual, de varias rutinas, será ejecutada. La representación gráfica de esta estructura de control se muestra a continuación:

En cada lenguaje será necesario establecer cuales son las instrucciones que, en forma conveniente y eficiente, realizan funciones establecidas por las diferentes estructuras lógicas de control.

ETIQUETAS E INSTRUCCIÓN GOTO:

Ocasionalmente se habla de la programación estructurada como una técnica de programación que no utiliza GOTO(instrucción de desvío del flujo de control en forma incondicional); si bien es cierto que un programa bien estructurado tiene, o bien ninguna o muy pocas instrucciones GOTO, asumiendo que estamos empleando un lenguaje de programación adecuado, la ausencia de instrucciones GOTO puede ser mal interpretada. Es conveniente que aclaremos este aspecto en este momento.

Un programa bien estructurado gana una parte importante de su fácil comprensión del hecho que puede ser leído en forma secuencial sin desvíos en el flujo de control desde una parte del programa a otra. Esta característica es consecuencia de usar exclusivamente las estructuras lógicas de control estándar (el GOTO no es una de ellas), esta secuencialidad o lectura TOPDOWN es beneficiosa debido a que hay un limite definido para muchos detalles que la mente humana puede abarcar de una vez. Se hace relativamente fácil y rápida la comprensión de la tarea que realiza una instrucción si su función puede ser entendida en términos de unas pocas instrucciones mas, físicamente contiguas y delimitadas.

El problema con la instrucción GOTO es que generalmente aleja al programa realizado de los propósitos descritos y en casos extremos puede hacer que un programa sea esencialmente incomprensible.

No se requieren esfuerzos especiales para eliminar de un programa los GOTO, los cuales han sido, algunas veces, malentendidos como enemigos de la programación estructurada, existen buenas y fundadas razones para no querer usarlos pero no se necesita que se realice un trabajo arduo para eliminarlo; ellos no aparecerán, en general, cuando se utilicen las estructuras lógicas de control, descritas anteriormente. Naturalmente, si escogemos para programar un lenguaje de computación que no posea las estructuras lógicas de control fundamentales, entonces, tendremos que simularlas y seguramente ello implicara el uso de la instrucción GOTO; pero este uso puede hacerse en forma cuidadosamente controlada.

Existen situaciones poco comunes en las cuales el uso de GOTO puede tener ventajas comparado con otras maneras de expresar un proceso; estos casos son excepcionales y usualmente no ocurren en la programación realizada diariamente.

Se deben analizar cuidadosamente las consecuencias de emplear el GOTO, antes de su uso.

SEGMENTACION

Para la comprensión de un programa se haga en forma fácil y rápida es necesario que, al revisarlo, uno no tenga que hojear una gran cantidad de paginas para entender cuales el trabajo que realiza. Una regla practica para lograr estos fines es establecer que cada segmento del programa no exceda, en longitud, a una pagina de codificación, o sea, alrededor de 50 líneas (el significado que se asigna al termino segmento, en este trabajo, no tiene ninguna relación con su significado en relación a las funciones de sistemas operativos o sistemas maneadores de Bases de Datos).

La segmentación no es solamente particionar un programa en trozos cuya longitud sea de unas 50 líneas; esta técnica debe cumplir con ciertas características fundamentales:

a. La segmentación reflejara la división del programa en partes que se relacionen entre sí en forma jerárquica, formando una estructura de árbol. Esta organización puede ser representada gráficamente por un diagrama de procesos, lo que hace más sencillo comprender la relación existente entre un segmento y el resto del programa. Adicionalmente, podemos indicar que, el segmento en la cumbre de la estructura jerárquica contendrá las funciones de control de mas alto nivel, mientras que los segmentos inferiores en esta organización contendrán funciones detalladas.

b. Una segmentación bien diseñada deberá mostrar, claramente, las relaciones existentes entre las distintas funciones de manera que sea fácil comprender lo que debe hacer el programa y asegurar que efectivamente lo realice. Este hecho, garantizara que los cambios que se efectúen a una parte del programa, durante la programación original o su mantenimiento, no afecten al resto del programa que no ha sufrido cambios.

c. En una segmentación bien realizada la comunicaciónentre segmentos se lleva a cabo de una manera cuidadosamente controlada. Algunos autores recomiendan que los segmentos consistan en procedimientosy la única comunicación existente entre ellos sea a través de una lista de parámetros, esto reduce la oportunidad de que interactuen entre ellos de una manera indeseada e inentendible.

IDENTACION

El uso de la identacion es importante debido a que, cuando se es consistente en su utilización, facilita la lectura del programa al mostrar en una forma gráfica las relaciones existentes entre las distintas instrucciones.

La identacion puede ser de gran beneficio, tal como se muestra continuación, donde ambos programas realizan la misma función, pero el de la derecha es más fácil de comprender, verificar y corregir.

DIRECTRICES PAR IDENTAR

Debe comprenderse claramente que las líneas siguientes solo pretenden presentar unas directrices de identacion, sin pretender que estas sean las únicas reglas a seguir en este proceso, cada centro de procesamiento deberá establecer sus propias convenciones, sin que sea motivo de preocupación la diferencia respecto a las sugerencias dadas aquí, lo importante es que se establezcan unas normas y se cumplan de manera consistente.

Las siguientes son sugerencias para el desarrollo de una política de identacion en un centro de procesamiento, la idea fundamental es ayudar a que el lector de un programa le sea fácil comprender las relaciones y las funciones existentes en él:

a. En los lenguajes donde se permite el uso de etiquetas, estas deben colocarse lo más externas posibles, por ejemplo comenzando en la columna 2, y deben estar separadas por una línea (siempre que lo permita el lenguaje en uso).

b. Se obtiene consistencia si todas las instrucciones se comienzan en una misma columna, por ejemplo en la columna 4 o cualquier otra ubicada a su derecha.

c. En los lenguajes en que se hagan declaraciones sobre las variables a utilizar, la información quedara mas claramente representada si los atributos declarados se alinean en forma vertical.

d. El uso de lineas en blanco ayuda a mostrar con mas claridad las relaciones existentes entre distintos ítems agrupados en las declaraciones

e. Las instrucciones son mucho mas fáciles de localizar y de cambiar si no se escribe mas de una instrucción por línea.

f. La vision de control de las estructuras lógicas o de los bloques se clarifica si las instrucciones controladas son idénticas por alguna cantidad constante. Se sugiere una identacion de tres espacios.

VENTAJAS DE LA PROGRAMACION ESTRUCTURADA

Con la programación estructurada elaborar programas de computador sigue siendo un albor que demandaesfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este nuevo estilo podemos obtener las siguientes ventajas:

1. - Los programas son más fáciles de entender. Un programa estructurado puede ser leído en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lógica, lo cual es típico de otros estilos de programación. La estructura del programa es mas clara puesto que las instrucciones están mas ligadas o relacionadas entre sí, por lo que es más fácil comprender lo que hace cada función.

2. Reducción del esfuerzo en las pruebas. El programa se puede tener listo para producción normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas("debugging") se facilita debido a la lógica más visible, de tal forma que los errores se pueden detectar y corregir mas fácilmente.

3. Reducción de los costos de mantenimiento.4. Programas más sencillos y más rápidos5. Aumento de la productividad del programador6. Se facilita la utilización de las otras técnicas para el mejoramiento de la

productividad en programación

7. Los programas quedan mejor documentados internamente.

CONCLUSIÓN

El presente glosariofue desarrollado con el propósito de que sirviera de apoyo a los estudiantes del área de la computación y de otras áreas que utilicen la computación e informática como herramienta.

BIBLIOGRAFIA

SANDERS, Donal H.,&uml; Informática presente y futuro ¨

Editorial McGraw Hill, México.

LOZANO, Letvin R., ¨ Diagramación y programación ¨

Editorial McGraw Hill, México.

NORTON, Peter., ¨ Introducción a la computación ¨

Editorial McGraw Hill, México.

FREEDMAN, Alan., ¨ Diccionario de computación ¨

Editorial McGraw Hill, Quinta edición,

México.

 

http://www.monografias.com/trabajos/progestructu/progestructu.shtml

Programación Orientada a ObjetosEnviado por latiniando

Anuncios Google:

Programación¿Buscas Programación? Consigue Mejores Resultados con ASK | Programacion.Ask.com

Estudia Cursos En LíneaProgramas Universitarios Online Desde Cualquier Parte del Mundo. | www.UNAD.us/Cursos-Por-Internet

Ford Fiesta con 40 MPGMejor eficiencia en su clase, te da hasta 40 MPG en carretera. | www.fordenespanol.com/Fiesta

Sistemas de Procesamiento de Datos

  

INTRODUCCION

Actualmente una de las áreas más candentes en la industria y en el ámbito académico es la orientación a objetos. La orientación a objetos promete mejoras de amplio alcance en la forma de diseño, desarrollo y mantenimiento del software ofreciendo una solución a largo plazo a los problemas y preocupaciones que han

existido desde el comienzo en el desarrollo de software: la falta de portabilidad del códigoy reusabilidad, código que es dificil de modificar, ciclos de desarrollo largos y tecnicas de codificacion no intuituvas.

Un lenguajeorientado a objetos ataca estos problemas. Tiene tres características basicas: debe estar basado en objetos, basado en clases y capaz de tener herencia de clases. Muchos lenguajes cumplen uno o dos de estos puntos; muchos menos cumplen los tres. La barrera más difícil de sortear es usualmente la herencia.

El concepto de programaciónorientada a objetos (OOP) no es nuevo, lenguajes clásicos como SmallTalk se basan en ella. Dado que la OOP. se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolución del problema se realiza en términos de objetos, un lenguaje se dice que está basado en objetos si soporta objetos como una característica fundamental del mismo.

El elemento fundamental de la OOP es, como su nombre lo indica, el objeto . Podemos definir un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.

Esta definición especifica varias propiedades importantes de los objetos. En primer lugar, un objeto no es un dato simple, sino que contiene en su interior cierto número de componentes bién estructurados. En segundo lugar, cada objeto no es un ente aislado, sino que forma parte de una organización jerárquica o de otro tipo.

ESTRUCTURA DE UN OBJETO

Un objeto puede considerarse como una especie de cápsula dividida en tres partes:

1 - RELACIONES

2 - PROPIEDADES

3 - METODOS

Cada uno de estos componentes desempeña un papel totalmente independiente:

Las relaciones permiten que el objeto se insterte en la organización y están formadas esencialmente por punteros a otros objetos.

Las propiedades distinguen un objeto determinado de los restantes que forman parte de la misma organización y tiene valores que dependen de la propiedadde que se trate. Las propiedades de un objeto pueden ser heredadas a sus descendientes en la organización.

Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán incorporados en forma de programas (código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la herencia.

Encapsulamiento y ocultación

Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos ellos relacionados entre sí, como si estuvieran

encerrados conjuntamente en una cápsula. Esta propiedad ( encapsulamiento), es una de las características fundamentales en la OOP.

Los objetos son inaccesibles, e impiden que otros objetos, los usuarios, o incluso los programadores conozcan cómo está distribuída la información o qué información hay disponible. Esta propiedad de los objetos se denomina ocultación de la información.

Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario respecto a un objeto y a lo que contiene. Si así fuera no se podría hacer gran cosa con él. Lo que sucede es que las peticiones de información a un objeto. deben realizarse a través de mensajesdirigidos a él, con la orden de realizar la operación pertinente. La respuesta a estas ordenes será la información requerida, siempre que el objeto considere que quien envía el mensaje está autorizado para obtenerla.

El hecho de que cada objeto sea una cápsula facilita enormemente que un objeto determinado pueda ser transportado a otro punto de la organización, o incluso a otra organización totalmente diferente que precise de él. Si el objeto ha sido bien construído, sus métodos seguirán funcionando en el nuevo entorno sin problemas. Esta cualidad hace que la OOP sea muy apta para la reutilización de programas.

Organización de los objetos

En principio, los objetos forman siempre una organización jerárquica, en el sentido de que ciertos objetos son superiores a otros de cierto modo.

Existen varios tipos tipos de jerarquías: serán simplescuando su estructura pueda ser representada por medio de un "arbol". En otros casos puede ser más compleja.

En cualquier caso, sea la estructura simple o compleja, podrán distinguirse en ella tres niveles de objetos.

-La raíz de la jerarquía.Se trata de un objeto único y especial. Este se caracteríza por estar en el nivel más alto de la estructura y suele recibir un nombre muy genérico, que indica su categoría especial, como por ejemplo objeto madre, Raíz o Entidad.

-Los objetos intermedios. Son aquellos que descienden directamente de la raíz y que a su vez tienen descendientes. Representan conjuntos o clasesde objetos, que pueden ser muy generales o muy especializados, según la aplicación. Normalmente reciben nombres genéricos que denotan al conjunto de objetos que representan, por ejemplo, VENTANA, CUENTA, FICHERO. En un conjunto reciben el nombre de clases o tipos si descienden de otra clase o subclase.

-Los objetos terminales. Son todos aquellos que descienden de una clase o subclase y no tienen descendientes. Suelen llamarse casos particulares, instancias o ítems porque representan los elementos del conjunto representado por la clase o subclase a la que pertenecen.

Veamos ahora en detalle los tres elementos mencionados en "Estructura de un Objeto".

1. RELACIONES

Las relaciones entre objetos son, precisamente, los enlaces que permiten a un objeto relacionarse con aquellos que forman parte de la misma organización.

Las hay de dos tipos fundamentales:

-Relaciones jerárquicas. Son esenciales para la existencia misma de la aplicación porque la construyen. Son bidireccionales, es decir, un objeto es padre de otro cuando el primer objeto se encuentra situado inmediatamente encima del segundo en la organización en la que ambos forman parte; asimismo, si un objeto es padre de otro, el segundo es hijo del primero (en la fig. 2, B es padre de D,E y F, es decir, D,E y F son hijos de B; en la fig. 3, los objetos B y C son padres de F, que a su vez es hijo de ambos).

Una organización jerárquica simple puede definirse como aquella en la que un objeto puede tener un solo padre, mientras que en una organizacion jerárquica compleja un hijo puede tener varios padres).

-Relaciones semánticas. Se refieren a las relaciones que no tienen nada que ver con la organización de la que forman parte los objetos que las establecen. Sus propiedades y consecuencia solo dependen de los objetos en sí mismos (de su significado) y no de su posición en la organización.

Se puede ver mejor con un ejemplo: supongamos que vamos a construir un diccionarioinformatizado que permita al usuario obtener la definición de una palabra cualquiera. Supongamos que, en dicho diccionario, las palabras son objetos y que la organización jerárquica es la que proviene de forma natural de la estructura de nuestros conocimientos sobre el mundo.

La raíz del diccionario podría llamarse TEMAS. De éste término genérico descenderán tres grandes ramas de objetos llamadas VIDA, MUNDO y HOMBRE. El primero (vida) comprenderá las ciencias biológicas: Biología y Medicina. El segundo (mundo), las ciencias de la naturaleza inerte: las Matemáticas, la Física, la Química y la Geología. El tercero (hombre) comprenderá las ciencias humanas: la Geografía, la Historia, etc.

Veamos un ejemplo: estableceremos la relación trabajo entre los objetos NEWTON y OPTICA y la interpretaremos diciendo que significa que Newton trabajó en óptica (véase la fig. 4). La relación es, evidentemente, semántica, pués no establece ninguna connotación jerárquica entre NEWTON y OPTICA y su interpretación depende exclusivamente del significado de ambos objetos.

La existencia de esta relación nos permitirá responder a preguntas como:

¿Quién trabajó en óptica?

¿En qué trabajó Newton?

¿Quien trabajó en Física?

Las dos primeras se deducen inmediatamente de la existencia de la relación trabajo. Para la tercera observamos que si Newton trabajó en óptica automáticamente sabemos que trabajó en Física, por ser óptica una rama de la

Física (en nuestro diccionario, el objeto OPTICA es hijo del objeto FISICA). Entonces gracias a la OOP podemos responder a la tercera pregunta sin necesidad de establecer una relación entre NEWTON y FISICA, apoyandonos sólo en la relación definida entre NEWTON y OPTICA y en que OPTICA es hijo de FISICA. De este modo se elimina toda redundancia innecesaria y la cantidad de información que tendremos que definir para todo el diccionario será mínima.

2. PROPIEDADES

Todo objeto puede tener cierto número de propiedades, cada una de las cuales tendrá, a su vez, uno o varios valores. En OOP, las propiedades corresponden a las clásicas "variables" de la programación estructurada. Son, por lo tanto, datos encapsulados dentro del objeto, junto con los métodos (programas) y las relaciones (punteros a otros objetos). Las propiedades de un objeto pueden tener un valor único o pueden contener un conjunto de valores mas o menos estructurados (matrices, vectores, listas, etc.). Además, los valores pueden ser de cualquier tipo (numérico, alfabético, etc.) si el sistema de programación lo permite.

Pero existe una diferencia con las "variables", y es que las propiedades se pueden heredar de unos objetos a otros. En consecuencia, un objeto puede tener una propiedad de maneras diferentes:

-Propiedades propias. Están formadas dentro de la cápsula del objeto.

-Propiedades heredadas. Estan definidas en un objeto diferente, antepasado de éste (padre,"abuelo", etc.). A veces estas propiedades se llaman propiedades miembroporque el objeto las posee por el mero hecho de ser miembro de una clase.

3. METODOS

Una operación que realiza acceso a los datos. Podemos definir método como un programa procedimental o procedural escrito en cualquier lenguaje, que está asociado a un objeto determinado y cuya ejecución sólo puede desencadenarse a través de un mensaje recibido por éste o por sus descendientes.

Son sinónimos de 'método' todos aquellos términos que se han aplicado tradicionalmente a los programas, como procedimiento, función, rutina, etc. Sin embargo, es conveniente utilizar el término 'método' para que se distingan claramente las propiedades especiales que adquiere un programa en el entorno OOP, que afectan fundamentalmente a la forma de invocarlo (únicamente a través de un mensaje) y a su campo de acción, limitado a un objeto y a sus descendientes, aunque posiblemente no a todos.

Si los métodos son programas, se deduce que podrían tener argumentos, o parámetros. Puesto que los métodos pueden heredarse de unos objetos a otros, un objeto puede disponer de un método de dos maneras diferentes:

-Métodos propios. Están incluídos dentro de la cápsula del objeto.

-Métodos heredados. Estan definidos en un objeto diferente, antepasado de éste (padre,"abuelo", etc.). A veces estos métodos se llaman métodos miembro porque el objeto los posee por el mero hecho de ser miembro de una clase.

Polimorfísmo

Una de las características fundamentales de la OOP es el polimorfísmo, que no es otra cosa que la posibilidad de construir varios métodos con el mismo nombre, pero con relación a la clase a la que pertenece cada uno, con comportamientos diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de clases diferentes. Estos objetos recibirían el mismo mensaje global pero responderían a él de formas diferentes; por ejemplo, un mensaje "+" a un objeto ENTERO significaría suma, mientras que para un objeto STRING significaría concatenación ("pegar" strings uno seguido al otro)

Demonios

Es un tipo especial de métodos, relativamente poco frecuente en los sistemasde OOP, que se activa automáticamente cuando sucede algo especial. Es decir, es un programa, como los métodos ordinarios, pero se diferencia de estos porque su ejecución no se activa con un mensaje, sino que se desencadena autmáticamente cuando ocurre un suceso determinado: la asignación de un valor a una propiedad de un objeto, la lectura de un valor determinado, etc.

Los demonios, cuando existen, se diferencian de otros métodos por que no son heredables y porque a veces están ligados a una de las propiedades de un objeto, mas que al objeto entero.

CONSIDERACIONES FINALES

Beneficios que se obtienen del desarrollo con OOP

Día a día los costos del Hardware decrecen. Así surgen nuevas áreas de aplicación cotidianamente: procesamiento de imágenes y sonido, bases de datos multimediales, automatización de oficinas, ambientes de ingenieríade software, etc. Aún en las aplicaciones tradicionales encontramos que definir interfases hombre-máquina "a-la-Windows" suele ser bastante conveniente.

Lamentablemente, los costos de producción de software siguen aumentando; el mantenimiento y la modificación de sistemas complejos suele ser una tarea trabajosa; cada aplicación, (aunque tenga aspectos similares a otra) suele encararse como un proyecto nuevo, etc.

Todos estos problemas aún no han sido solucionados en forma completa. Pero como los objetos son portables (teóricamente) mientras que la herencia permite la reusabilidad del código orientado a objetos, es más sencillo modificar código existente porque los objetos no interaccionan excepto a través de mensajes; en consecuencia un cambio en la codificación de un objeto no afectará la operación con otro objeto siempre que los métodos respectivos permanezcan intactos. La introducción de tecnología de objetos como una herramienta concepual para analizar, diseñar e implementar aplicaciones permite obtener aplicaciones más modificables, fácilmente extendibles y a partir de componentes reusables. Esta reusabilidad del código disminuye el tiempo que se utiliza en el desarrollo y hace

que el desarrollo del software sea mas intuitivo porque la gente piensa naturalmente en términos de objetos más que en términos de algoritmos de software.

Problemas derivados de la utilización de OOP en la actualidad

Un sistema orientado a objetos, por lo visto, puede parecer un paraíso virtual. El problema sin embargo surge en la implementación de tal sistema. Muchas compañías oyen acerca de los beneficios de un sistema orientado a objetos e invierten gran cantidad de recursos luego comienzan a darse cuenta que han impuestouna nueva cultura que es ajena a los programadores actuales. Específicamente los siguientes temas suelen aparecer repetidamente:

Curvas de aprendizaje largas. Un sistema orientado a objetos ve al mundo en una forma única. Involucra la conceptualización de todos los elementos de un programa, desde subsistemas a los datos, en la forma de objetos. Toda la comunicación entre los objetos debe realizarse en la forma de mensajes. Esta no es la forma en que están escritos los programas orientados a objetos actualmente; al hacer la transición a un sistema orientado a objetos la mayoría de los programadores deben capacitarse nuevamente antes de poder usarlo.

Dependencia del lenguaje. A pesar de la portabilidad conceptual de los objetos en un sistema orientado a objetos, en la práctica existen muchas dependencias. Muchos lenguajes orientados a objetos están compitiendo actualmente para dominar el mercado. Cambiar el lenguajede implementación de un sistema orientado a objetos no es una tarea sencilla; por ejemplo C++ soporta el concepto de herencia multiple mientras que SmallTalk no lo soporta; en consecuencia la elección de un lenguaje tiene ramificaciones de diseño muy importamtes.

Determinacion de las clases. Una clase es un molde que se utiliza para crear nuevos objetos. En consecuencia es importante crear el conjunto de clases adecuado para un proyecto. Desafortunadamente la definición de las clases es más un arte que una ciencia. Si bien hay muchas jerarquías de clase predefinidas usualmente se deben crear clases específicas para la aplicación que se este desarrollando. Luego, en 6 meses ó 1 año se da cuenta que las clases que se establecieron no son posibles; en ese caso será necesario reestructurar la jerarquía de clases devastando totalmente la planificaciónoriginal.

Performance. En un sistema donde todo es un objeto y todainteraccion es a través de mensajes, el tráfico de mensajes afecta la performance. A medida que la tecnología avanza y la velocidad de microprocesamiento, potencia y tamaño de la memoria aumentan, la situacion mejorará; pero en la situación actual, un diseño de una aplicación orientada a objetos que no tiene en cuenta la performance no será viable comercialmente.

Idealmente, habría una forma de atacar estos problemas eficientemente al mismo tiempo que se obtienen los beneficios del desarrollo de una estrategia orientada a objetos. Deberia existir una metodología fácil de aprender e independiente del lenguaje, y facil de reestructurar que no drene la performance del sistema .

Bibliografía consultada

Revista COMPU MAGAZINE, Número 51, Octubre '92

Revista COMPU MAGAZINE, Número 50, Septiembre '92

(y diversos apuntes conseguidos de distintas publicaciones)

Lucas

http://www.monografias.com/trabajos/objetos/objetos.shtml