1. 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
2. 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í.
GarbageCollection. 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.
3. 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.
4. 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, ObjetoOrientadDesignó), 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.
5. 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
6. 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.
7. 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
8. 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, HarlanHerrick, Peter Sheridan, Roy
Nutt, Robert Nelson, Irving Ziller, LoisHaibt 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 AlgorithmicLanguage (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 DartmouthCollege en New Hampshire, Estados Unidos, como un
medio para facilitar programar 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
9. 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 NiklausWirth 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 PhilippeRoussel 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 NiklausWirth, 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
4th
Jul,
1980
lenguaje
c++
C++ es un lenguaje de programación diseñado a mediados de los años
1980 por BjarneStroustrup. 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
10. 10th
Jul,
1985
LENGUAJE
CLIPPER
Clipper es un lenguaje de programación procedural e imperativo
creado en 1985 por NantucketCorporation y vendido posteriormente a
ComputerAssociates, 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 FoundationClasses (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 orientada a objetos.
“HOLA MUNDO” EN DISTINTOS LENGUAJES
En Fortran
PROGRAM HOLA
PRINT *, '¡Hola, mundo!'
END
En LISP
(format t "¡Hola, mundo!")
"¡Hola, mundo!"
11. 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
ProgramHolaMundo;
Begin
Write('¡Hola, Mundo!');
ReadLn;
End.
En Prolog
write('Hola mundo').
EN C
#include<stdio.h>
intmain()
{
printf("¡Hola, mundo!n");
return0;
}
En Modula-2
MODULE Hola;
FROMInOutIMPORTWriteString;
BEGIN
WriteString("Hola Mundo");
END Hola.
EN C++
#include<iostream>
intmain()
{
std::cout<<"Hola
mundon";return0;
}
12. En Clipper
? "Hola Mundo!"
JAVA
publicclassHolaMundo
{
publicstaticvoidmain(String[]args)
{
System.out.println("Hola Mundo");
}
}
En Delphi
programPHolaMundo;
uses
Dialogs;
begin
MessageDlg('Hola Mundo',mtInformation,[mbOK],0);
end.