SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
PROGRAMACION ORIENTADA A OBJETOS II




CONCEPTUALIZACION 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 OBJETOS

La orientación a objetos es un paradigma de programación que facilita la creación de
software de calidad por sus factores que potencian el mantenimiento, la extensión y la
reutilización del software generado bajo este paradigma.

La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y
no al de la máquina. Esto es posible gracias a la forma racional con la que se manejan las
abstracciones que representan las entidades del dominio del problema, y a propiedades
como la jerarquía o el encapsulamiento.

El elemento básico de este paradigma no es la función (elemento básico de la
programación estructurada), sino un ente denominado objeto. Un objeto es la
representación de un concepto para un programa, y contiene toda la información
necesaria para abstraer dicho concepto: los datos que describen su estado y las
operaciones 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 su
lenguaje

TIPO DE DATO ABSTRACTO (TDA)

Con mucha frecuencia se utilizan los términos TDA y Abstracción de Datos de manera
equivalente, y esto es debido a la similitud e interdependencia de ambos. Sin embargo, es
importante definir por separado los dos conceptos.

Los Lenguajes de Programación Orientados a Objetos son lenguajes formados por
diferentes métodos o funciones y que son llamados en el orden en que el programa lo
requiere, o el usuario lo desea. La abstracción de datos consiste en ocultar las
características de un objeto y obviarlas, de manera que solamente utilizamos el nombre
del 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. De
manera 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 la
programación, ya que un usuario no necesita mencionar todas las características y
funciones de un objeto cada vez que éste se utiliza, sino que son declaradas por
separado en el programa y simplemente se utiliza el término abstracto (“perro”) para
mencionarlo.
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 Lenguaje
de Programación Orientado a Objetos un pequeño programa saca el área de un
rectángulo de las dimensiones que un usuario decida. Pensemos también que el usuario
probablemente quiera saber el área de varios rectángulos. Sería muy tedioso para el
programador 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, el
programador puede crear una función denominada ‘Área’, la cual va a ser llamada el
número de veces que sean necesitadas por el usuario y así el programador se evita
mucho trabajo, el programa resulta más rápido, más eficiente y de menor longitud. Para
lograr esto, se crea el método Área de una manera separada de la interfaz gráfica
presentada al usuario y se estipula ahí la operación a realizar, devolviendo el valor de la
multiplicación. En el método principal solamente se llama a la función Área y el programa
hace el resto.
Al hecho de guardar todas las características y habilidades de un objeto por separado se
le llama Encapsulamiento y es también un concepto importante para entender la
estructuración de datos. Es frecuente que el Encapsulamiento sea usado como un
sinó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 convencional

Otras 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 Management
Group).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 clase
define la forma y comportamiento de un objeto. Para crear una clase sólo se necesita un
archivo fuente que contenga la palabra clave reservada class seguida de un identificador
legal 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 suele
asignar la extensión ".java". Por ejemplo la clase MiPunto se guardaría en un fichero que
se llamase MiPunto.java. Hay que tener presente que en Java se diferencia entre
mayúsculas y minúsculas; el nombre de la clase y el de archivo fuente han de ser
exactamente iguales.

Aunque la clase MiPunto es sintácticamente correcta, es lo que se viene a llamar
una clase vacía, es decir, una clase que no hace nada. Las clases típicas de Java
incluirán variables y métodos de instancia. Los programas en Java completos constarán
por 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 y
su interfaz funcional, en forma de métodos. Cuando se ejecuta un programa en Java, el
sistema utiliza definiciones de clase para crear instancias de las clases, que son los
objetos reales. Los términos instancia y objeto se utilizan de manera indistinta. La forma
general 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 de
otras        clases      ya        definidas.      Tanto Nombre_De_Clase,        como
los nombre_de_atributo y nombre_de_método, han de ser identificadores Java válidos.

OBJETOS

