• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introduccion a la programacion orientada a objetos
 

Introduccion a la programacion orientada a objetos

on

  • 475 views

conceptualizacion

conceptualizacion

Statistics

Views

Total Views
475
Views on SlideShare
466
Embed Views
9

Actions

Likes
0
Downloads
6
Comments
0

2 Embeds 9

http://unimayorpoo.blogspot.com 7
http://unimayorpoo.blogspot.mx 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introduccion a la programacion orientada a objetos Introduccion a la programacion orientada a objetos Document Transcript

    • PROGRAMACION ORIENTADA A OBJETOS IICONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS FABIAN DORADO CARVAJAL SIMEON CARDENAS ING. PEDRO ALVAREZ INSTITUCION UNIVERSITARIA COLEGIO MAYOR DEL CAUCA FACULTAD DE INGENIERIA TECNOLOGIA EN DESARROLLO DE SOFTWARE POPAYAN 2013
    • PROGRAMACION ORIENTADA A OBJETOSLa orientación a objetos es un paradigma de programación que facilita la creación desoftware de calidad por sus factores que potencian el mantenimiento, la extensión y lareutilización del software generado bajo este paradigma.La programación orientada a objetos trata de amoldarse al modo de pensar del hombre yno al de la máquina. Esto es posible gracias a la forma racional con la que se manejan lasabstracciones que representan las entidades del dominio del problema, y a propiedadescomo la jerarquía o el encapsulamiento.El elemento básico de este paradigma no es la función (elemento básico de laprogramación estructurada), sino un ente denominado objeto. Un objeto es larepresentación de un concepto para un programa, y contiene toda la informaciónnecesaria para abstraer dicho concepto: los datos que describen su estado y lasoperaciones que pueden modificar dicho estado, y determinan las capacidades del objeto.Java incorpora el uso de la orientación a objetos como uno de los pilares básicos de sulenguajeTIPO DE DATO ABSTRACTO (TDA)Con mucha frecuencia se utilizan los términos TDA y Abstracción de Datos de maneraequivalente, y esto es debido a la similitud e interdependencia de ambos. Sin embargo, esimportante definir por separado los dos conceptos.Los Lenguajes de Programación Orientados a Objetos son lenguajes formados pordiferentes métodos o funciones y que son llamados en el orden en que el programa lorequiere, o el usuario lo desea. La abstracción de datos consiste en ocultar lascaracterísticas de un objeto y obviarlas, de manera que solamente utilizamos el nombredel objeto en nuestro programa. Esto es similar a una situación de la vida cotidiana.Cuando yo digo la palabra “perro”, usted no necesita que yo le diga lo que hace el perro.Usted ya sabe la forma que tiene un perro y también sabe que los perros ladran. Demanera que yo abstraigo todas las características de todos los perros en un solo término,al cual llamo “perro”. A esto se le llama ‘Abstracción’ y es un concepto muy útil en laprogramación, ya que un usuario no necesita mencionar todas las características yfunciones de un objeto cada vez que éste se utiliza, sino que son declaradas porseparado en el programa y simplemente se utiliza el término abstracto (“perro”) paramencionarlo.En el ejemplo anterior, “perro” es un Tipo de Dato Abstracto y todo el proceso de definirlo,implementarlo y mencionarlo es a lo que llamamos Abstracción de Datos.Vamos a poner un ejemplo real de la programación. Supongamos que en algún Lenguajede Programación Orientado a Objetos un pequeño programa saca el área de unrectángulo de las dimensiones que un usuario decida. Pensemos también que el usuarioprobablemente quiera saber el área de varios rectángulos. Sería muy tedioso para elprogramador definir la multiplicación de ‘base’ por ‘altura’ varias veces en el programa, CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 2
    • además que limitaría al usuario a sacar un número determinado de áreas. Por ello, elprogramador puede crear una función denominada ‘Área’, la cual va a ser llamada elnúmero de veces que sean necesitadas por el usuario y así el programador se evitamucho trabajo, el programa resulta más rápido, más eficiente y de menor longitud. Paralograr esto, se crea el método Área de una manera separada de la interfaz gráficapresentada al usuario y se estipula ahí la operación a realizar, devolviendo el valor de lamultiplicación. En el método principal solamente se llama a la función Área y el programahace el resto.Al hecho de guardar todas las características y habilidades de un objeto por separado sele llama Encapsulamiento y es también un concepto importante para entender laestructuración de datos. Es frecuente que el Encapsulamiento sea usado como unsinónimo del Ocultación de información, aunque algunos creen que no es así.VENTAJAS DE USO:-Reusabilidad (mecanismos de abstracción y herencia)-En programación convencional: uso de funciones y procedimiento-Adecuación a entornos de bases de datos.-Idónea para tratamiento de Interfaces de Usuario.- Adecuada en prototipos y simulación.-Construcción de sistemas complejos a partir de componentes.-Modelado más fiel del mundo real.-Estimación de reducción de 40% con respecto la programación convencionalOtras Ventajas de POO-Mejor mantenimiento.-Estructuras más reales de la información.-Escalabilidad.-Adaptabilidad.-Más apropiada para aplicaciones dirigidas por eventos.INCONVENIENTES DE POO-Necesidades de estandarización: Notación de Modelado ( , j (OMG, Object ManagementGroup).Lenguajes de Programación.-Coste de conversión de software legado CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 3
    • CLASE El elemento básico de la programación orientada a objetos en Java es la clase. Una clasedefine la forma y comportamiento de un objeto. Para crear una clase sólo se necesita unarchivo fuente que contenga la palabra clave reservada class seguida de un identificadorlegal y un bloque delimitado por dos llaves para el cuerpo de la clase. class MiPunto. {}Un archivo de Java debe tener el mismo nombre que la clase que contiene, y se les sueleasignar la extensión ".java". Por ejemplo la clase MiPunto se guardaría en un fichero quese llamase MiPunto.java. Hay que tener presente que en Java se diferencia entremayúsculas y minúsculas; el nombre de la clase y el de archivo fuente han de serexactamente iguales.Aunque la clase MiPunto es sintácticamente correcta, es lo que se viene a llamaruna clase vacía, es decir, una clase que no hace nada. Las clases típicas de Javaincluirán variables y métodos de instancia. Los programas en Java completos constaránpor lo general de varias clases de Java en distintos archivos fuente.Una clase es una plantilla para un objeto. Por lo tanto define la estructura de un objeto ysu interfaz funcional, en forma de métodos. Cuando se ejecuta un programa en Java, elsistema utiliza definiciones de clase para crear instancias de las clases, que son losobjetos reales. Los términos instancia y objeto se utilizan de manera indistinta. La formageneral de una definición de clase es:class Nombre_De_Clase { tipo_de_variable nombre_de_atributo1; tipo_de_variable nombre_de_atributo2; // . . . tipo_devuelto nombre_de_método1( lista_de_parámetros ) { cuerpo_del_método1; } CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 4
    • tipo_devuelto nombre_de_método2( lista_de_parámetros ) { cuerpo_del_método2; } // . . .}Los tipos tipo_de_variable y tipo_devuelto, han de ser tipos simples Java o nombres deotras clases ya definidas. Tanto Nombre_De_Clase, comolos nombre_de_atributo y nombre_de_método, han de ser identificadores Java válidos.OBJETOSEn el paradigma de programación orientada a objetos (POO, o bien OOP en inglés),un objeto se define como la unidad que en tiempo de ejecución realiza las tareas deun programa. También a un nivel más básico se define como la instancia de una clase.Estos objetos interactúan unos con otros, en contraposición a la visión tradicional en lacual un programa es una colección de subrutinas (funciones o procedimientos), osimplemente una lista de instrucciones para el computador. Cada objeto es capaz derecibir mensajes, procesar datos y enviar mensajes a otros objetos de manera similar aun servicio.En el mundo de la programación orientada a objetos (POO), un objeto es el resultado dela instanciación de una clase. Una clase es el anteproyecto que ofrece la funcionalidad enella definida, pero ésta queda implementada sólo al crear una instancia de la clase, en laforma de un objeto. Por ejemplo: dado un plano para construir sillas (una clase denombre clase_silla), entonces una silla concreta, en la que podemos sentarnos,construida a partir de este plano, sería un objeto de clase_silla. Es posible crear(construir) múltiples objetos (sillas) utilizando la definición de la clase (plano) anterior. Losconceptos de clase y objetos son análogos a los de tipo de datos y variable; es decir,definida una clase podemos crear objetos de esa clase, igual que disponiendo de un CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 5
    • determinado tipo de dato (por ejemplo el tipo entero), podemos definir variables de dichotipo: int a,b; ( int es un tipo de dato y a y b son variables de tipo entero con las que podemos operar) Para utilizar la funcionalidad definida en una clase en particular (salvo en las clases abstractas), primeramente es necesario crear un objeto de esa clase. De la misma manera, para una persona que desea sentarse, las especificaciones para construir una silla serán de poca utilidad; lo que se necesita es una silla real construida a partir de esas especificaciones. Siguiendo con la analogía anterior, también se puede decir que para hacer operaciones aritméticas, de nada sirve por sí solo el tipo entero (int); para ello necesitamos variables (o constantes) con las que operar.LOS ATRIBUTOSLos datos se encapsulan dentro de una clase declarando variables dentro de las llaves deapertura y cierre de la declaración de la clase, variables que se conocen como atributos.Se declaran igual que las variables locales de un método en concreto.Por ejemplo, este es un programa que declara una clase MiPunto, con dos atributosenteros llamados x e y.class MiPunto { int x, y;}Los atributos se pueden declarar con dos clases de tipos: un tipo simple Java (yadescritos), o el nombre de una clase (será una referencia a objeto, véase el punto C.a deeste mismo apartado).Cuando se realiza una instancia de una clase (creación de un objeto) se reservará en lamemoria un espacio para un conjunto de datos como el que definen los atributos de unaclase. A este conjunto de variables se le denomina variables de instancia. CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 6
    • METODOSEn la programación orientada a objetos, un método es una subrutina asociadaexclusivamente a una clase (llamados métodos de clase o métodos estáticos) o aun objeto (llamados métodos de instancia). Análogamente a los procedimientos enlos lenguajes imperativos, un método consiste generalmente de una serie de sentenciaspara llevar a cabo una acción, un juego de parámetros de entrada que regularán dichaacción y o, posiblemente, un valor de salida (o valor de retorno) de algún tipo.Algunos lenguajes de programación asumen que un método debe de mantenerel invariante del objeto al que está asociado asumiendo también que éste es válidocuando el método es invocado. En lenguajes compilados dinámicamente, los métodospueden ser objetos de primera clase, y en este caso se puede compilar un método sinasociarse a ninguna clase en particular, y luego asociar el vínculo o contrato entre elobjeto y el método en tiempo de ejecución. En cambio en lenguajes no compiladosdinámicamente o tipados estáticamente, se acude a precondiciones para regular losparámetros del método y postcondiciones para regular su salida (en caso de tenerla). Sialguna de las precondiciones o postcondiciones es falsa el método genera una excepción.Si el estado del objeto no satisface la invariante de su clase al comenzar o finalizar unmétodo, se considera que el programa tiene un error de programación.La diferencia entre un procedimiento (generalmente llamado función si devuelve un valor)y un método es que éste último, al estar asociado con un objeto o clase en particular,puede acceder y modificar los datos privados del objeto correspondiente de forma tal quesea consistente con el comportamiento deseado para el mismo. Así, es recomendableentender a un método no como una secuencia de instrucciones sino como la forma enque el objeto es útil (el método para hacer su trabajo). Por lo tanto, podemos considerar almétodo como el pedido a un objeto para que realice una tarea determinada o como la víapara enviar un mensaje al objeto y que éste reaccione acorde a dicho mensajeENCAPSULAMIENTOEn programación orientada a objetos, se denomina encapsulamiento al ocultamiento delestado, es decir, de los datos miembro, de un objeto de manera que sólo se puedecambiar mediante las operaciones definidas para ese objeto.Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera sereduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datosasociados a un objeto contra su modificación por quien no tenga derecho a acceder aellos, eliminando efectos secundarios e interacciones.De esta forma el usuario de la clase puede obviar la implementación de los métodos ypropiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que el usuariopueda cambiar su estado de maneras imprevistas e incontroladas.Como se puede observar de los diagramas, las variables del objeto se localizan en elcentro o núcleo del objeto. Los métodos rodean y esconden el núcleo del objeto de otros CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 7
    • objetos en el programa. Al empaquetamiento de las variables de un objeto con laprotección de sus métodos se le llama encapsulamiento. Típicamente, el encapsulamientoes utilizado para esconder detalles de la puesta en práctica no importantes de otrosobjetos. Entonces, los detalles de la puesta en práctica pueden cambiar en cualquiertiempo sin afectar otras partes del programa.Formas de encapsular 1. Estándar (Predeterminado) 2. Abierto : Hace que el miembro de la clase pueda ser accedido desde el exterior de la Clase y cualquier parte del programa. 3. Protegido : Solo es accesible desde la Clase y las clases que heredan (a cualquier nivel). 4. Semi cerrado : Solo es accesible desde la clase heredada 5. Cerrado : Solo es accesible desde la Clase.En el encapsulamiento hay analizadores que pueden ser semánticos y sintácticos.PRINCIPIO DE OCULTAMIENTOEn programación orientada a objetos el principio de ocultación hace referencia a quelos atributos privados de un objeto no pueden ser modificados ni obtenidos a no ser quese haga a través del paso de un mensaje (invocación a métodos, ya sean estos funcioneso procedimientos).POLIMORFISMOEn programación orientada a objetos el polimorfismo se refiere a la posibilidad de enviarun mensaje a un grupo de objetos cuya naturaleza puede ser heterogénea. El únicorequisito que deben cumplir los objetos que se utilizan de manera polimórfica es saberresponder al mensaje que se les envía.La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice,más allá de las obvias diferencias sintácticas.Por ejemplo, en un lenguaje de programación que cuenta con un sistema detipos dinámico (en los que las variables pueden contener datos de cualquier tipo u objetosde cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modopolimórfico sean parte de una jerarquía de clases.En lenguajes basados en clases y con un sistema de tipos de datos fuerte(independientemente de si la verificación se realiza en tiempo de compilación o deejecución), es posible que el único modo de poder utilizar objetos de manera polimórficasea que compartan una raíz común, es decir, una jerarquía de clases, ya que estoproporciona la compatibilidad de tipos de datos necesaria para que sea posible utilizar CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 8
    • una misma variable de referencia (que podrá apuntar a objetos de diversas subclases dedicha jerarquía) para enviar el mismo mensaje (o un grupo de mensajes) al grupo deobjetos que se tratan de manera polimórfica.En Java, es frecuente y profusamente aconsejada la utilización de interfaces (que es unmecanismo del lenguaje que se emplea por medio de la palabra clave Interface) paraproveer la necesaria concordancia de tipos para hacer posible el polimorfismo, tambiéncomo un contrato que debe cumplir cualquier clase que implemente una cierta interfaz ycomo una forma de documentación para los desarrolladores. A veces, en la literatura querefiere específicamente a Java se hace mención a "herencia y polimorfismo de interfaces",lo que no concuerda con los conceptos de la programación orientada a objetos porqueuna clase que implementa una interfaz sólo obtiene su tipo de datos y la obligación deimplementar sus métodos, no obtiene comportamiento ni de atributos. Esto muchas vecesresulta paradójico porque en Java frecuentemente se utiliza la mal llamada "herencia deinterfaces" para dotar a una clase con un tipo adicional (o varios) para que su uso encombinación con la agregación (colaboración o composición) permita evitar la necesidadde la herencia múltiple y favorezca una utilización más amplia del polimorfismo.No obstante, el uso de una jerarquía de clases como paso previo, es muy habitual inclusoen aquellos lenguajes en los que es posible prescindir de tal jerarquía, ya que, desde unaperspectiva conceptual, se puede decir que al pertenecer los "objetos polimórficos" asubclases de una misma jerarquía, se asegura la equivalencia semántica de los mensajesque se invocarán de modo polimórfico. Por esto, en programación orientada a objetos aveces se denomina al polimorfismo como "polimorfismo de subclase (o de subtipo)".En resumen, en la programación orientada a objetos, la esencia del polimorfismo no atañea la clase o prototipo de la que provienen los objetos. Aun así, en los lenguajes basadosen clases, es habitual (y en algunos tal vez sea el único modo) que dichos objetospertenezcan a subclases pertenecientes a una misma jerarquía. Entonces, el polimorfismodebe verse como una forma flexible de usar un grupo de objetos (como si fueran sólouno). Podría decirse que el polimorfismo en esencia refiere al comportamiento de losobjetos, no a su pertenencia a una jerarquía de clases (o a sus tipos de datos).Lo anterior se hace aún más evidente en lenguajes de programación orientada a objetosbasados en prototipos, como Self, en los que las clases no existen.POLIMORFISMO DESDE UNA INTERFAZAunque el polimorfismo es el mismo se aplique donde se aplique, el modo en que seaplica desde una interfaz puede resultar un poco más oscuro y difícil de entender. Seexpone un sencillo ejemplo (en VB-NET) comentado para entender como funcionaaplicado desde una interfaz, primero se escribe el código y luego se comenta elfuncionamiento. Nota: para no enturbiar el código en exceso, todo lo que no se declaraprivado se sobreentiende público. CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 9