Informe P.O.O

20

Click here to load reader

Transcript of Informe P.O.O

Page 1: Informe P.O.O

Universidad de OrienteNúcleo de Anzoátegui

Departamento de Computación y SistemasAsignatura: Programación Orientada a Objeto

Profesor: Bachiller: Pedro Dorta Oscarelys Farias Cl: 19 457 310

Pto la Cruz, Mayo del 2011

Page 2: Informe P.O.O

Indice

Introducción…………………………………………………………………………………………………………02

Historia de la Computación…………………………………………………………………………………..3-4

Evolución del Hardware – Software…………………………………………………..…………………..5-6

Software clasificación y características………………………………………………………...………7-8

Lenguaje de programación…………………………………………………………………………….………...9

Paradigmas orientados a Objetos………………………………………………………………….….10- 13

Herramientas de Programación…………………………………………………………………………..…14

Clase y Objectos……………………………………………………………………………………………………15

Conclusión……………………………………………………………………………………………………………16

Introducción

Page 3: Informe P.O.O

Por siglos los hombres han tratado de usar fuerzas y artefactos de diferente tipo para realizar sus trabajos, para hacerlos más simples y rápidos.. En la humanidad se han construido distintos tipos de instrumentos de ayuda para que el hombre pudiera calcular, hasta llegar a la computadora digital moderna.

Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la información sobre la tarea que iban a ejecutar. Cuando programamos le indicamos una serie de instrucciones para que la computadora las ejecute. Para asegurarse que la computadora entienda las instrucciones, se han establecido lenguajes bien definidos para especificar y poder generar la comunicación con la computadora. Estos lenguajes tienen características similares a los lenguajes comunes que utilizan las personas para comunicarse unas con otras, pues cuentan con reglas y estructuras que deben seguirse.

A continuación, se describen algunos inventos del pasado, que conforman los antecedentes más importantes de la computación, con el fin de entender el proceso por el que se ha pasado, para llegar a crear las diferentes computadoras con las que contamos en la actualidad y también entender un poco acerca de los lenguaje de programación clasificación y características.

Historia de la Computación

Page 4: Informe P.O.O

Máquinas Mecánicas (Antes de 1930)

En el siglo XVII, Blaise Pascal, un matemático y filósofo francés, invento la Pascalina, una calculadora mecánica para operaciones de suma y resta. En el siglo XX, cuando Niklaus Wirth invento un lenguaje de programación estructurado, lo llamo Pascal en honor al inventor de la primera calculadora mecánica.

A finales del siglo XVII, el matemático alemán Gottfried Leibnitz invento una calculadora mecánica más compleja que podía realizar operaciones de multiplicación y división, así como suma y resta. Se le llamo la Rueda de Leibnitz.

La primera máquina que uso la idea de almacenamiento y programación fue el telar de Jacquard, inventado por Joseph-Marie Jacquard a principios del siglo XIX. El telar usaba tarjetas perforadas (como un programa almacenado) para controlar el aumento de hilos en la fabricación de textiles.

En 1823 Charles Babbage invento la Maquina Diferencial, la cual podía hacer más que operaciones polinomiales. Posteriormente invento una maquina llamada Maquina Analítica que, en cierta medida, es paralela a la idea de las computadoras modernas. Tenía cuatro componentes: un molino (ALU moderno), un almacén (memoria), un operador (unidad de control) y una salida (entrada/salida)

En 1890, Herman Hollerit, mientras trabajaba en la Oficina de Censos de Estados Unidos, diseño y construyó una maquina programadora que podía leer, contar y ordenar automáticamente los datos almacenados en las tarjetas perforadas.

Nacimiento de las Computadoras Electrónicas (1930-1950)

Entre 1930 y 1950, algunos científicos, que podrían considerarse los pioneros de la industria de la computación electrónica, inventaron varias computadoras.

La primera computadora para propósito especial que codificaba información de manera eléctrica fue inventada por John V. Atanasoff y su asistente Clifford Berry en 1939.Se le llamo ABC (Atanasoff Berry Computer) y se diseño especialmente para resolver un sistema de ecuaciones lineales.