En 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 de
un 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 la
cual un programa es una colección de subrutinas (funciones o procedimientos), o
simplemente una lista de instrucciones para el computador. Cada objeto es capaz de
recibir mensajes, procesar datos y enviar mensajes a otros objetos de manera similar a
un servicio.
En el mundo de la programación orientada a objetos (POO), un objeto es el resultado de
la instanciación de una clase. Una clase es el anteproyecto que ofrece la funcionalidad en
ella definida, pero ésta queda implementada sólo al crear una instancia de la clase, en la
forma de un objeto. Por ejemplo: dado un plano para construir sillas (una clase de
nombre 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. Los
conceptos 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 dicho
tipo:

           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 ATRIBUTOS

Los datos se encapsulan dentro de una clase declarando variables dentro de las llaves de
apertura 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 atributos
enteros llamados x e y.

class MiPunto {



    int x, y;



}



Los atributos se pueden declarar con dos clases de tipos: un tipo simple Java (ya
descritos), o el nombre de una clase (será una referencia a objeto, véase el punto C.a de
este mismo apartado).

Cuando se realiza una instancia de una clase (creación de un objeto) se reservará en la
memoria un espacio para un conjunto de datos como el que definen los atributos de una
clase. A este conjunto de variables se le denomina variables de instancia.




                               CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS        6
METODOS

En la programación orientada a objetos, un método es una subrutina asociada
exclusivamente a una clase (llamados métodos de clase o métodos estáticos) o a
un objeto (llamados métodos de instancia). Análogamente a los procedimientos en
los lenguajes imperativos, un método consiste generalmente de una serie de sentencias
para llevar a cabo una acción, un juego de parámetros de entrada que regularán dicha
acció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 mantener
el invariante del objeto al que está asociado asumiendo también que éste es válido
cuando el método es invocado. En lenguajes compilados dinámicamente, los métodos
pueden ser objetos de primera clase, y en este caso se puede compilar un método sin
asociarse a ninguna clase en particular, y luego asociar el vínculo o contrato entre el
objeto y el método en tiempo de ejecución. En cambio en lenguajes no compilados
dinámicamente o tipados estáticamente, se acude a precondiciones para regular los
parámetros del método y postcondiciones para regular su salida (en caso de tenerla). Si
alguna 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 un
mé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 que
sea consistente con el comportamiento deseado para el mismo. Así, es recomendable
entender a un método no como una secuencia de instrucciones sino como la forma en
que el objeto es útil (el método para hacer su trabajo). Por lo tanto, podemos considerar al
método como el pedido a un objeto para que realice una tarea determinada o como la vía
para enviar un mensaje al objeto y que éste reaccione acorde a dicho mensaje


ENCAPSULAMIENTO
En programación orientada a objetos, se denomina encapsulamiento al ocultamiento del
estado, es decir, de los datos miembro, de un objeto de manera que sólo se puede
cambiar mediante las operaciones definidas para ese objeto.
Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se
reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos
asociados a un objeto contra su modificación por quien no tenga derecho a acceder a
ellos, eliminando efectos secundarios e interacciones.
De esta forma el usuario de la clase puede obviar la implementación de los métodos y
propiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que el usuario
pueda cambiar su estado de maneras imprevistas e incontroladas.
Como se puede observar de los diagramas, las variables del objeto se localizan en el
centro 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 la
protección de sus métodos se le llama encapsulamiento. Típicamente, el encapsulamiento
es utilizado para esconder detalles de la puesta en práctica no importantes de otros
objetos. Entonces, los detalles de la puesta en práctica pueden cambiar en cualquier
tiempo 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 OCULTAMIENTO


En programación orientada a objetos el principio de ocultación hace referencia a que
los atributos privados de un objeto no pueden ser modificados ni obtenidos a no ser que
se haga a través del paso de un mensaje (invocación a métodos, ya sean estos funciones
o procedimientos).



POLIMORFISMO
En programación orientada a objetos el polimorfismo se refiere a la posibilidad de enviar
un mensaje a un grupo de objetos cuya naturaleza puede ser heterogénea. El único
requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber
responder 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 de
tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u objetos
de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo
polimó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 de
ejecución), es posible que el único modo de poder utilizar objetos de manera polimórfica
sea que compartan una raíz común, es decir, una jerarquía de clases, ya que esto
proporciona 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 de
dicha jerarquía) para enviar el mismo mensaje (o un grupo de mensajes) al grupo de
objetos que se tratan de manera polimórfica.
En Java, es frecuente y profusamente aconsejada la utilización de interfaces (que es un
mecanismo del lenguaje que se emplea por medio de la palabra clave Interface) para
proveer la necesaria concordancia de tipos para hacer posible el polimorfismo, también
como un contrato que debe cumplir cualquier clase que implemente una cierta interfaz y
como una forma de documentación para los desarrolladores. A veces, en la literatura que
refiere 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 porque
una clase que implementa una interfaz sólo obtiene su tipo de datos y la obligación de
implementar sus métodos, no obtiene comportamiento ni de atributos. Esto muchas veces
resulta paradójico porque en Java frecuentemente se utiliza la mal llamada "herencia de
interfaces" para dotar a una clase con un tipo adicional (o varios) para que su uso en
combinación con la agregación (colaboración o composición) permita evitar la necesidad
de 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 incluso
en aquellos lenguajes en los que es posible prescindir de tal jerarquía, ya que, desde una
perspectiva conceptual, se puede decir que al pertenecer los "objetos polimórficos" a
subclases de una misma jerarquía, se asegura la equivalencia semántica de los mensajes
que se invocarán de modo polimórfico. Por esto, en programación orientada a objetos a
veces 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ñe
a la clase o prototipo de la que provienen los objetos. Aun así, en los lenguajes basados
en clases, es habitual (y en algunos tal vez sea el único modo) que dichos objetos
pertenezcan a subclases pertenecientes a una misma jerarquía. Entonces, el polimorfismo
debe verse como una forma flexible de usar un grupo de objetos (como si fueran sólo
uno). Podría decirse que el polimorfismo en esencia refiere al comportamiento de los
objetos, 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 objetos
basados en prototipos, como Self, en los que las clases no existen.


