Introduccion a la POO

16
PROGRAMACION VISUAL TRABAJO DE UNIDAD 1 PROGRAMACION ORIENTADA A OBJETOS Minatitlán Ver. 13 de marzo del 2014 PROFESOR: Ing. Guillermina Jiménez Rasgado ENCARGADO DEL GRUPO: Miguel Ángel Tenorio Pérez ALUMNO: Libertad Esmirna Olivares Salazar Ing. Electrónica 4to Semestre Grupo 2 M No. De Control: 12230767

Transcript of Introduccion a la POO

Page 1: Introduccion a la POO

TRABAJO DE UNIDAD 1 PROGRAMACION ORIENTADA A OBJETOS

Minatitlán Ver. 13 de marzo del 2014

PROFESOR: Ing. Guillermina Jiménez Rasgado ENCARGADO DEL GRUPO: Miguel Ángel Tenorio Pérez

ALUMNO: Libertad Esmirna Olivares SalazarIng. Electrónica 4to Semestre Grupo 2 M

No. De Control: 12230767

Page 2: Introduccion a la POO

TAREA 1: leer la información proporcionada en los archivos anexos, traducir entre todos un artículo de dos hojas q envío en inglés, subrayar los términos nuevos detectados de la POO.

¿Por qué necesitamos para programar?

La tecnología es parte de nuestra vida. El mundo está cambiando todos los días y todo lo que se está automatizado. Aprender a programar es la forma creativa que podemos llevar nuestras ideas a un nivel superior y expresar soluciones a la sociedad. Mediante el diseño de programas, nos enteramos de varias habilidades como la lectura crítica, el pensamiento analítico y crear síntesis. El programador define el problema, planea una solución, los códigos del programa , pruebe la propuesta y documenta las características. Pero no podemos programar todas las soluciones con el mismo método, por eso aparece paradigmas de programación.

Panorámica de Paradigmas de Programación

Según Vasappanavara, un “paradigma de programación es la manera en que se explotan los elementos de programación, tales como funciones, objetos y variables para producir la salida deseada". Es importante entender que paradigmas de programación no son lenguajes de programación.

¿Qué es la programación orientada a objetos (POO) ?

El objeto - orientado es un paradigma de programación donde se tejen la lógica y los datos del programa. Como afirmó Phil Ballard, es una forma de conceptualizar los datos de un programa en "cosas" separadas conocidas como objetos, cada uno con sus propias propiedades y métodos.

Veamos un ejemplo. Suponga que su amigo es un gerente de banco y él quiere que usted ayude a la mejora de su sistema. El primer objeto que puede diseñar es la Cuenta de propósito general. El objeto de Cuenta tiene propiedades y métodos. Para cada cliente el banco de tu amigo tiene, usted tendría que crear un objeto de cuenta.

Características

Como se desprende de las características más importantes de la programación orientada a objetos:

La encapsulación. Capacidad de ocultar los datos y las instrucciones en el interior de un objeto.Herencia. Capacidad de crear un objeto de otro.El polimorfismo. El diseño de las nuevas clases se basa en una sola clase.Paso de mensajes. Es la forma más objetos se comunican entre sí.Garbage Collection. Gestión de memoria automática, que destruye los objetos que ya no están en uso por el programa.

Beneficios: Como sigue algunos de los beneficios de la utilización de la programación orientada a objetos:

Reutilización. Usted puede escribir un programa usando un código desarrollado anterior.Código Compartido. Usted es capaz de estandarizar la forma en que tu estás programando con sus colegas.Modelado rápido. Puede crear prototipos de las clases y su interacción a través de un diagrama.Inconvenientes

De la siguiente manera las desventajas del uso de la programación orientada a objetos:

Tamaño. Son más grandes que otros programas, consumiendo más memoria y espacio en disco.Esfuerzo. Requiere mucho trabajo para crear, incluyendo la creación de diagramas en la fase de planificación y la codificación en la fase de ejecución.

Page 3: Introduccion a la POO

Conceptos Básicos

Clase: Plantilla básica que especifica las propiedades y el comportamiento de algo (la vida real o abstracta).

Objeto: Particular instancia de una clase que responda en consecuencia a los acontecimientos.