Al mismo tiempo, el matemático alemán Konrad Zuse diseño una maquina de propósito general llamada Z1.

Page 5: Informe P.O.O

En la década de 1930, el ejército estadounidense e IBM patrocinaron un proyecto en la Universidad de Harvard bajo la dirección de Howard Airen para construir una computadora enorme llamada Mark I. Esta computadora usaba componentes eléctricos y mecánicos.

En Inglaterra, Alan Turing invento una computadora llamada Colossus diseñada para descifrar el código Enigma alemán

La primera computadora de propósito general totalmente electrónica fue fabricada por John Mauchly y J. Presper Eckert y recibió el nombre de ENIAC (electronic Numerical Integrator and Calculator: Calculadora e integrador numérico electrónico). Se termino en 1946. Utilizaba 18 000 tubos de vacio, media 100 pies de largo por 10 pies de alto y pesaba 30 toneladas

Computadoras basadas en el Modelo de Von Neumann

Las cinco computadoras precedentes utilizaron memoria solo para almacenar datos. Se programaron externamente usando cables o interruptores. John von Neumann propuso que el programa y los datos deberían almacenarse en la memoria. De esta manera, cada vez que usted utilizara una computadora para realizar un tarea nueva, solo necesitaría cambiar el programa en lugar de volver a conectar los cables de la maquina o enceder y apagar cientos de interruptores.

La primera computadora basada en la idea de von Neumann se construyo en 1950 en la Universidad de Pennsylvania y se llamo EDVAC. Al mismo tiempo, Maurice Wilkes construyo una computadora similar llamada EDSAC en la Universidad de Cambridge en Inglaterra.

Generaciones de Computadoras (1950 –hoy en día)Las computadoras construidas después de 1950 siguieron, más o menos, al modelo de von Neumann. Las computadoras se han vuelto más rápidas, más pequeñas y más baratas, pero el principio es casi el mismo. Los historiadores dividen este periodo en generaciones, con cada generación presenciando un cambio importante en el hardware o el software (pero no en el modelo)

Primera Generación

Page 6: Informe P.O.O

La primera generación (aproximadamente de 1950 a 1959) se caracteriza por la aparición de computadoras comerciales. Durante este periodo, las computadoras eran utilizadas solo por profesionales. Estaban encerradas en habitaciones con acceso restringido únicamente al operador o a especialistas en computación. Las computadoras eran voluminosas y usaban tubos de vacio como interruptores electrónicos.

Segunda Generación

Las computadoras de la segunda generación (aproximadamente de 1959 a 1965) utilizaban transistores en lugar de tubos de vacio. Esto redujo su tamaño asi como su costo y las puso al alcance de las empresas medianas y pequeñas. Dos lenguajes de programación de alto nivel, FORTRAN Y COBOL, se inventaron y facilitaron la programación de la tarea de la operación de la computadora. Un ingeniero civil podía escribir un programa en FORTRAN para resolver un problema sin involucrarse en detalles electrónicos de la arquitectura de la computadora.

Tercera Generación

La invención del circuito integrado (transistores, cableados y otros componentes en un solo chip) redujeron el costo y el tamaño de las computadoras aun mas. Las minicomputadoras aparecieron en el mercado. Los programas empaquetados, popularmente conocidos como paquetes de software, se volvieron disponibles.

Cuarta Generación

Aquí aparecen los microprocesadores que es un gran adelanto de la microelectrónica, son circuitos integrados de alta densidad y con una velocidadimpresionante. Las microcomputadoras con base en estos circuitos son extremadamente pequeñas y baratas, por lo que su uso se extiende al mercado industrial. Aquí nacen las computadoras personales que han adquirido proporciones enormes y que han influido en la sociedad en general sobre la llamada "revolución informática".