POLIMORFISMO DESDE UNA INTERFAZ
Aunque el polimorfismo es el mismo se aplique donde se aplique, el modo en que se
aplica desde una interfaz puede resultar un poco más oscuro y difícil de entender. Se
expone un sencillo ejemplo (en VB-NET) comentado para entender como funciona
aplicado desde una interfaz, primero se escribe el código y luego se comenta el
funcionamiento. Nota: para no enturbiar el código en exceso, todo lo que no se declara
privado se sobreentiende público.




                           CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS      9

Weitere ähnliche Inhalte

Was ist angesagt?

PROGRAMACION ORIENTADA A OBJETOS
PROGRAMACION ORIENTADA A OBJETOSPROGRAMACION ORIENTADA A OBJETOS
PROGRAMACION ORIENTADA A OBJETOSAbraham Morales
 
Diseño Orientado a Objetos
Diseño Orientado a ObjetosDiseño Orientado a Objetos
Diseño Orientado a ObjetosMegaMono
 
Fundamentos básicos de la programación orientada a objetos
Fundamentos básicos de la programación orientada a objetosFundamentos básicos de la programación orientada a objetos
Fundamentos básicos de la programación orientada a objetosALGLYS RAMIREZ
 
Elementos básicos de la programación orientada a objetos.
Elementos básicos de la programación orientada a objetos.Elementos básicos de la programación orientada a objetos.
Elementos básicos de la programación orientada a objetos.Whaleejaa Wha
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosjaninaplaza
 
Poo Programacion Orientada A Objetos Java
Poo   Programacion Orientada A Objetos   JavaPoo   Programacion Orientada A Objetos   Java
Poo Programacion Orientada A Objetos JavaC_QUENGUAN
 
Introduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalIntroduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalJose Angel Rodriguez
 
Fundamentos del análisis orientado a objetos
Fundamentos del análisis orientado a objetosFundamentos del análisis orientado a objetos
Fundamentos del análisis orientado a objetosEduardo Galindo
 
Inroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosInroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosJose Angel Rodriguez
 
Paradigma de poo
Paradigma de pooParadigma de poo
Paradigma de poopixeleante
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetospontifica
 
