19

PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

Embed Size (px)

Citation preview

Page 1: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen
Page 2: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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

Page 3: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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

Page 4: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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

Page 5: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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.

Page 6: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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.

Page 7: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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

Page 8: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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.

Page 9: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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

Page 10: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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

Page 11: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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

Page 12: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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.

Page 13: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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.

Page 14: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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:

Page 15: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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.

Page 16: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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:

Page 17: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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 [;]

}

Page 18: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

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.

Page 19: PROGRAMACIÓN ORIENTADA A OBJETOSFINAL+DE... · MELISSA MEJIA – YANI MORALES Página 3 TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (P.O.O) 1. Haga un resumen

MELISSA MEJIA – YANI MORALES Página 18

8. HAMAPA CONCEPTUAL DE TODO LO APRENDIDO EN ESTE T ALLER