la programacion orientada a objetos

Upload: juanriva

Post on 14-Jan-2016

19 views

Category:

Documents


1 download

DESCRIPTION

Trabajo en la cual se define de forma básica la programación orientada a objetos (POO)

TRANSCRIPT

  • 1

    FACULTAD DE INGENIERA Y ARQUITECTURA

    Carrera

    INGENIERA DE SISTEMAS E INFORMTICA

    Ciclo

    VI

    Curso

    DESARROLLO DE APLICACIONES

    Tema

    LA PROGRAMACIN ORIENTADA

    A OBJETOS

    (POO)

    Realizado por

    JUAN CARLOS RIVA MELNDEZ

    Profesora

    KELLY CONDORI ZAMORA

  • 2

    Abril de 2015

    INDICE

    Contenido Pg.

    Introduccin 3

    1. Qu es la Programacin Orientada a Objetos (POO)? 4

    2. Qu es un Objeto? 5

    3. Origen 7

    4. Conceptos Fundamentales 8

    5. Caractersticas de la Programacin Orientada a Objetos (POO) 10

    Resumen 13

    Bibliografa 14

  • 3

    INTRODUCCIN

    La Programacin Orientada a Objetos (POO) es una forma especial de programar,

    ms cercana a como expresaramos las cosas en la vida real que otros tipos de

    programacin.

    Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para

    escribir nuestros programas en trminos de objetos, propiedades, mtodos en sus

    interacciones, para disear aplicaciones y programas informticos.

  • 4

    1. QU ES LA PROGRAMACION ORIENTADA A OBJETOS? (POO)

    La programacin orientada a objetos es una filosofa, un modelo de programacin,

    con su teora y su metodologa, que conviene conocer y estudiar antes de nada.

    Un lenguaje orientado a objetos es un lenguaje de programacin que permite el

    diseo de aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda

    persona que vaya a desarrollar aplicaciones orientadas a objetos aprenda primero

    la filosofa (o adquiera la forma de pensar) y despus el lenguaje, porque filosofa

    slo hay una y lenguajes muchos. En este documento veremos brevemente los

    conceptos bsicos de la programacin orientada a objetos desde un punto de vista

    global, sin particularizar para ningn lenguaje de programacin especfico.

    Los objetos son entidades que tienen un determinado estado, comportamiento

    (mtodo) e identidad:

    El estado est compuesto de datos o informaciones sern uno o varios

    atributos a los que se habrn asignado unos valores concretos (datos).

    El comportamiento est definido por los mtodos o mensajes a los que

    sabe responder dicho objeto, es decir, qu operaciones se pueden realizar

    con l.

    La identidad es una propiedad de un objeto que lo diferencia del resto

    dicho con otras palabras, es su identificador (concepto anlogo al de

    identificador de una variable o una constante).

    Un objeto contiene toda la informacin que permite definirlo e identificarlo frente a

    otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma

    clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los

    objetos disponen de mecanismos de interaccin llamados mtodos, que favorecen

    la comunicacin entre ellos. Esta comunicacin favorece a su vez el cambio de

    estado en los propios objetos. Esta caracterstica lleva a tratarlos como unidades

    indivisibles, en las que no se separa el estado y el comportamiento.

    Los mtodos (comportamiento) y atributos (estado) estn estrechamente

    relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase

    requiere de mtodos para poder tratar los atributos con los que cuenta. El

    programador debe pensar indistintamente en ambos conceptos, sin separar ni

    darle mayor importancia a alguno de ellos. Hacerlo podra producir el hbito

    errneo de crear clases contenedoras de informacin por un lado y clases con

  • 5

    mtodos que manejen a las primeras por el otro. De esta manera se estara

    realizando una programacin estructurada camuflada en un lenguaje de

    programacin orientado a objetos.

    La POO difiere de la programacin estructurada tradicional, en la que los datos y

    los procedimientos estn separados y sin relacin, ya que lo nico que se busca es

    el procesamiento de unos datos de entrada para obtener otros de salida. La

    programacin estructurada anima al programador a pensar sobre todo en trminos

    de procedimientos o funciones, y en segundo lugar en las estructuras de datos que

    esos procedimientos manejan. En la programacin estructurada solo se escriben

    funciones que procesan datos. Los programadores que emplean programacin

    orientada a objetos, en cambio, primero definen objetos para luego enviarles

    mensajes solicitndoles que realicen sus mtodos por s mismos.

    2. QU ES UN OBJETO?

    Un objeto no es ms que un conjunto de variables (o datos) y mtodos (o

    funciones) relacionados entre s. Los objetos en programacin se usan para

    modelar objetos o entidades del mundo real (el objeto hijo, madre, o farmacutica,

    por ejemplo). Un objeto es, por tanto, la representacin en un programa de un

    concepto, y contiene toda la informacin necesaria para abstraerlo: datos que

    describen sus atributos y operaciones que pueden realizarse sobre los mismos. La

    siguiente figura muestra una representacin visual de un objeto.

    Los atributos del objeto (estado) y lo que el objeto puede hacer (comportamiento)

    estn expresados por las variables y los mtodos que componen el objeto

    respectivamente. Por ejemplo, un objeto que modelase una bicicleta en el mundo

    real tendra variables que indiciaran el estado actual de la bicicleta: su velocidad

    es de 20 km/h, su cadencia de pedaleo 90 r.p.m. y su marcha actual es la 5. Estas

  • 6

    variables se conocen formalmente como variables instancia o variables miembro

    porque contienen el estado de un objeto bicicleta particular y, en programacin

    orientada a objetos, un objeto particular se denomina una instancia.

    Adems de estas variables, el objeto bicicleta podra tener mtodos para frenar,

    cambiar la cadencia de pedaleo, y cambiar de marcha (la bicicleta no tendra que

    tener un mtodo para cambiar su velocidad pues sta es funcin de la cadencia de

    pedaleo, la marcha en la que est y de si los frenos estn siendo utilizados o no,

    entre otros muchos factores). Estos mtodos se denominan formalmente mtodos

    instancia o mtodos miembro, ya que cambian el estado de una instancia u objeto

    bicicleta particular. La siguiente figura muestra una bicicleta modelada como un

    objeto:

    El diagrama del objeto bicicleta muestra las variables objeto en el ncleo o centro

    del objeto y los mtodos rodeando el ncleo y protegindolo de otros objetos del

    programa. Este hecho de empaquetar o proteger las variables miembro con los

    mtodos miembro se denomina encapsulacin. Este dibujo conceptual que

    muestra el ncleo de variables miembro del objeto protegido por una membrana

    protectora de mtodos o funciones miembros es la representacin ideal de un

    objeto y es el ideal que los programadores de objetos suelen buscar. Sin embargo,

    debemos matizarlo. A menudo, por razones prcticas, es posible que un objeto

    desee exponer alguna de sus variables miembro, o proteger otros de sus propios

    mtodos o funciones miembros. Por ejemplo, Java permite establecer 4 niveles de

    proteccin de las variables y de las funciones miembros para casos como ste.

    Los niveles de proteccin determinan qu objetos y clases pueden acceder a qu

    variables o a qu mtodos.

  • 7

    De cualquier forma, el hecho de encapsular las variables y las funciones miembro

    relacionadas proporciona dos importantes beneficios a los programadores de

    aplicaciones:

    Capacidad de crear mdulos: El cdigo fuente de un objeto puede

    escribirse y mantenerse independiente del cdigo fuente del resto de los

    objetos. De esta forma, un objeto puede pasarse fcilmente de una parte a

    otra del programa. Podemos dejar nuestra bicicleta a un amigo, y sta

    seguir funcionando.

    Proteccin de informacin: Un objeto tendr una interfaz pblica

    perfectamente definida que otros objetos podrn usar para comunicarse

    con l. De esta forma, los objetos pueden mantener informacin privada y

    pueden cambiar el modo de operar de sus funciones miembros sin que esto

    afecte a otros objetos que usen estas funciones miembro. Es decir, no

    necesitamos entender cmo funciona el mecanismo de cambio de marcha

    para hacer uso de l.

    3. ORIGEN

    Los conceptos de la programacin orientada a objetos tienen origen en Simula 67,

    un lenguaje diseado para hacer simulaciones, creado por OleJohan Dahl y

    Kristen Nygaard, del Centro de Cmputo Noruego en Oslo. En este centro se

    trabajaba en simulaciones de naves, que fueron confundidas por la explosin

    combinatoria de cmo las diversas cualidades de diferentes naves podan afectar

    unas a las otras. La idea surgi al agrupar los diversos tipos de naves en diversas

    clases de objetos, siendo responsable cada clase de objetos de definir sus propios

    datos y comportamientos. Fueron refinados ms tarde en Smalltalk, desarrollado

    en Simula en Xerox PARC (cuya primera versin fue escrita sobre Basic) pero

    diseado para ser un sistema completamente dinmico en el cual los objetos se

    podran crear y modificar sobre la marcha (en tiempo de ejecucin) en lugar de

    tener un sistema basado en programas estticos.

    La programacin orientada a objetos se fue convirtiendo en el estilo de

    programacin dominante a mediados de los aos ochenta, en gran parte debido a

    la influencia de C++, una extensin del lenguaje de programacin C. Su

    dominacin fue consolidada gracias al auge de las Interfaces grficas de usuario,

    para las cuales la programacin orientada a objetos est particularmente bien

    adaptada. En este caso, se habla tambin de programacin dirigida por eventos.

  • 8

    Las caractersticas de orientacin a objetos fueron agregadas a muchos lenguajes

    existentes durante ese tiempo, incluyendo ADA, BASIC, Lisp+, Pascal, entre otros.

    La adicin de estas caractersticas a los lenguajes que no fueron diseados

    inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la

    capacidad de mantenimiento del cdigo. Los lenguajes orientados a objetos

    "puros", por su parte, carecan de las caractersticas de las cuales muchos

    programadores haban venido a depender. Para saltar este obstculo, se hicieron

    muchas tentativas para crear nuevos lenguajes basados en mtodos orientados a

    objetos, pero permitiendo algunas caractersticas imperativas de maneras

    "seguras". El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado

    lenguaje con esos objetivos, pero ahora ha sido esencialmente reemplazado por

    Java, en gran parte debido a la aparicin de Internet y a la implementacin de la

    mquina virtual de Java en la mayora de navegadores. PHP en su versin 5 se ha

    modificado soporta una orientacin completa a objetos, cumpliendo todas las

    caractersticas propias de la orientacin a objetos.

    4. CONCEPTOS FUNDAMENTALES

    La programacin orientada a objetos es una forma de programar que trata de

    encontrar una solucin a estos problemas. Introduce nuevos conceptos, que

    superan y amplan conceptos antiguos ya conocidos. Entre ellos destacan los

    siguientes:

    Clase: Definiciones de las propiedades y comportamiento de un tipo de

    objeto concreto. La instanciacin es la lectura de estas definiciones y la

    creacin de un objeto a partir de ella.

    Herencia: Por ejemplo, herencia de la clase C a la clase D, es la facilidad

    mediante la cual la clase D hereda en ella cada uno de los atributos y

    operaciones de C, como si esos atributos y operaciones hubiesen sido

    definidos por la misma D. Por lo tanto, puede usar los mismos mtodos y

    variables pblicas declaradas en C. Los componentes registrados como

    privados (private) tambin se heredan, pero como no pertenecen a la clase,

    se mantienen escondidos al programador y slo pueden ser accedidos a

    travs de otros mtodos pblicos. Esto es as para mantener hegemnico el

    ideal de POO.

    Objeto: Instancia de una clase. Entidad provista de un conjunto de

    propiedades o atributos (datos) y de comportamiento o funcionalidad

  • 9

    (mtodos), los mismos que consecuentemente reaccionan a eventos. Se

    corresponden con los objetos reales del mundo que nos rodea, o con

    objetos internos del sistema (del programa). Es una instancia a una clase.

    Mtodo: Algoritmo asociado a un objeto (o a una clase de objetos), cuya

    ejecucin se desencadena tras la recepcin de un mensaje. Desde el punto

    de vista del comportamiento, es lo que el objeto puede hacer. Un mtodo

    puede producir un cambio en las propiedades del objeto, o la generacin de

    un evento con un nuevo mensaje para otro objeto del sistema.

    Evento: Es un suceso en el sistema (tal como una interaccin del usuario

    con la mquina, o un mensaje enviado por un objeto). El sistema maneja el

    evento enviando el mensaje adecuado al objeto pertinente. Tambin se

    puede definir como evento la reaccin que puede desencadenar un objeto;

    es decir, la accin que genera.

    Atributos: Caractersticas que tiene la clase.

    Mensaje: Una comunicacin dirigida a un objeto, que le ordena que ejecute

    uno de sus mtodos con ciertos parmetros asociados al evento que lo

    gener.

    Propiedad o Atributo: Contenedor de un tipo de datos asociados a un

    objeto (o a una clase de objetos), que hace los datos visibles desde fuera

    del objeto y esto se define como sus caractersticas predeterminadas, y

    cuyo valor puede ser alterado por la ejecucin de algn mtodo.

    Estado Interno: Es una variable que se declara privada, que puede ser

    nicamente accedida y alterada por un mtodo 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

    clase.

    Componentes de un Objeto: Atributos, identidad, relaciones y mtodos.

    Identificacin de un Objeto: Un objeto se representa mediante una tabla o

    identidad que est compuesta por sus atributos y funciones

    correspondientes.

    En comparacin con un lenguaje imperativo, una variable no es ms que un

    contenedor interno del atributo del objeto o de un estado interno, as como la

    funcin es un procedimiento interno del mtodo del objeto.

  • 10

    5. CARACTERSTICAS DE LA PROGRAMACIN ORIENTADA A OBJETOS

    (POO).

    Existe un acuerdo acerca de qu caractersticas contempla la orientacin a

    objetos. Las caractersticas siguientes son las ms importantes:

    Abstraccin: Denota las caractersticas 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 cmo se implementan estas caractersticas. Los procesos, las

    funciones o los mtodos pueden tambin ser abstrados y, cuando lo estn,

    una variedad de tcnicas son requeridas para ampliar una abstraccin. El

    proceso de abstraccin permite seleccionar las caractersticas relevantes

    dentro de un conjunto e identificar comportamientos comunes para definir

    nuevos tipos de entidades en el mundo real. La abstraccin es clave en el

    proceso de anlisis y diseo 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 todos los elementos que pueden

    considerarse pertenecientes a una misma entidad, al mismo nivel de

    abstraccin. Esto permite aumentar la cohesin de los componentes del

    sistema. Algunos autores confunden este concepto con el principio de

    ocultacin, principalmente porque se suelen emplear conjuntamente.

    Modularidad: Se denomina modularidad a la propiedad que permite

    subdividir una aplicacin en partes ms pequeas (llamadas mdulos),

    cada una de las cuales debe ser tan independiente como sea posible de la

    aplicacin en s y de las restantes partes. Estos mdulos se pueden

    compilar por separado, pero tienen conexiones con otros mdulos. Al igual

    que la encapsulacin, los lenguajes soportan la modularidad de diversas

    formas.

    Principio de Ocultacin: Cada objeto est aislado del exterior, es un

    mdulo natural, y cada tipo de objeto expone una interfaz a otros objetos

    que especifica cmo pueden interactuar con los objetos de la clase. El

    aislamiento protege a las propiedades de un objeto contra su modificacin

    por quien no tenga derecho a acceder a ellas solamente los propios

    mtodos internos del objeto pueden acceder a su estado. Esto asegura que

  • 11

    otros objetos no puedan cambiar el estado interno de un objeto de manera

    inesperada, 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

    abstraccin. La aplicacin 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 invocacin de un comportamiento en una

    referencia producir el comportamiento correcto para el tipo real del objeto

    referenciado. Cuando esto ocurre en tiempo de ejecucin, esta ltima

    caracterstica se llama asignacin tarda o asignacin dinmica. Algunos

    lenguajes proporcionan medios ms estticos (en tiempo de compilacin)

    de polimorfismo, tales como las plantillas y la sobrecarga de operadores de

    C++.

    Herencia: Las clases no se encuentran aisladas, sino que se relacionan

    entre s, formando una jerarqua de clasificacin. 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 comn. Cuando un objeto

    hereda de ms de una clase se dice que hay herencia mltiple siendo de

    alta complejidad tcnica por lo cual suele recurrirse a la herencia virtual

    para evitar la duplicacin de datos.

    Recoleccin de Basura: La recoleccin de basura o garbage collection es

    la tcnica por la cual el entorno de objetos se encarga de destruir

    automticamente, 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 asignacin o liberacin de

    memoria, ya que el entorno la asignar al crear un nuevo objeto y la

    liberar cuando nadie lo est usando. En la mayora de los lenguajes

  • 12

    hbridos que se extendieron para soportar el Paradigma de Programacin

    Orientada a Objetos como C++ u Object Pascal, esta caracterstica no

    existe y la memoria debe desasignarse expresamente.

  • 13

    RESMEN

    La Programacin Orientada a Objetos (POO), es un paradigma que surgi en los aos

    70s que utiliza objetos como elementos fundamentales de la programacin. Un objeto

    es una abstraccin de algn hecho o ente del mundo real, con atributos que

    representan sus caractersticas o propiedades, y mtodos que emulan su

    comportamiento o actividad. Todas las propiedades y mtodos comunes a los objetos

    se encapsulan o agrupan en clases. Una clase es una plantilla, un prototipo para crear

    objetos; se dice que cada objeto es una instancia o ejemplar de una clase.

    La POO nace a raz de facilitar la programacin de aplicaciones ya que anteriormente

    se realizaba la programacin modular, la cual generaba muchos programas de

    grandes longitudes y de difcil consecucin de parte de otro programador. La POO

    facilita dicha programacin inclusive para facilitar el seguimiento por parte de otros

    programadores.

  • 14

    BIBLIOGRAFA

    Qu es la Programacin Orientada a Objetos. Miguel ngel lvarez. 24/07/2001.

    http://www.capacinet.gob.mx/Cursos/Tecnologia%20amiga/desarrolladordesoftwar

    e/POO_SE.pdf

    Programacin Orientada a Objetos. Wikipedia. ltima modificacin 19/03/2015.

    http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos.

    Introduccin a la Programacin Orientada a Objetos. Luis R. Izquierdo.

    http://luis.izqui.org/resources/ProgOrientadaObjetos.pdf