En 1976 Steve Wozniak y Steve Jobs inventan la primera microcomputadora de uso masivo y más tarde forman la compañía conocida como la Apple que fue la segunda compañía más grande del mundo, antecedida tan solo por IBM; y esta por su parte es aún de las cinco compañías más grandes del mundo.

Page 7: Informe P.O.O

Quinta generación

Esta generación de duración indefinida comenzó en 1985. Presencio la aparición de las computadoras laptos y palmtop, mejoras en los medios de almacenamiento secundarios (CD-ROM, DVD. Etc), el uso de la multimedia y el fenómeno de la realidad virtual.

Generación y Evolución del Hardware - software

Hardware

La clasificación evolutiva del hardware del computador electrónico, está dividida en

generaciones, donde cada una supone un cambio tecnológico muy notable. El origen de las

primeras es sencillo de establecer, ya que en ellas el hardware fue sufriendo cambios radicales. 

Los componentes esenciales que constituyen la electrónica del computador fueron totalmente

reemplazados en las primeras tres generaciones, originando cambios que resultaron

trascendentales. En las últimas décadas es más difícil distinguir las nuevas generaciones, ya que

los cambios han sido graduales y existe cierta continuidad en las tecnologías usadas. En

principio, se pueden distinguir:

1ª Generación (1945-1956): Electrónica implementada con tubos de vacío. Fueron las

primeras máquinas que desplazaron los componentes electromecánicos (relés).

2ª Generación (1957-1963): Electrónica desarrollada con transistores. La lógica discreta

era muy parecida a la anterior, pero la implementación resultó mucho más pequeña,

reduciendo, entre otros factores, el tamaño de un computador en notable escala.

3ª Generación (1964-hoy): Electrónica basada en circuitos Integrados . Esta tecnología

permitió integrar cientos de transistores y otros componentes electrónicos en un único

circuito integrado conformando una pastilla de silicio. Las computadoras redujeron así

considerablemente su costo, consumo y tamaño, incrementándose su capacidad, velocidad

y fiabilidad, hasta producir máquinas como las que existen en la actualidad.

4ª Generación (futuro): Probablemente se originará cuando los circuitos de silicio,

integrados a alta escala, sean reemplazados por un nuevo tipo de material o tecnología.

Software

Page 8: Informe P.O.O

Durante los primeros años de la era de la computadora, el software se  contemplaba como un añadido. La programación de computadoras era un "arte de andar por casa" para el que existían pocos métodos sistemáticos. El desarrollo del software se realizaba virtualmente sin ninguna planificación, hasta que los planes comenzaron a descalabrarse y los costes a correr. Los programadores trataban de hacer las cosas bien, y con un esfuerzo heroico, a menudo salían con éxito. El software se diseñaba a  medida para cada aplicación y tenia una distribución relativamente pequeña.

La mayoría del software se desarrollaba y era utilizado por la misma persona u organización. La misma persona lo escribía, lo ejecutaba y, si fallaba, lo depuraba. El diseño era un proceso implícito, realizado en la mente de alguien y, la documentación normalmente no existía.

La segunda era en la evolución de los sistemas de computadora se extienden desde la mitad de la década de los sesenta hasta finales de los setenta. La multiprogramación y los sistemas multiusuario introdujeron nuevos conceptos de interacción hombre - maquina. También se caracterizo por el establecimiento del software como producto y la llegada de las "casas del software". Los patronos de la industria, del gobierno y de la universidad se aprestaban a "desarrollar el mejor paquete de software" y ganar así mucho dinero.

La tercera era en la evolución de los sistemas de computadora comenzó a mediados de los años setenta y continúo más allá de una década. El sistema distribuido, múltiples computadoras, cada una ejecutando funciones concurrentes y comunicándose con alguna otra, incrementó notablemente la complejidad de los sistemas  informáticos. Las redes de área local y de área global, las comunicaciones digitales de alto ancho de banda y la creciente demanda de acceso "instantáneo" a los datos, supusieron una fuerte presión sobre los desarrolladores del software. La conclusión de la tercera era se caracterizo por la llegada y amplio uso de los microprocesadores. El microprocesador ha producido un extenso grupo de productos inteligentes, desde automóviles hasta  hornos microondas, desde robots industriales a equipos de diagnósticos de suero sanguíneo.

