1-140320014622-phpapp01 (1).pdf

download 1-140320014622-phpapp01 (1).pdf

of 14

Transcript of 1-140320014622-phpapp01 (1).pdf

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    1/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    1

    El modelo del proceso del software

    1.1. Conceptualizacin de tecnologa orientada a objetos.

    Conceptos de la Programacin tradicional.

    En la programacin tradicional, tambin conocida como programacin estructurada, unprograma o aplicacin consta de mltiples datos y funciones

    globales. El trmino global describe el hecho que todos los datos o funciones son

    visibles en todo el programa y, por lo tanto pueden ser llamados desde cualquier

    ubicacin en la aplicacin. Esta forma de programacin tiene sus orgenes en las primeras

    computadoras modernas basadas en la arquitectura Von Neuman de 1945 donde las

    instrucciones de un programa se guardaban en memoria creando el concepto de

    programa almacenado. Las instrucciones de un programa definidas dentro defunciones o

    procedimientos, eran ejecutadas por el procesador de manera secuencial afectando los

    datos del programa, los cuales eran almacenados en otras secciones de la memoria. Esta

    arquitectura es similar a la que actualmente se usa en la mayora de las computadoras

    personales. Debido a esta separacin de funciones y datos en la memoria, se ha

    desarrollado un gran nmero de lenguajes de programacin que explotan este concepto.

    Sin embargo este tipo de programacin tiene dos problemas principales:

    a) Que el programador debe organizar su programa de acuerdo a la arquitectura de la

    computadora, o que piense como la mquina.

    b) Los datos se vuelven globalmente visibles al estar separados de las funciones. Dado

    esto cualquier cambio en la estructura de los datos pudiera llegar a requerir la

    modificacin de todas las funciones del programa en correspondencia con los cambios en

    los datos.

    Conceptos de la Programacin Orientada a Objetos

    A diferencia de la programacin tradicional, la orientada a objetos tiene una estructura de

    ms alto nivel llamada objeto, que ofrece dos ventajas sobre la tradicional:

    a) Permite al programador que organice su programa de acuerdo con abstracciones

    de ms alto nivel, siendo stas ms cercanas a la manera de pensar de la gente.

    En otras palabras, los objetos son las unidades de representacin de las

    aplicaciones, por ejemplo, cuentas de bancos, reservaciones de vuelo, etc.

    b) Los datos globales desaparecen, siendo stos junto con las funciones parteinterna de los objetos. Por lo tanto cualquier cambio en la estructura de alguno de

    los datos solo deber afectar las funciones definidas en ese mismo objeto y no en

    los dems. En general, un programa orientado a objetos, se define exclusivamente

    en trminos de objetos y sus relaciones.

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    2/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    2

    Fig.1 Programacin orientada a objetos

    Los datos y funciones se guardan dentro de los objetos, como se muestra en la figura.

    Fig.2 Programacin orientada a objetos: objetos globales que contienen datos y funciones

    locales

    Hoy en da la tecnologa orientada a objetos ya no se aplica solamente a los lenguajes de

    programacin, adems se viene aplicando en el anlisis y diseo con mucho xito, al igual

    que en las bases de datos. Es que para hacer una buena programacin orientada a

    objetos hay que desarrollar todo el sistema aplicando esta tecnologa, de ah la

    importancia del anlisis y el diseo orientado a objetos.

    La programacin orientada a objetos es una de las formas ms populares de programar y

    viene teniendo gran acogida en el desarrollo de proyectos de software desde los ltimos

    aos. Esta acogida se debe a sus grandes capacidades y ventajas frente a las antiguas

    formas de programar.

    Una Perspectiva Histrica

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    3/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    3

    Tradicionalmente, la programacin fue hecha en una manera secuencial o lineal, es decir

    una serie de pasos consecutivos con estructuras consecutivas y bifurcaciones.

    Estos programas escritos al estilo espagueti no ofrecen flexibilidad y el manteneruna

    gran cantidad de lneas de cdigo en slo bloque se vuelve una tarea complicada. Frente

    a esta dificultad aparecieron los lenguajes basados en la programacin estructurada. La

    idea principal de esta forma de programacin es separar las partes complejas del

    programa en mdulos o segmentos que sean ejecutados conforme se requieran. De esta

    manera tenemos un diseo modular, compuesto por mdulos independientes que puedan

    comunicarse entre s. Poco a poco este

    Estilo de programacin fue reemplazando al estilo espagueti impuesto por la

    programacin lineal. Entonces, vemos que la evolucin que se fue dando en la

    programacin se orientaba siempre a ir descomponiendo ms el programa. Este tipo de

    descomposicin conduce directamente a la programacin orientada a objetos.

    Pues la creciente tendencia de crear programas cada vez ms grandes y complejos llev

    a los desarrolladores a crear una nueva forma de programar que les permita crear

    sistemas de niveles empresariales y con reglas de negocios muy complejas. Para estas

    necesidades ya no bastaba la programacin estructurada ni mucho menos la

    programacin lineal. Es as como aparece la programacin orientada a objetos (POO). La

    POO viene de la evolucin de la programacin estructurada; bsicamente la POO

    simplifica la programacin con la nueva filosofa y nuevos conceptos que tiene. La POO

    se basa en la dividir el programa en pequeas unidades lgicas de cdigo. A estas

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    4/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    4

    pequeas unidades lgicas de cdigo se les llama objetos. Los objetos son unidades

    independientes que se comunican entre ellos mediante mensajes

    Cules son las ventajas de un lenguaje orientado a objetos?

    Fomenta la reutilizacin y extensin del cdigo.

    Permite crear sistemas ms complejos.

    Relacionar el sistema al mundo real.

    Facilita la creacin de programas visuales.

    Construccin de prototipos

    Agiliza el desarrollo de software

    Facilita el trabajo en equipo

    Facilita el mantenimiento del software Lo interesante de la POO es que proporciona

    conceptos y herramientas con las cuales se modela y representa el mundo real tan

    fielmente como sea posible.

    El modelo Orientado a Objetos

    Conceptos bsicos: Objetos, Clases, Herencia, Envo de mensajes (mtodos).

    La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un

    paradigma de programacin que usa objetos y sus interacciones, para disear

    aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo

    herencia, abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a principios

    de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes de

    programacin que soportan la orientacin a objetos. Los objetos son entidades que tienen

    un determinado comportamiento (mtodo) e identidad.

    El estado est compuesto de datos, ser 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 objetocontiene 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

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    5/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    5

    para poder tratar los atributos con los que cuenta. El programador debe pensar

    indistintamente en ambos conceptos, sin separar nadarle mayor importancia a alguno de

    ellos. Hacerlo podra producir el hbito errneo de crear clases contenedoras de

    informacin por un lado y clases con 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 programacinestructurada 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

    slo se escriben funciones que procesan datos. Los programadores que emplean POO,

    en cambio, primero definen objetos para luego enviarles mensajes solicitndoles que

    realicen sus mtodos por s mismos.

    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 ellas.

    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 declaradasen 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 OOP.

    Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de

    comportamiento o funcionalidad (mtodos) 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.

    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

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    6/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    6

    como evento, a la reaccin que puede desencadenar un objeto, es decir la accin

    que genera.

    Mensaje: una comunicacin dirigida a un objeto, que le ordena que ejecute uno de

    sus mtodos con ciertos parmetros asociados al evento que cogener.

    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 sedefine 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 por medio de una tabla o

    entidad 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.

    Caractersticas de la 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 a 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

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    7/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    7

    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 especfica 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, solamentelos propios mtodos 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. 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: la habilidad de tomar varias formas, en java es la habilidad de una

    variable por referencia de cambiar su comportamiento en funcin de que instancia de

    objeto posee. Esto permite tratar de la misma manera, como objetos de la superclase,

    a mltiples objetos de la subclase, seleccionado en cada caso los mtodos

    apropiados.

    Por ejemplo, dada una clase Vehicular, la caracterstica de polimorfismo habilita al

    programador para definir mtodos en sus subclases (por ejemplo: coche, camin y

    moto). No importa qu tipo de Vehculo sea ya que si llamamos al mtodo

    getNumeroruedas() llamara al propio de cada subclase, pero el objeto deja de ser

    Vehculo tambin.

    Herencia: las clases no estn 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 (yextender) 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.

    Recoleccin de basura: la recoleccin de basura o garbage collector(basurero) 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

    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 manualmente. Repasando, la programacin orientada a objetos es un

    paradigma que utiliza objetos como elementos fundamentales en la construccin de la

    solucin. Surgen los aos 70. Un objeto es una abstraccin de algn hecho o ente del

    mundo real que tiene atributos que representan sus caractersticas o propiedades y

    mtodos que representan su comportamiento o acciones que realizan. Todas las

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    8/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    8

    propiedades y mtodos comunes a los objetos se encapsulan o se agrupan en clases.

    Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los

    objetos son instancias de clases

    Lenguajes orientados a objetos

    Simula (1967) es aceptado como el primer lenguaje que posee las caractersticas

    principales de un lenguaje orientado a objetos. Fue creado para hacer programas de

    simulacin, en donde los "objetos" son la representacin de la informacin ms

    importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo cannico, y con el que

    gran parte de la teora de la programacin orientada a objetos se ha desarrollado.

    Entre los lenguajes orientados a objetos se destacan los siguientes:

    ABAP

    ABL Lenguaje de programacin de OpenEdge de Progress Software ActionScript

    ActionScript 3

    Ada

    C++

    C#

    Clarion

    Clipper (lenguaje de programacin) (Versin 5.x con librera de objetosClass(y))

    D

    Object Pascal (Embarcadero Delphi)

    Gambas Harbour

    Eiffel

    Java

    JavaScript (la herencia se realiza por medio de la programacin basada en

    prototipos)

    Lexico (en castellano)

    Objective-C

    Ocaml

    Oz

    R Perl (soporta herencia mltiple. La resolucin se realiza en preorden,pero puede

    modificarse al algoritmolinearization C3 por medio del mdulo Class::C3 en CPAN)

    PHP (a partir de su versin 5)

    PowerBuilder

    Python

    Ruby

    Smalltalk (Entorno de objetos puro)

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    9/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    9

    Magik (SmallWorld)

    Vala

    VB.NET

    Visual FoxPro (en su versin 6)

    Visual Basic 6.0

    Visual Objects XBase++

    Lenguaje DRP

    Lenguajes de programacin Scala (lenguaje usado por Twitter)

    Muchos de estos lenguajes de programacin no son puramente orientados a objetos, sino

    que son hbridos que combinan la POO con otros paradigmas. Al igual que C++ otros

    lenguajes, como OOCOBOL,OOLISP,OOPROLOG y Object REXX, han sido creados

    aadiendo extensiones orientadas a objetos a un lenguaje de programacin clsico. Un

    nuevo paso en la abstraccin de paradigmas de programacin es laProgramacin

    Orientada a Aspectos (POA). Aunque es todava una metodologa en estado de

    maduracin, cada vez atrae a ms investigadores e incluso proyectos comerciales en todo

    el mundo.

    Estructura de un objeto

    Un objeto puede considerarse como una especie de cpsula dividida en tres partes:

    relaciones, propiedades, mtodos. Cada uno de estos componentes desempea un papel

    totalmente independiente:

    Las relaciones permiten que el objeto se inserte en la organizacin y estn

    formadas esencialmente por punteros a otros objetos.

    Las propiedades distinguen un objeto determinado de los restantes que formanparte de la misma organizacin y tiene valores que dependen de la propiedad de

    que se trate. Las propiedades de un objeto pueden ser heredadas a sus

    descendientes en la organizacin.

    Los mtodos son las operaciones que pueden realizarse sobre el objeto, que

    normalmente estarn incorporados en forma de programas (cdigo)que el objeto

    es capaz de ejecutar y que tambin pone a disposicin de sus descendientes a

    travs de la herencia.

    Encapsulamiento y ocultacin

    Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y

    programas, todos ellos relacionados entre s, como si estuvieran encerrados

    conjuntamente en una cpsula. Esta propiedad (encapsulamiento), es una de las

    caractersticas fundamentales en la OOP. Los objetos son inaccesibles, e impiden que

    otros objetos, los usuarios, o incluso los programadores conozcan cmo est distribuida la

    informacin o qu informacin hay disponible. Esta propiedad de los objetos se denomina

    http://es.wikipedia.org/w/index.php?title=OOCOBOL&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOLISP&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOLISP&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOPROLOG&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOPROLOG&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOPROLOG&action=edit&redlink=1http://es.wikipedia.org/wiki/Object_REXXhttp://es.wikipedia.org/wiki/Object_REXXhttp://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectoshttp://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectoshttp://es.wikipedia.org/wiki/Object_REXXhttp://es.wikipedia.org/wiki/Object_REXXhttp://es.wikipedia.org/w/index.php?title=OOPROLOG&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOPROLOG&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOLISP&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOLISP&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOCOBOL&action=edit&redlink=1http://es.wikipedia.org/w/index.php?title=OOCOBOL&action=edit&redlink=1
  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    10/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    10

    ocultacin de la informacin. Esto no quiere decir, sin embargo, que sea imposible

    conocer lo necesario respecto a un objeto y a lo que contiene. Si as fuera no se podra

    hacer gran cosa con l. Lo que sucede es que las peticiones de informacin a un objeto.

    Deben realizarse a travs de mensajes dirigidos a l, con la orden de realizar la operacin

    pertinente. La respuesta a estas rdenes ser la informacin requerida, siempre que el

    objeto considere que quien enva el mensaje est autorizado para obtenerla. El hecho deque cada objeto sea una cpsula facilita enormemente que un objeto determinado pueda

    ser transportado a otro punto de la organizacin, o incluso a otra organizacin totalmente

    diferente que precise de l. Si el objeto ha sido bien construido, sus mtodos seguirn

    funcionando en el nuevo entorno sin problemas. Esta cualidad hace que la OOP sea muy

    apta para la reutilizacin de programas.

    Organizacin de los objetos

    En principio, los objetos forman siempre una organizacin jerrquica, en el sentido de que

    ciertos objetos son superiores a otros de cierto modo.

    Existen varios tipos de jerarquas: sern simples cuando su estructura pueda ser

    representada por medio de un "rbol". En otros casos puede ser ms compleja.

    En cualquier caso, sea la estructura simple o compleja, podrn distinguirse en ella tres

    niveles de objetos.

    La raz de la jerarqua. Se trata de un objeto nico y especial. Este se caracteriza por

    estar en el nivel ms alto de la estructura y suele recibir un nombre muy genrico, que

    indica su categora especial, como por ejemplo objeto madre, Raz o Entidad.

    Los objetos intermedios. Son aquellos que descienden directamente de la raz y que a su

    vez tienen descendientes. Representan conjuntos o clases de objetos, que pueden sermuy generales o muy especializados, segn la aplicacin. Normalmente reciben nombres

    genricos que denotan al conjunto de objetos que representan, por ejemplo, VENTANA,

    CUENTA, FICHERO. En un conjunto reciben el nombre de clases o tipos si descienden

    de otra clase o subclase.

    Los objetos terminales. Son todos aquellos que descienden de una clase o subclase y no

    tienen descendientes. Suelen llamarse casos particulares, instancias o tems porque

    representan los elementos del conjunto representado por la clase o subclase a la que

    pertenecen.

    Veamos ahora en detalle los tres elementos mencionados en "Estructura de un Objeto".

    1. Relaciones. Las relaciones entre objetos son, precisamente, los enlaces que permiten

    a un objeto relacionarse con aquellos que forman parte de la misma organizacin. Las hay

    de dos tipos fundamentales:

    a. Relaciones jerrquicas. Son esenciales para la existencia misma de la

    aplicacin porque la construyen. Son bidireccionales, es decir, un objeto es padre

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    11/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    11

    de otro cuando el primer objeto se encuentra situado inmediatamente encima del

    segundo en la organizacin en la que ambos forman parte; asimismo, si un objeto

    es padre de otro, el segundo es hijo del primero (en la fig. 2, B es padre de D,E y

    F, es decir, D,E y F son hijos de B; en la fig. 3, los objetos B y C son padres de F,

    que a su vez es hijo de ambos). Una organizacin jerrquica simple puede

    definirse como aquella en la que un objeto puede tener un solo padre, mientras

    que en una organizacin jerrquica compleja un hijo puede tener varios padres).

    b. Relaciones semnticas. Se refieren a las relaciones que no tienen nada que

    ver con la organizacin de la que forman parte los objetos que las establecen. Sus

    propiedades y consecuencia solo dependen de los objetos en s mismos (de su

    significado) y no de su posicin en la organizacin. Se puede ver mejor con un

    ejemplo: supongamos que vamos a construir un diccionario informatizado que

    permita al usuario obtener la definicin de una palabra cualquiera. Supongamos

    que, en dicho diccionario, las palabras son objetos y que la organizacin jerrquica

    es la que proviene de forma natural de la estructura de nuestros conocimientos

    sobre el mundo. La raz del diccionario podra llamarse TEMAS. De ste trmino

    genrico descendern tres grandes ramas de objetos llamadas VIDA, MUNDO y

    HOMBRE.

    El primero (vida) comprender las ciencias biolgicas: Biologa y Medicina.

    El segundo (mundo), las ciencias de la naturaleza inerte: las Matemticas,

    la Fsica, la Qumica y la Geologa.

    El tercero (hombre) comprender las ciencias humanas: la Geografa, la

    Historia, etc.

    2. Propiedades.Todo objeto puede tener cierto nmero de propiedades, cada una

    de las cuales tendr, a su vez, uno o varios valores. En OOP, las propiedades

    corresponden a las clsicas "variables" de la programacin estructurada. Son, por

    lo tanto, datos encapsulados dentro del objeto, junto con los mtodos (programas)

    y las relaciones (punteros a otros objetos). Las propiedades de un objeto pueden

    tener un valor nico o pueden contener un conjunto de valores ms o menos

    estructurados (matrices, vectores, listas, etc.). Adems, los valores pueden ser de

    cualquier tipo (numrico, alfabtico, etc.) si el sistema de programacin lo permite.

    Pero existe una diferencia con las "variables", y es que las propiedades se pueden

    heredar de unos objetos a otros. En consecuencia, un objeto puede tener una

    propiedad de maneras diferentes:

    Propiedades propias. Estn formadas dentro de la cpsula del objeto.

    Propiedades heredadas. Estn definidas en un objeto diferente, antepasadode ste (padre, "abuelo", etc.). A veces estas propiedades se llaman

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    12/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    12

    propiedad miembro porque el objeto las posee por el mero hecho de sermiembro de una clase.

    3. Mtodos. Una operacin que realiza acceso a los datos. Podemos definir

    mtodo como un programa procedimental o procedural escrito en cualquier

    lenguaje, que est asociado a un objeto determinado y cuya ejecucin slo puededesencadenarse a travs de un mensaje recibido por ste o por sus

    descendientes.

    Son sinnimos de 'mtodo' todos aquellos trminos que se han aplicado

    tradicionalmente a los programas, como procedimiento, funcin, rutina, etc. Sin

    embargo, es conveniente utilizar el trmino 'mtodo' para que se distingan

    claramente las propiedades especiales que adquiere un programa en el entorno

    OOP, que afectan fundamentalmente a la forma de invocarlo (nicamente a travs

    de un mensaje) y a su campo de accin, limitado a un objeto y a sus

    descendientes, aunque posiblemente no a todos.

    Si los mtodos son programas, se deduce que podran tener argumentos, o

    parmetros. Puesto que los mtodos pueden heredarse de unos objetos a otros,

    un objeto puede disponer de un mtodo de dos maneras diferentes:

    Mtodos propios. Estn incluidos dentro de la cpsula del objeto.

    Mtodos heredados. Estn definidos en un objeto diferente, antepasado de

    ste (padre, "abuelo", etc.). A veces estos mtodos se llaman mtodos

    miembro porque el objeto los posee por el mero hecho de ser miembro de una

    clase.

    Polimorfsmo

    Una de las caractersticas fundamentales de la OOP es el polimorfsmo, que no es

    otra cosa que la posibilidad de construir varios mtodos con el mismo nombre,

    pero con relacin a la clase a la que pertenece cada uno, con comportamientos

    diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de

    clases diferentes. Estos objetos recibiran el mismo mensaje global pero

    responderan a l de formas diferentes; por ejemplo, un mensaje "+" a un objetoENTERO significara suma, mientras que para un objeto STRING significara

    concatenacin ("pegar" strings uno seguido al otro)

    Beneficios que se obtienen del desarrollo con OOP

    Da a da los costos del Hardware decrecen. As surgen nuevas reas de

    aplicacin cotidianamente: procesamiento de imgenes y sonido, bases de datos

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    13/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    13

    multimediales, automatizacin de oficinas, ambientes de ingeniera de software,

    etc. An en las aplicaciones tradicionales encontramos que definir interfaces

    hombre-mquina "a-la-Windows" suele ser bastante conveniente.

    Lamentablemente, los costos de produccin de software siguen aumentando; el

    mantenimiento y la modificacin de sistemas complejos suele ser una tareatrabajosa; cada aplicacin, (aunque tenga aspectos similares a otra) suele

    encararse como un proyecto nuevo, etc.

    Todos estos problemas an no han sido solucionados en forma completa. Pero

    como los objetos son portables (tericamente) mientras que la herencia permite la

    reusabilidad del cdigo orientado a objetos, es ms sencillo modificar cdigo

    existente porque los objetos no interaccionan excepto a travs de mensajes; en

    consecuencia un cambio en la codificacin de un objeto no afectar la operacin

    con otro objeto siempre que los mtodos respectivos permanezcan intactos. La

    introduccin de tecnologa de objetos como una herramienta conceptual paraanalizar, disear e implementar aplicaciones permite obtener aplicaciones ms

    modificables, fcilmente extendibles y a partir de componentes reusables. Esta

    reusabilidad del cdigo disminuye el tiempo que se utiliza en el desarrollo y hace

    que el desarrollo del software sea ms intuitivo porque la gente piensa

    naturalmente en trminos de objetos ms que en trminos de algoritmos de

    software.

    Problemas derivados de la utilizacin de OOP en la actualidad

    Un sistema orientado a objetos, por lo visto, puede parecer un paraso virtual. El

    problema sin embargo surge en la implementacin de tal sistema. Muchas

    compaas oyen acerca de los beneficios de un sistema orientado a objetos e

    invierten gran cantidad de recursos luego comienzan a darse cuenta que han

    impuesto una nueva cultura que es ajena a los programadores actuales.

    Especficamente los siguientes temas suelen aparecer repetidamente:

    Curvas de aprendizaje largas.Un sistema orientado a objetos ve al mundo en

    una forma nica. Involucra la conceptualizacin de todos los elementos de un

    programa, desde subsistemas a los datos, en la forma de objetos. Toda la

    comunicacin entre los objetos debe realizarse en la forma de mensajes. Esta no

    es la forma en que estn escritos los programas orientados a objetos actualmente;

    al hacer la transicin a un sistema orientado a objetos la mayora de los

    programadores deben capacitarse nuevamente antes de poder usarlo.

    Dependencia del lenguaje. A pesar de la portabilidad conceptual de los objetos

    en un sistema orientado a objetos, en la prctica existen muchas dependencias.

    Muchos lenguajes orientados a objetos estn compitiendo actualmente para

  • 7/25/2019 1-140320014622-phpapp01 (1).pdf

    14/14

    Anlisis y Modelado de Sistemas de InformacinIngeniera Informtica Plan 2010

    14

    dominar el mercado. Cambiar el lenguaje de implementacin de un sistema

    orientado a objetos no es una tarea sencilla; por ejemplo C++ soporta el concepto

    de herencia mltiple mientras que SmallTalk no lo soporta; en consecuencia la

    eleccin de un lenguaje tiene ramificaciones de diseo muy importantes.

    Determinacin de las clases.Una clase es un molde que se utiliza para crearnuevos objetos. En consecuencia es importante crear el conjunto de clases

    adecuado para un proyecto. Desafortunadamente la definicin de las clases es

    ms un arte que una ciencia. Si bien hay muchas jerarquas de clase predefinidas

    usualmente se deben crear clases especficas para la aplicacin que se est

    desarrollando. Luego, en 6 meses 1 ao se da cuenta que las clases que se

    establecieron no son posibles; en ese caso ser necesario reestructurar la

    jerarqua de clases devastando totalmente la planificacin original.

    Performance. En un sistema donde todo es un objeto y toda interaccin es a

    travs de mensajes, el trfico de mensajes afecta la performance. A medida que latecnologa avanza y la velocidad de micro procesamiento, potencia y tamao de la

    memoria aumentan, la situacin mejorar; pero en la situacin actual, un diseo

    de una aplicacin orientada a objetos que no tiene en cuenta la performance no

    ser viable comercialmente.

    Idealmente, habra una forma de atacar estos problemas eficientemente al mismo

    tiempo que se obtienen los beneficios del desarrollo de una estrategia orientada a

    objetos. Debera existir una metodologa fcil de aprender e independiente del

    lenguaje, y fcil de reestructurar que no drene la performance del sistema.