1.1 elementos en el paradigma orientado a objetos
1.1 elementos en el paradigma orientado a objetos1.1 elementos en el paradigma orientado a objetos
1.1 elementos en el paradigma orientado a objetosCirino Silva tovar
 
Programacion Orientada a Objetos (poo)
Programacion Orientada a Objetos (poo) Programacion Orientada a Objetos (poo)
Programacion Orientada a Objetos (poo) Maîck Ddz
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetosAngel Ordoñez
 

Was ist angesagt? (20)

PROGRAMACION ORIENTADA A OBJETOS
PROGRAMACION ORIENTADA A OBJETOSPROGRAMACION ORIENTADA A OBJETOS
PROGRAMACION ORIENTADA A OBJETOS
 
Diseño Orientado a Objetos
Diseño Orientado a ObjetosDiseño Orientado a Objetos
Diseño Orientado a Objetos
 
Fundamentos básicos de la programación orientada a objetos
Fundamentos básicos de la programación orientada a objetosFundamentos básicos de la programación orientada a objetos
Fundamentos básicos de la programación orientada a objetos
 
Elementos básicos de la programación orientada a objetos.
Elementos básicos de la programación orientada a objetos.Elementos básicos de la programación orientada a objetos.
Elementos básicos de la programación orientada a objetos.
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programacion visual
Programacion visualProgramacion visual
Programacion visual
 
Poo Programacion Orientada A Objetos Java
Poo   Programacion Orientada A Objetos   JavaPoo   Programacion Orientada A Objetos   Java
Poo Programacion Orientada A Objetos Java
 
Introduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos originalIntroduccion al paradigma de la programacion orientado a objetos original
Introduccion al paradigma de la programacion orientado a objetos original
 
Fundamentos del análisis orientado a objetos
Fundamentos del análisis orientado a objetosFundamentos del análisis orientado a objetos
Fundamentos del análisis orientado a objetos
 
S2-Representación Gráfica
S2-Representación GráficaS2-Representación Gráfica
S2-Representación Gráfica
 
Inroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosInroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetos
 
Paradigma de poo
Paradigma de pooParadigma de poo
Paradigma de poo
 
POO
POOPOO
POO
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
1.1 elementos en el paradigma orientado a objetos
1.1 elementos en el paradigma orientado a objetos1.1 elementos en el paradigma orientado a objetos
1.1 elementos en el paradigma orientado a objetos
 
Programacion Orientada a Objetos (poo)
Programacion Orientada a Objetos (poo) Programacion Orientada a Objetos (poo)
Programacion Orientada a Objetos (poo)
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetos
 
Tc2 301403 21
Tc2 301403 21Tc2 301403 21
Tc2 301403 21
 
Programación Orientada Objetos Java Unidad 1
Programación Orientada Objetos Java Unidad 1Programación Orientada Objetos Java Unidad 1
Programación Orientada Objetos Java Unidad 1
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 

Ähnlich wie Introduccion a la programacion orientada a objetos

Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetostaly1999
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfSantiagoValenzuela24
 
Inroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosInroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosJose Angel Rodriguez
 
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020Laura Noussan Lettry
 
Fundamentos de POO
Fundamentos de POOFundamentos de POO
Fundamentos de POOgueritamala
 
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 1
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 1POOABD (POO Aplicada a B Datos) - API JDBC - Parte 1
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 1Laura Noussan Lettry
 
Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++Christian Castro
 
Introduccion a la POO
Introduccion a la POOIntroduccion a la POO
Introduccion a la POOLibertad25
 
ESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSIsai Vazquez
 
Unidad III epoo
Unidad III epooUnidad III epoo
Unidad III epoolhgarzonr
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructuradavnslgars
 

Ähnlich wie Introduccion a la programacion orientada a objetos (20)

Compu 1
Compu 1Compu 1
Compu 1
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdf
 
Ed java
Ed javaEd java
Ed java
 
Ed java
Ed javaEd java
Ed java
 
Inroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetosInroduccion al paradigma de la programación orientada a objetos
Inroduccion al paradigma de la programación orientada a objetos
 
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020
POOABD (POO Aplicada a B Datos) - API JDBC parte 1 -2020
 