La cuarta era de la evolución de los sistemas informáticos se aleja de las computadoras individuales y de los programas de computadoras, dirigiéndose al impacto colectivo de las computadoras y del software. Potentes máquinas personales  controladas por sistemas operativos sofisticados, en redes globales y locales, acompañadas por aplicaciones de software avanzadas se han convertido en la norma.

La industria del software ya es la cuna de la economía del mundo. Las técnicas de la cuarta generación para el desarrollo del software están cambiando en la forma en que la comunidad del software construye programas informáticos. Las tecnologías orientadas a objetos están desplazando rápidamente los enfoques de desarrollo de software más convencionales en muchas áreas de aplicaciones.

Software clasificación y características

Page 9: Informe P.O.O

El software se clasifica en tres grandes tipos:

Software de sistema :  Su objetivo es desvincular adecuadamente al usuario y al

programador de los detalles de la computadora en particular que se use, aislándolo

especialmente del procesamiento referido a las características internas de: memoria,

discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El

software de sistema le procura al usuario y programador adecuadas interfaces de alto

nivel, herramientas y utilidades de apoyo que permiten su mantenimiento. Incluye entre

otros:

Sistemas operativos

Controladores de dispositivos

Herramientas de diagnóstico

Herramientas de Corrección y Optimización

Servidores

Utilidades

Software de programación : Es el conjunto de herramientas que permiten

al programador desarrollar programas informáticos, usando diferentes alternativas

y lenguajes de programación, de una manera práctica. Incluye entre otros:

Editores de texto

Compiladores

Intérpretes

Enlazadores

Depuradores

Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas,

usualmente en un entorno visual, de forma tal que el programador no necesite

introducir múltiplescomandos para compilar, interpretar, depurar, etc. Habitualmente

cuentan con una avanzada interfaz gráfica de usuario (GUI).

Software de aplicación : Es aquel que permite a los usuarios llevar a cabo una o varias

tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o

asistido, con especial énfasis en los negocios. Incluye entre otros:

Aplicaciones para Control de sistemas y automatización industrial

Aplicaciones ofimáticas

Software educativo

Page 10: Informe P.O.O

Software empresarial

Bases de datos

Telecomunicaciones  (por ejemplo Internet y toda su estructura lógica)

Videojuegos

Software médico

Software de Cálculo Numérico y simbólico.

Software de Diseño Asistido (CAD)

Software de Control Numérico (CAM)

Lenguaje de Programación

Un  lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana. Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.

Clasificación

Tradicionalmente los lenguajes de programación se pueden clasificar atendiendo a varios factores:

Según su “nivel”. Hace referencia a lo próxima al hombre que esté la forma de expresar las sentencias:

* Lenguajes de bajo nivel y ensambladores (cercanos a la máquina). * Lenguajes de alto nivel (cercanos al hombre).

Según la relación traducción-ejecución. * Compiladores. * Intérpretes.

Según su campo de aplicación: * Aplicaciones Científicas. Predominan los algoritmos de cálculo numérico y matrices. * Aplicaciones de Procesamiento de Datos. Sobresalen las tareas relativas a la creación, mantenimiento, consulta y listado de datos. Estos datos se organizan en registros, ficheros y bases de datos. * Aplicaciones de Tratamiento de Textos. Llevan a cabo la manipulación de textos en

Page 11: Informe P.O.O

lenguaje natural. * Aplicaciones en Inteligencia Artificial. Están constituidas por programas que emulan un comportamiento inteligente. Ej. juegos inteligentes (ajedrez, tres en raya, ...), robótica, sistemas expertos, ... * Aplicaciones de Programación de Sistemas. Como por ejemplo aquéllos que se utilizan para desarrollar los módulos de un Sistema Operativo, traductores de lenguajes, ...

Según el estilo de programación: * Imperativos. * Declarativos.

