programaciÓn orientada a objetosfinal+de... · melissa mejia – yani morales página 3 taller...
TRANSCRIPT
MELISSA MEJIA – YANI MORALES Página 1
PROGRAMACIÓN ORIENTADA A OBJETOS
MELISSA ANDREA MEJIA COLORADO
YANI DAYANA MORALES DIAZ
UNIGUAJIRA FACULTAD DE INGENIERIA
PROGRMA INGENIERIA DE SISTEMAS ALGORITMO Y POO I
RIOHACHA – LA GUAJIRA 2013
MELISSA MEJIA – YANI MORALES Página 2
PROGRAMACIÓN ORIENTADA A OBJETOS
MELISSA ANDREA MEJIA COLORADO YANI DAYANA MORALES DIAZ
TRABAJO ESCRITO
ING. SANDY ROMERO
UNIGUAJIRA FACULTAD DE INGENIERIA
PROGRMA INGENIERIA DE SISTEMAS ALGORITMO Y POO I
RIOHACHA – LA GUAJIRA
MELISSA MEJIA – YANI MORALES Página 3
TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O)
1. Haga un resumen de la evolución de la POO y la programación moderna
2. Enuncie los Conceptos Fundamentales de POO y Defina cada uno de los siguientes conceptos
� Clase � Herencia � Objeto � Método � Evento � Mensaje � Propiedad o atributo � Estado interno � Identificación de un objeto
3. ¿Cuáles son las características de la programación orientada a objetos?
� Abstracción � Encapsulamiento � Principio de ocultación � Polimorfismo � Herencia � Recolección de basura
4. Mencione por lo menos 10 lenguajes de programación orientada a objetos
5. De un ejemplo de 1 objeto y defínalo con cada uno de los conceptos fundamentales
� Objeto � Atributos � Métodos.
6. Relación, semejanzas y diferencias entre la programación tradicional y la
programación orientada a objetos. 7. Investigue como se crea, declara y se manipula un objeto en C++ y C# 8. Haga un mapa conceptual de todo lo aprendido en este taller
MELISSA MEJIA – YANI MORALES Página 4
1. EVOLUCIÓN DE LA POO Y PROGRMACIÓN MODERNA La historia de la POO o programación moderna comienza a finales de los años 60
en el año 1962, con el lenguaje Simula, diseñado en el Norwegian Computing
Centre. Simula fue el primer lenguaje completamente orientado a objetos,
estructurado mediante objetos y clases. El Simula 67 fue considerado como el
primer Lenguaje de Programación Orientado a Objetos, fue diseñado en 1967 por
Ole-Johan Dhal y Kristen Nygaard en el Norwegian Computing Center en Oslo.
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. Durante la década de los 70s la poca actividad en el tema la
monopoliza Smalltalk, Smalltalk 72, creado por Alan Kay en Xerox Park, también
diseñador de la primera computadora personal orientada a objetos. Las raíces
fueron simula 67, versión totalmente orientada a objetos. 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. Continúo el desarrollo de
Lenguajes de Programación Orientado a Objetos. En la década de los 90s se
produce la explosión total de las tecnologías orientadas al objeto. Se incrementó
dramáticamente la demanda para sistemas de software OO, por la promesa en la
revolución en el desarrollo de software. Han aparecido varias metodologías para el
desarrollo de software, que tienen que ver con algunas o todas las fases del ciclo
de vida del software, desde los requerimientos al mantenimiento. La POO tuvo un
crecimiento muy grande en 1990 aunque todavía se debate los beneficios de la
POO, a treinta años de su invención, la POO todavía seguirá usándose, para usar
POO deben aplicarse las técnicas de Ingeniería de Software y deben dominarse
los tres paradigmas: alto nivel, OO, procedural.
MELISSA MEJIA – YANI MORALES Página 5
2. CONCEPTOS FUNDAMENTALES DE POO
� CLASE: Es la definición de las características concretas de un
determinado tipo de objetos. Es decir, de cuáles son los datos y los
métodos de los que van a disponer todos los objetos de ese tipo. Por
esta razón, se suele decir que el tipo de dato de un objeto es la clase
que define las características del mismo también podemos decir que es
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 esta conocemos que es el proceso de crear nuevas
clases, llamadas clases derivadas, a partir de una clase base. En C++ la
herencia se manifiesta con la creación de un tipo definido por el usuario
(clase), que puede heredar las características de otra clase ya existente
o derivar las suyas a otra nueva clase. Cuando se hereda, las clases
derivadas reciben las características (estructuras de datos y funciones)
de la clase original, a las que se pueden añadir nuevas características o
modificar las características heredadas. El compilador hace realmente
una copia de la clase base en la nueva clase derivada y permite al
programador añadir o modificar miembros sin alterar el código de la
clase base.
� OBJETO: Un objeto se define como la unidad que en tiempo de
ejecución realiza las tareas de un programa. También es una 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.
MELISSA MEJIA – YANI MORALES Página 6
� MÉTODO: un método no es otra cosa que una función o procedimiento
perteneciente a un objeto es decir un método contiene el código que
manipula el estado del objeto. Además constituye el mecanismo
utilizado para implementar los mensajes entre objetos.
� EVENTO: Es una variante de las propiedades para los campos cuyos
tipos sean delegados. Es decir, permiten controlar la forman en que se
accede a los campos delegados y dan la posibilidad de asociar código a
ejecutar cada vez que se añada o elimine un método de un campo
delegado.
� MENSAJE: El mensaje es el modo en que se comunican e
interrelacionan los objetos entre sí. En C++, un mensaje no es más que
una llamada a una función de un determinado objeto. Cuando llamemos
a una función de un objeto, muy a menudo diremos que estamos
enviando un mensaje a ese objeto. En este sentido, mensaje es el
término adecuado cuando hablamos de programación orientada a
objetos en general.
� PROPIEDAD O ATRIBUTO: 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.
� 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
MELISSA MEJIA – YANI MORALES Página 7
clase. está compuesto de datos o informaciones; serán uno o varios
atributos a los que se habrán asignado unos valores concretos (datos).
� 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.
MELISSA MEJIA – YANI MORALES Página 8
3. CARACTERÍSTICAS DE LA PROGRAMACIÓN ORIENTADA A
OBJETOS
Existe un acuerdo acerca de qué características contempla la Orientación a
Objetos, las siguientes características son las más destacadas:
� Abstracción � Encapsulamiento � Principio de ocultación � Polimorfismo � Herencia � Recolección de basura
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 como 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.
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
especifican como pueden interactuar con los objetos de la clase. El aislamiento
MELISSA MEJIA – YANI MORALES Página 9
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.
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.
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 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
MELISSA MEJIA – YANI MORALES Página 10
4. LENGUAJES DE PROGRAMACIÓN ORIENTADA A OBJETOS
� C++
� C#
� HTML
� Object Pascal (Embarcadero Delphi)
� Java
� JavaScript
� PHP
� VB.NET
� Visual FoxPro
� Visual Basic 6.0
MELISSA MEJIA – YANI MORALES Página 11
5. EJEMPLO DE UN OBJETO Y CADA UNO DE SUS CONCEPTOS FUNDAMENTALES
OBJETO: Dado
ATRIBUTOS: Pasta, cuatro caras, puntos, cuadrado, color.
METODOS: Jugar.
MELISSA MEJIA – YANI MORALES Página 12
6. RELACIÓN, SEMEJANZAS Y DIFERENCIAS ENTRE LA
PROGRAMACIÓN TRADICIONAL Y LA PROGRAMACIÓN ORIENTAD A
A OBJETOS.
� RELACIÓN:
La programación orientada a objetos se fue convirtiendo en 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.
� DIFERENCIA: Estableciendo las diferencias Programación orientada
a objetos y estructurada:
La programación estructura pretende resolver un problema de
principio a fin en una sola estructura de código. La programación
orientada a objetos, resuelve el problema identificando los actores
que tienen participación en el problema e identificando también sus
acciones. Con esta información se crean los objetos (que son una
interpretación de algunos de estos actores), estos objetos están
compuestos por clases donde se detalla las acciones que realizan y
las propiedades de estos. Al tener creados los objetos solo es
ponerlos a interactuar entre ellos.
MELISSA MEJIA – YANI MORALES Página 13
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.
� VENTAJAS:
Las ventajas de un lenguaje orientado a objetos, son:
� Permite crear sistemas más complejos.
� Relacionar el sistema al mundo real.
� Facilita la creación de programas visuales.
� Construcción de prototipos
� Agiliza el desarrollo de software
� Facilita el trabajo en equipo
� Facilita el mantenimiento del software
� Fomenta la reutilización y extensión del código.
Ventajas de la Programación estructurada:
� Con la programación estructurada elaborar programas de
computador sigue siendo un albor que demanda esfuerzo,
creatividad, habilidad y cuidado. Sin embargo, con este nuevo
estilo podemos obtener las siguientes ventajas:
MELISSA MEJIA – YANI MORALES Página 14
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 más clara puesto que las
instrucciones están más relacionadas entre sí, por lo que es
más fácil comprender lo que hace cada función.
� 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 se facilita
debido a la lógica más visible, de tal forma que los errores se
pueden detectar y corregir más fácilmente.
� Programas más sencillos y más rápidos.
� Aumento de la productividad del programador.
� Se facilita la utilización de las otras técnicas para el
mejoramiento de la productividad en programación.
� Los programas quedan mejor documentados internamente.
MELISSA MEJIA – YANI MORALES Página 15
7. ¿COMO SE CREA, DECLARA Y SE MANIPULA UN OBJETO EN C++ Y C#?
La Creación Dinámica es la forma habitual de crear objetos en C++ y se realiza
mediante el operador new .Cuando usamos new para instanciar un objeto, se usa
una variable que referencie o apunte al nuevo objeto creado (de otra manera éste
quedaría totalmente inaccesible). En definitiva, se requiere la declaración previa
de un puntero a objetos del tipo del que se va a crear.
En C++El término objeto es muy importante y no es más que una variable, que a
su vez no es más que una instancia de una clase. Por consiguiente una clase es:
class cliente
{
char nom [20];
char num;
};
Y un objeto de esta clase se declara: cliente cli; Una definición de una clase
consta de dos partes: una declaración y una implementación. La declaración lista
los miembros de la clase. La implementación o cuerpo define las funciones de la
clase. Una de las características fundamentales de una clase es ocultar tanta
información como sea posible. Por consiguiente, es necesario imponer ciertas
restricciones en el modo en que se puede manipular una clase y de cómo se
pueden utilizar los datos y el código dentro de una clase.
Declaración de variables y funciones miembro de una clase en C++
class A {
int x;
float y;
public:
MELISSA MEJIA – YANI MORALES Página 16
int z;
void f();
};
void main(void)
{
A vardemo;
}
Creación de objetos en C#, Operador new, este operador crea un nuevo objeto
del tipo cuyo nombre se le indica y llama durante su proceso de creación al
constructor del mismo apropiado según los valores que se le pasen en
<parámetros>, devolviendo una referencia al objeto recién creado. Hay que
resaltar el hecho de que new no devuelve el propio objeto creado, sino una
referencia a la dirección de memoria dinámica donde en realidad se ha creado. El
antes comentado constructor de un objeto no es más que un método definido en la
definición de su tipo que tiene el mismo nombre que la clase a la que pertenece el
objeto y no tiene valor de retorno. Como new siempre devuelve una referencia
a la dirección de memoria donde se cree el objeto y los constructores sólo pueden
usarse como operando de new, no tiene sentido que un constructor devuelva
objetos, por lo que no tiene sentido incluir en su definición un campo
<tipo Devuelto> y el compilador considera erróneo hacerlo (aunque se indique
void). El constructor recibe ese nombre debido a que su código suele usarse
precisamente para construir el objeto, para inicializar sus miembros. Por ejemplo,
a nuestra clase de ejemplo Persona le podríamos añadir un constructor dejándola
así:
Declaración en C#
[Atributos] [Modificadores]
class identificador [:tipo_base]
{
Cuerpo [;]
}
MELISSA MEJIA – YANI MORALES Página 17
Los atributos son opcionales y son usados para dejar información adicional
declarativa. El modificador es opcional. Los modificadores permitidos son static,
sealed, abstract, unsafe, public e internal. Si no se define ningún modificador,
entonces el modificador interno es usado predeterminadamente. La palabra clave
class debe estas seguida de un identificador que nombra a la clase. El tipo_base
de una clase puede ser otra clase. Si se omite, entonces la clase heredará de
System.Object. El cuerpo contiene las declaraciones de miembros.
MELISSA MEJIA – YANI MORALES Página 18
8. HAMAPA CONCEPTUAL DE TODO LO APRENDIDO EN ESTE T ALLER