Fundamentos de POO
Fundamentos de POOFundamentos de POO
Fundamentos de POO
 
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 1
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 1POOABD (POO Aplicada a B Datos) - API JDBC - Parte 1
POOABD (POO Aplicada a B Datos) - API JDBC - Parte 1
 
Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++Programacion Orientada a Obejtos C++
Programacion Orientada a Obejtos C++
 
Conceptos poo
Conceptos pooConceptos poo
Conceptos poo
 
Conceptos poo
Conceptos pooConceptos poo
Conceptos poo
 
Poovb
PoovbPoovb
Poovb
 
Introduccion a la POO
Introduccion a la POOIntroduccion a la POO
Introduccion a la POO
 
Glosario de terminos
Glosario de terminosGlosario de terminos
Glosario de terminos
 
PRESENTACION
PRESENTACIONPRESENTACION
PRESENTACION
 
ESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSESTRUCTURA DE DATOS
ESTRUCTURA DE DATOS
 
Unidad III epoo
Unidad III epooUnidad III epoo
Unidad III epoo
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 

Kürzlich hochgeladen

LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 

Kürzlich hochgeladen (20)

LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 

Introduccion a la programacion orientada a objetos

  • 1. PROGRAMACION ORIENTADA A OBJETOS II CONCEPTUALIZACION 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
  • 2. PROGRAMACION ORIENTADA A OBJETOS La orientación a objetos es un paradigma de programación que facilita la creación de software de calidad por sus factores que potencian el mantenimiento, la extensión y la reutilización del software generado bajo este paradigma. La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina. Esto es posible gracias a la forma racional con la que se manejan las abstracciones que representan las entidades del dominio del problema, y a propiedades como la jerarquía o el encapsulamiento. El elemento básico de este paradigma no es la función (elemento básico de la programación estructurada), sino un ente denominado objeto. Un objeto es la representación de un concepto para un programa, y contiene toda la información necesaria para abstraer dicho concepto: los datos que describen su estado y las operaciones 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 su lenguaje TIPO DE DATO ABSTRACTO (TDA) Con mucha frecuencia se utilizan los términos TDA y Abstracción de Datos de manera equivalente, y esto es debido a la similitud e interdependencia de ambos. Sin embargo, es importante definir por separado los dos conceptos. Los Lenguajes de Programación Orientados a Objetos son lenguajes formados por diferentes métodos o funciones y que son llamados en el orden en que el programa lo requiere, o el usuario lo desea. La abstracción de datos consiste en ocultar las características de un objeto y obviarlas, de manera que solamente utilizamos el nombre del 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. De manera 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 la programación, ya que un usuario no necesita mencionar todas las características y funciones de un objeto cada vez que éste se utiliza, sino que son declaradas por separado en el programa y simplemente se utiliza el término abstracto (“perro”) para mencionarlo. 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 Lenguaje de Programación Orientado a Objetos un pequeño programa saca el área de un rectángulo de las dimensiones que un usuario decida. Pensemos también que el usuario probablemente quiera saber el área de varios rectángulos. Sería muy tedioso para el programador definir la multiplicación de ‘base’ por ‘altura’ varias veces en el programa, CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 2
  • 3. además que limitaría al usuario a sacar un número determinado de áreas. Por ello, el programador puede crear una función denominada ‘Área’, la cual va a ser llamada el número de veces que sean necesitadas por el usuario y así el programador se evita mucho trabajo, el programa resulta más rápido, más eficiente y de menor longitud. Para lograr esto, se crea el método Área de una manera separada de la interfaz gráfica presentada al usuario y se estipula ahí la operación a realizar, devolviendo el valor de la multiplicación. En el método principal solamente se llama a la función Área y el programa hace el resto. Al hecho de guardar todas las características y habilidades de un objeto por separado se le llama Encapsulamiento y es también un concepto importante para entender la estructuración de datos. Es frecuente que el Encapsulamiento sea usado como un sinó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 convencional Otras 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 Management Group).Lenguajes de Programación. -Coste de conversión de software legado CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 3
  • 4. CLASE El elemento básico de la programación orientada a objetos en Java es la clase. Una clase define la forma y comportamiento de un objeto. Para crear una clase sólo se necesita un archivo fuente que contenga la palabra clave reservada class seguida de un identificador legal 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 suele asignar la extensión ".java". Por ejemplo la clase MiPunto se guardaría en un fichero que se llamase MiPunto.java. Hay que tener presente que en Java se diferencia entre mayúsculas y minúsculas; el nombre de la clase y el de archivo fuente han de ser exactamente iguales. Aunque la clase MiPunto es sintácticamente correcta, es lo que se viene a llamar una clase vacía, es decir, una clase que no hace nada. Las clases típicas de Java incluirán variables y métodos de instancia. Los programas en Java completos constarán por 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 y su interfaz funcional, en forma de métodos. Cuando se ejecuta un programa en Java, el sistema utiliza definiciones de clase para crear instancias de las clases, que son los objetos reales. Los términos instancia y objeto se utilizan de manera indistinta. La forma general 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
  • 5. 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 de otras clases ya definidas. Tanto Nombre_De_Clase, como los nombre_de_atributo y nombre_de_método, han de ser identificadores Java válidos. OBJETOS En 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 de un 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 la cual un programa es una colección de subrutinas (funciones o procedimientos), o simplemente una lista de instrucciones para el computador. Cada objeto es capaz de recibir mensajes, procesar datos y enviar mensajes a otros objetos de manera similar a un servicio. En el mundo de la programación orientada a objetos (POO), un objeto es el resultado de la instanciación de una clase. Una clase es el anteproyecto que ofrece la funcionalidad en ella definida, pero ésta queda implementada sólo al crear una instancia de la clase, en la forma de un objeto. Por ejemplo: dado un plano para construir sillas (una clase de nombre 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. Los conceptos 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
  • 6. determinado tipo de dato (por ejemplo el tipo entero), podemos definir variables de dicho tipo: 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 ATRIBUTOS Los datos se encapsulan dentro de una clase declarando variables dentro de las llaves de apertura 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 atributos enteros llamados x e y. class MiPunto { int x, y; } Los atributos se pueden declarar con dos clases de tipos: un tipo simple Java (ya descritos), o el nombre de una clase (será una referencia a objeto, véase el punto C.a de este mismo apartado). Cuando se realiza una instancia de una clase (creación de un objeto) se reservará en la memoria un espacio para un conjunto de datos como el que definen los atributos de una clase. A este conjunto de variables se le denomina variables de instancia. CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 6
  • 7. METODOS En la programación orientada a objetos, un método es una subrutina asociada exclusivamente a una clase (llamados métodos de clase o métodos estáticos) o a un objeto (llamados métodos de instancia). Análogamente a los procedimientos en los lenguajes imperativos, un método consiste generalmente de una serie de sentencias para llevar a cabo una acción, un juego de parámetros de entrada que regularán dicha acció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 mantener el invariante del objeto al que está asociado asumiendo también que éste es válido cuando el método es invocado. En lenguajes compilados dinámicamente, los métodos pueden ser objetos de primera clase, y en este caso se puede compilar un método sin asociarse a ninguna clase en particular, y luego asociar el vínculo o contrato entre el objeto y el método en tiempo de ejecución. En cambio en lenguajes no compilados dinámicamente o tipados estáticamente, se acude a precondiciones para regular los parámetros del método y postcondiciones para regular su salida (en caso de tenerla). Si alguna 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 un mé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 que sea consistente con el comportamiento deseado para el mismo. Así, es recomendable entender a un método no como una secuencia de instrucciones sino como la forma en que el objeto es útil (el método para hacer su trabajo). Por lo tanto, podemos considerar al método como el pedido a un objeto para que realice una tarea determinada o como la vía para enviar un mensaje al objeto y que éste reaccione acorde a dicho mensaje ENCAPSULAMIENTO En programación orientada a objetos, se denomina encapsulamiento al ocultamiento del estado, es decir, de los datos miembro, de un objeto de manera que sólo se puede cambiar mediante las operaciones definidas para ese objeto. Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados a un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones. De esta forma el usuario de la clase puede obviar la implementación de los métodos y propiedades para concentrarse sólo en cómo usarlos. Por otro lado se evita que el usuario pueda cambiar su estado de maneras imprevistas e incontroladas. Como se puede observar de los diagramas, las variables del objeto se localizan en el centro o núcleo del objeto. Los métodos rodean y esconden el núcleo del objeto de otros CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 7
  • 8. objetos en el programa. 'Al empaquetamiento de las variables de un objeto con la protección de sus métodos se le llama encapsulamiento. Típicamente, el encapsulamiento es utilizado para esconder detalles de la puesta en práctica no importantes de otros objetos. Entonces, los detalles de la puesta en práctica pueden cambiar en cualquier tiempo 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 OCULTAMIENTO En programación orientada a objetos el principio de ocultación hace referencia a que los atributos privados de un objeto no pueden ser modificados ni obtenidos a no ser que se haga a través del paso de un mensaje (invocación a métodos, ya sean estos funciones o procedimientos). POLIMORFISMO En programación orientada a objetos el polimorfismo se refiere a la posibilidad de enviar un mensaje a un grupo de objetos cuya naturaleza puede ser heterogénea. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder 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 de tipos dinámico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimó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 de ejecución), es posible que el único modo de poder utilizar objetos de manera polimórfica sea que compartan una raíz común, es decir, una jerarquía de clases, ya que esto proporciona la compatibilidad de tipos de datos necesaria para que sea posible utilizar CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 8
  • 9. una misma variable de referencia (que podrá apuntar a objetos de diversas subclases de dicha jerarquía) para enviar el mismo mensaje (o un grupo de mensajes) al grupo de objetos que se tratan de manera polimórfica. En Java, es frecuente y profusamente aconsejada la utilización de interfaces (que es un mecanismo del lenguaje que se emplea por medio de la palabra clave Interface) para proveer la necesaria concordancia de tipos para hacer posible el polimorfismo, también como un contrato que debe cumplir cualquier clase que implemente una cierta interfaz y como una forma de documentación para los desarrolladores. A veces, en la literatura que refiere 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 porque una clase que implementa una interfaz sólo obtiene su tipo de datos y la obligación de implementar sus métodos, no obtiene comportamiento ni de atributos. Esto muchas veces resulta paradójico porque en Java frecuentemente se utiliza la mal llamada "herencia de interfaces" para dotar a una clase con un tipo adicional (o varios) para que su uso en combinación con la agregación (colaboración o composición) permita evitar la necesidad de 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 incluso en aquellos lenguajes en los que es posible prescindir de tal jerarquía, ya que, desde una perspectiva conceptual, se puede decir que al pertenecer los "objetos polimórficos" a subclases de una misma jerarquía, se asegura la equivalencia semántica de los mensajes que se invocarán de modo polimórfico. Por esto, en programación orientada a objetos a veces 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ñe a la clase o prototipo de la que provienen los objetos. Aun así, en los lenguajes basados en clases, es habitual (y en algunos tal vez sea el único modo) que dichos objetos pertenezcan a subclases pertenecientes a una misma jerarquía. Entonces, el polimorfismo debe verse como una forma flexible de usar un grupo de objetos (como si fueran sólo uno). Podría decirse que el polimorfismo en esencia refiere al comportamiento de los objetos, 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 objetos basados en prototipos, como Self, en los que las clases no existen. POLIMORFISMO DESDE UNA INTERFAZ Aunque el polimorfismo es el mismo se aplique donde se aplique, el modo en que se aplica desde una interfaz puede resultar un poco más oscuro y difícil de entender. Se expone un sencillo ejemplo (en VB-NET) comentado para entender como funciona aplicado desde una interfaz, primero se escribe el código y luego se comenta el funcionamiento. Nota: para no enturbiar el código en exceso, todo lo que no se declara privado se sobreentiende público. CONCEPTUALIZACION PROGRAMACION ORIENTADA A OBJETOS 9