Paradigmas Orientado a Objecto

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.

Características

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

Page 12: Informe P.O.O

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

Page 13: Informe P.O.O

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.

Herramientas de Programación

Las herramientas de programación, son aquellas que permiten realizar aplicativos, programas, rutinas, utilitarios y sistemas para que la parte física del computador u ordenador, funcione y pueda producir resultados.

Hoy dia existen múltiples herramientas de programación en el mercado, tanto para analistas expertos como para analistas inexpertos.

Las herramientas de programación más comunes del mercado, cuentan hoy dia con programas de depuración o debugger, que son utilitarios que nos permiten detectar los posibles errores en tiempo de ejecucion o corrida de rutinas y programas.

Entre otras herramientas de programación encontramos librerías y componentes, dados por algunos lenguajes de programación como son el C++ y delphi.

Otras herramientas de programación son los lenguajes de programación, que nos permiten crear rutinas, programas y utilitarios.

Entre algunas de estas herramientas de programación tenemos:

Basic y Pascal que son herramientas de programación, idoneas para la inicializacion de los programadores.

C y C++ que sirven para la programación de sistemas.

Cobol, que es una herramienta de programación orientada hacia sistemas de gestion empresarial como nominas y contabilidad.

Page 14: Informe P.O.O

Fortran, que son lenguajes específicos para cálculos matemáticos y o numéricos.

Herramientas de programación para ambientes gráficos como son Visual Basic, Delphi y Visual C.

Html y Java, que permiten la creación de páginas WEB para internet.

 Clase y Objecto

Un objeto no es más que un conjunto de variables (o datos) y métodos (o funciones)

relacionados entre sí. Los objetos en programación se usan para modelar objetos o

entidades del mundo real (el objeto hijo, madre, o farmacéutica, por ejemplo). Un objeto

es, por tanto, la representación en un programa de un concepto, y contiene toda la

información necesaria para abstraerlo: datos que describen sus atributos y operaciones

que pueden realizarse sobre los mismos.

Una clase es una plantilla que define las variables y los métodos que son comunes para

todos los objetos de un cierto tipo. En nuestro ejemplo, la clase bicicleta definiría variables

miembro comunes a todas las bicicletas, como la marcha actual, la cadencia actual, etc. Esta

clase también debe declarar e implementar los métodos o funciones miembro que permiten al

ciclista cambiar de marcha, frenar, y cambiar la cadencia de pedaleo

Conclusion

Page 15: Informe P.O.O

 El avance tecnológico que ha tenido la computadora con el paso del tiempo es muy satisfactorio ya que se muestran mejoras y nuevas ideas con respecto al diseño y los fines de cada máquina, pero lo que tienen en común estos aparatos y por lo cual se les considera antecesores de la computadora es la finalidad de simplificar la solución de cálculos matemáticos muy complicados, por ejemplo el Ábaco que solo se utiliza para sumar y restar, simplifica estas operaciones y podemos realizar estos cálculos con mas rapidez, otro ejemplo seria el sistema del Telar Automatizado el cual realizaba diseños en tela por medio de tarjetas perforadas que determinaban cada diseño y este a su vez se podía modificar intercambiando dichas tarjetas.

Estas maquinas en la actualidad son obsoletas ya que contamos con tecnologías mas avanzadas que nos permiten realizar no solo cálculos matemáticos si no que a su vez nos permite intercambiar información (imagen, sonido, texto, etc.), pero sin la invención de estos aparatos no podríamos disfrutar de estas tecnologías ya que gracias a ellos fue posible la construcción y el descubrimiento de lo que en la actualidad llamamos computadora.

La computadora es una máquina electrónica capaz de ordenar procesar y elegir un resultado con una información.

Un  lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras.

Las herramientas de programación, son aquellas que permiten realizar aplicativos, programas, rutinas, utilitarios y sistemas para que la parte física del computador u ordenador, funcione y pueda producir resultados.

Una clase es la definición de un tipo de objeto. Por lo tanto un objeto es una realización o instancia de una clase.