Atributo: Las características de la clase. A menudo llamado variables de instancia.

Método: Algoritmo asociado a una clase que representa una cosa que hace el objeto.

Subclase: Clase sobre la base de otra clase.

Herencia: Proceso mediante el cual la subclase obtiene los atributos y los métodos de su clase padre.

Interfaz: Plantilla específica que hace cumplir ciertos atributos y métodos de una clase.

Paquete: Espacio de nombres que organiza un conjunto de clases e interfaces relacionadas.

Evento: Alertar a la aplicación cuando hay un cambio de estado del objeto.

Page 4: Introduccion a la POO

CONCEPTOS MÁS IMPORTANTES

POO: La Programación Orientada a Objetos (POO u OOPsegún sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo, y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos. El término de Programación Orientada a Objetos indica más una forma de diseño y una metodología de desarrollo de software que un lenguaje de programación, ya que en realidad se puede aplicar el Diseño Orientado a Objetos (En inglés abreviado OOD, Objeto Orientad Designó), a cualquier tipo de lenguaje de programación.

CLASE: Es el molde de un objeto, plantilla, cada objeto se define dentro de una clase y se crean a partir de ésta. Posiblemente se ampliará y utilizará este término mucho más adelante. Por ahora solo lo menciono, se lo podría tomar para simplificar como que es casi lo mismo que un objeto.

OBJETOS: Un Botón, un Cuadro de texto, son ejemplos de objetos, son una combinación de códigos y datos que son tratados como un único elemento. Luego, una aplicación completa puede ser un objeto. El trabajar con objetos posee la ventaja de que no hace falta escribir el código del objeto. No hace falta escribir el código de un botón, directamente se lo inserta, se le asigna un método, como ser clic en el ejemplo anterior. Si se necesita se le modifica alguna de sus propiedades y se agrega código.

PARADIGMA: Un paradigma de programación provee (y determina) la visión y métodos de un programador en la construcción de un programa o subprograma. Diferentes paradigmas resultan en diferentes estilos de programación y en diferentes formas de pensar la solución de problemas (con la solución de múltiples “problemas” se construye una aplicación).

HERENCIA: El mecanismo más utilizado para alcanzar algunos de los objetivos más preciados en el desarrollo de software como lo son la reutilización y la extensibilidad. A través de ella los diseñadores pueden crear nuevas clases partiendo de una clase o de una jerarquía de clases preexistente (ya comprobadas y verificadas) evitando con ello el rediseño, la modificación y verificación de la parte ya implementada. La herencia facilita la creación de objetos a partir de otros ya existentes e implica que una subclase obtiene todo el comportamiento (métodos) y eventualmente los atributos (variables) de su superclase.

ATRIBUTO: Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables.Las variables de instancia también denominados miembros dato, son declaradas en la clase pero sus valores son fijados y cambiados en el objeto.Además de las variables de instancia hay variables de clase, las cuales se aplican a la clase y a todas sus instancias. Por ejemplo, el número de ruedas de un automóvil es el mismo cuatro, para todos los automóviles.

POLIMORFISMO: se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice, más allá de las obvias diferencias sintácticas.

METODO: Un método es un trozo de código que puede ser llamado o invocado por el programa principal o por otro método para realizar alguna tarea específica. El término método en Java es equivalente al de subprograma, rutina, subrutina, procedimiento o función en otros lenguajes de programación. El método es llamado por su nombre o identificador seguido por una secuencia de parámetros o argumentos (datos utilizados por el propio método para sus cálculos) entre paréntesis. Cuando el método finaliza sus operaciones, devuelve habitualmente un valor simple al programa que lo llama, que utiliza dicho valor de la forma que le convenga. 

Page 5: Introduccion a la POO

CONSTRUCTOR: El constructor se llama de forma automática cuando se crea un objeto, para situarlo en memoria e inicializar los miembros dato declarado en la clase. El constructor tiene el mismo nombre que la clase. Lo específico del constructor es que no tiene tipo de retorno. El constructor recibe cuatro números que guardan los parámetros x1, y1, w y h, y con ellos inicializa los miembros dato x, y, ancho y alto. Una clase puede tener más de un constructor.

ABSTRACCION: La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (Característica de caja negra). El común denominador en la evolución de los lenguajes de programación, desde los clásicos o imperativos hasta los orientados a objetos, ha sido el nivel de abstracción del que cada uno de ellos hace uso.Los lenguajes de programación son las herramientas mediante las cuales los diseñadores de lenguajes pueden implementar los modelos abstractos. La abstracción ofrecida por los lenguajes de programación se puede dividir en dos categorías: abstracción de datos (pertenecientes a los datos) y abstracción de control (perteneciente a las estructuras de control).

ENCAPSULACION: Se refiere a la capacidad de agrupar y condensar en un entorno con límites bien-definidos distintos elementos. Cuando hablemos de encapsulación en general siempre nos referiremos, pues, a encapsulación abstracta. De manera informal, primero generalizamos (la abstracción) y luego decimos: la generalización está bien, pero dentro de un cierto orden: hay que poner límites (la encapsulación), y dentro de esos límites vamos a meter, a saco, todo lo relacionado con lo abstraído: no sólo datos, sino también métodos, comportamientos, etc.

UML: es un lenguaje visual para especificar, construir y documentar sistemas” (OMG - Objeto Management Grupo) Iniciad (UNIFICADO): El aporte de muchos métodos y notaciones Independiente de implementaciones, plataformas y lenguajes Modeling (MODELADO): Los modelos son utilizados en todas las ingenierías Language (LENGUAJE): Si hay gente, requieren comunicarse. Si se tienen que comunicar, se tienen que entender. Para entenderse necesitan un lenguaje común

Page 6: Introduccion a la POO

TAREA 2: Comentar videos en clase

TAREA 3: realizar diapositivas o un prezi de los conceptos más importantes de la POO, que aparecen en los documentos y videos proporcionados (POO, clase, objeto, paradigma, herencia, atributo, polimorfismo, método, constructor, abstracción, encapsulación, UML, miembro)

TAREA 4: Escribir un concepto diferente relacionado a la POO, una imagen, un ejemplo y deberá anotar su nombre completo

La programación orientada a objetos es una “filosofía”, un modelo de programación, con su teoría y su Metodología, que conviene conocer y estudiar antes de nada. Un lenguaje orientado a objetos es un lenguaje de programación que permite el diseño de aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda persona que vaya a desarrollar aplicaciones orientadas a objetos aprenda primero la “filosofía” (o adquiera la forma de pensar) y después el lenguaje, porque “filosofía” sólo hay una y lenguajes muchos.

Page 7: Introduccion a la POO

TAREA 5: Realizar una investigación de los Lenguajes de programación orientados a objetos, como se llaman, quien los invento. Escribir el ejemplo de hola mundo para cada lenguaje encontrado. *Hacer una línea del tiempo por equipos de 3 pueden hacerlo en Dipity u otro programa red y agregar enlace en el blog 30%*

CARACTERÍSTICAS DE LOS LENGUAJES OOP

Herencia múltiple

Esta característica suele ser común a la mayoría de los lenguajes OOP, aunque introduce un problema al existir la posibilidad de que el objeto sucesor herede el mismo atributo, aunque con distinto tipo y valor, de más de un predecesor. Alguno de los lenguajes de programación soluciona este problema de forma automática, aunque los más populares generan un error en el tiempo de compilación. Recomendamos que se examinen con cuidado las clases para evitar en lo posible estos errores.

Eficiencia.

Los lenguajes OOP arrastraron en un principio la reputación de ser ineficaces. Esto se debía en gran medida a que los primeros lenguajes (como Smalltalk) eran interpretados y no compilados. La existencia de compiladores permite a los desarrolladores ganar rapidez. Actualmente, usando un buen lenguaje orientado a objetos como C++, Java, etc. Junto con las librerías apropiadas para la realización de un programa, puede que se ejecute más rápidamente que el mismo programa compilado con un lenguaje procedural.

Asignación de tipos.

Los lenguajes orientados a objetos varían de forma sustancial la forma por la que se aproximan a la asignación de tipos.

Por asignación de tipos entendemos que cada variable sea identificada como perteneciente a una clase (asignación fuerte) o sea simplemente un objeto indeterminado (asignación débil). Eiffel y C son dos lenguajes basados en la asignación fuerte, frente a Smalltalk, en el que todas las variables definidas pertenecen a una clase indeterminada.

La asignación fuerte sirve a dos propósitos. Por una parte para que el desarrollador pueda identificar a que clase pertenece cada operación. De forma concreta, en aquellos lenguajes donde está implementado el operator overloading (redefinición de operador), el compilador puede reconocer a través de las clases que entran como parámetros en la operación que operación tiene que utilizar.

Por otra, este tipo de declaración permite al compilador un mayor grado de optimización, ya que conoce en todo momento el espacio que ha de asignar.

Manejo de memoria.

Los OOP son lenguajes que utilizan de manera intensiva la memoria de la computadora. Hay dos tipos de aproximación a la gestión de memoria. El sistema en tiempo de ejecución libera la memoria automáticamente a medida que los objetos dejan de utilizarse.

El sistema tiene instrucciones concretas para liberar l memoria explícitamente. Este el enfoque adoptado por lenguajes como C++, que aportan dos operadores: crear y destruir. El primero reserva automáticamente memoria, mientras que el segundo la libera.

Encapsulación

Consiste en separar aquellos atributos del objeto que deben ser conocidos por el resto, de aquel necesario para su funcionamiento propio. No es propio de los lenguajes orientados a objetos, pero la capacidad de éstos

Page 8: Introduccion a la POO

para unir las estructuras de datos a los procedimientos que los modifican lo hace más potente que los lenguajes llamados <<Modulares>>

HISTORIA DEL LNEGUAJE DE PROGRAMACION

15th May, 1953

LENGUAJE FORTRAN

A finales de 1953, John W. Backus sometió una propuesta a sus superiores en IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para programar el computador central IBM 704. El histórico equipo FORTRAN de Backus consistió en los programadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt y David Sayre.

1st Feb, 1959

LENGUAJE LISP

es una familia de lenguajes de programación de computadora de tipo multiparadigma con una larga historia y una sintaxis completamente entre paréntesis. Especificado originalmente en 1958 por John McCarthy y sus colaboradores en el Instituto Tecnológico de Massachusetts, el Lisp es el segundo más viejo lenguaje de programación de alto nivel de extenso uso hoy en día; solamente el FORTRAN es más viejo. Al igual que el FORTRAN, el Lisp ha cambiado mucho desde sus comienzos, y han existido un número

2nd May, 1960

LENGUAJE ALGOL

lenguaje de programación. La voz es un acrónimo de las palabras inglesas Algorithmic Language (lenguaje algorítmico). Fue muy popular en las universidades durante los años 60, pero no llegó a cuajar como lenguaje de utilización comercial. Sin embargo, Algol influyó profundamente en varios lenguajes posteriores que sí alcanzaron gran difusión, como Pascal, C y Ada. Hacia 1965 dos corrientes se distinguieron sobre el tema de un sucesor para Algol. Como resultado se definieron los lenguajes A

15th May, 1963

LENGUAJE APL

es un interactivo matriz lenguaje orientado y entorno de desarrollo integrado , que está disponible en un número de proveedores comerciales y no comerciales y para la mayoría de las plataformas informáticas. Se trata de basado en una notación matemática desarrollada por Kenneth E. Iverson y sus asociados que cuenta con atributos especiales para el diseño y las especificaciones de los sistemas informáticos digitales, tanto de hardware y de software .

17th Jul, 1965

LENGUAJE BASIC

fue diseñado en 1964 por John George Kemeny y Thomas Eugene Kurtz en el Dartmouth College en New Hampshire, Estados Unidos, como un medio para facilitar programar

Page 9: Introduccion a la POO

computadores a estudiantes (y profesores) que no fueran de ciencias. En ese tiempo, casi todo el uso de los computadores requería codificar software hecho a la medida, lo cual era algo bastante restringido a personas con formación como científicos y matemáticos. BASIC originalmente fue desarrollado como una herramienta de enseñanza.

15th May, 1969

LENGUAJE PASCAL

Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth entre los años 1968 y 1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo.

2nd Jan, 1972

LENGUAJE PROLOG

es un lenguaje de programación lógico e interpretado, bastante conocido en el medio de investigación en Inteligencia Artificial. Nació de un proyecto que no tenía como objetivo la implementación de un lenguaje de programación, sino el procesamiento de lenguajes naturales. Alain Colmerauer y Robert Pasero trabajaban en la parte del procesado del lenguaje natural y Jean Trudel y Philippe Roussel en la parte de deducción e inferencia del sistema. Interesado por el método de resolución SL.

15th May, 1972

LENGUAJE C

C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

8th Nov, 1979

LENGUAJE MODULA-2

es un lenguaje de programación cuyo autor es Niklaus Wirth, autor también del lenguaje Pascal. Como novedad respecto a este último lenguaje, introduce el concepto de módulo, y de encapsulación. Del código contenido en un módulo, sólo se facilita una interfaz pública denominada módulo de definición, permaneciendo el resto oculto (encapsulado) para un desarrollador ajeno, lo que facilita el mantenimiento de dichas estructuras de programación a la vez que imposibilita la modificación de las mismas

Page 10: Introduccion a la POO

4th Jul, 1980

lenguaje c++

C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada

10th Jul, 1985

LENGUAJE CLIPPER

Clipper es un lenguaje de programación procedural e imperativo creado en 1985 por Nantucket Corporation y vendido posteriormente a Computer Associates, la que lo comercializó como CA-Clipper. En un principio Clipper se creó como un compilador para el sistema gestor intérprete de bases de datos dBase III (de hecho las versiones estacionales de Nantucket incluían una etiqueta que lo indicaba así), pero con el tiempo el producto evolucionó y maduró, convirtiéndose en un lenguaje compilado.

15th May, 1990

LENGUAJE JAVA

Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. La memoria es gestionada mediante un recolector de basura.

2nd Nov, 1993

LENGUAJE VISUAL C++

Visual C++ (también conocido como MSVC, Microsoft Visual C++) es un entorno de desarrollo integrado (IDE) para lenguajes de programación C, C++ y C++/CLI. Esta especialmente diseñado para el desarrollo y depuración de código escrito para las API's de Microsoft Windows, DirectX y la tecnología Microsoft .NET Framework. Visual C++ hace uso extensivo del framework Microsoft Foundation Classes (o simplemente MFC), el cual es un conjunto de clases C++ para el desarrollo de aplicaciones en Windows.

7th Sep, 1995

LENGUAJE DELPHI

es un entorno de programación visual basado en una versión moderna del lenguaje de programación Pascal. Como entorno visual, la programación en Delphi consiste en diseñar las pantallas de que se compone el programa colocando todos sus componentes (botones, campos de texto, etc.), asociando después código a ellos. El lenguaje utilizado por Delphi es una extensión de Pascal denominada Object Pascal, que básicamente añade al Pascal tradicional soporte para la programación

Page 11: Introduccion a la POO

orientada a objetos.

“HOLA MUNDO” EN DISTINTOS LENGUAJES

En Fortran PROGRAM HOLA PRINT *, '¡Hola, mundo!' END

En LISP (format t "¡Hola, mundo!") "¡Hola, mundo!"

En ALGOL BEGIN FILE F (KIND=REMOTE); EBCDIC ARRAY E [0:12]; REPLACE E BY "HOLA MUNDO!"; WHILE TRUE DO BEGIN WRITE (F, *, E); END; END.

En Basic print "Hola Mundo";

En Pascal Program HolaMundo; Begin Write('¡Hola, Mundo!'); ReadLn; End.

En Prolog write('Hola mundo').

EN C#include <stdio.h>int main(){ printf("¡Hola, mundo!\n"); return 0;}

Page 12: Introduccion a la POO

En Modula-2 MODULE Hola; FROM InOut IMPORT WriteString; BEGIN WriteString ("Hola Mundo"); END Hola.

EN C++#include <iostream>int main(){ std::cout << "Hola mundo\n"; return 0 ;}

En Clipper? "Hola Mundo!"

JAVApublic class HolaMundo{ public static void main(String[] args) { System.out.println("Hola Mundo"); }}

En Delphi program PHolaMundo; uses Dialogs; begin MessageDlg('Hola Mundo', mtInformation, [mbOK], 0); end.