Clase 1 Java POO

Descargar como ppt, pdf o txt
Descargar como ppt, pdf o txt
Está en la página 1de 17

Universidad José Antonio Páez

Facultad de Ingeniería
Sistemas de Programas

Programación
Orientada a Objeto

•Introducción
•Conceptos
•Características
Introducción
El concepto de programación orientada a objeto (POO) no es nuevo, lenguajes
clásicos como SmallTalk se basan en ella. Dado que la POO. se basa en la idea natural
de la existencia de un mundo lleno de objetos y que la resolución del problema se
realiza en términos de objetos, un lenguaje se dice que está basado en objetos si soporta
objetos como una característica fundamental del mismo.

El elemento fundamental de la POO es, como su nombre lo indica, el objeto. Podemos


definir un objeto como un conjunto complejo de datos y programas que poseen
estructura y forman parte de una organización.

Esta definición especifica varias propiedades importantes de los objetos. En primer


lugar, un objeto no es un dato simple, sino que contiene en su interior cierto número de
componentes bien estructurados. En segundo lugar, cada objeto no es un ente aislado,
sino que forma parte de una organización jerárquica o de otro tipo.
Introducción
ESTRUCTURA DE UN OBJETO
 
Un objeto puede considerarse como una especie de cápsula dividida en tres partes:

1 - RELACIONES
2 - PROPIEDADES
3 - METODOS
 
Cada uno de estos componentes desempeña un papel totalmente independiente:

Las relaciones permiten que el objeto se inserte en la organización y están formadas esencialmente por
punteros a otros objetos.

Las propiedades distinguen un objeto determinado de los restantes que forman parte de la misma
organización 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 organización.

Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán
incorporados en forma de programas (código) que el objeto es capaz de ejecutar y que también pone a
disposición de sus descendientes a través de la herencia
El desarrollo de la POO empieza a destacar durante la década de lo 80 tomando en cuenta la
programación estructurada, a la que engloba y dotando al programador de nuevos elementos para
el análisis y desarrollo de software.
Programación Orientada a Objeto

Clases y objetos

Un objeto es cualquier cosa, real o abstracta, que posee atributos y un conjunto de


operaciones que manipulan esos atributos; y métodos que le dan al objeto un
comportamiento particular.

Por ejemplo, en una biblioteca podemos distinguir los objetos biblioteca, libros, revistas,
usuarios, ficheros, fichas, etc.

Un ejemplo para entenderlo mejor: Analicemos un grupo de perros, cada uno de ellos
tiene características comunes como son talla, peso, color de pelo, etc. Al referirnos a un
perro, nos estamos refiriendo a un objeto de la clase perro, pero no podemos interactuar
con un perro, debemos referirnos a uno en particular; para esto, instanciamos un objeto de
la clase perro que llamaremos, por ejemplo, Perseo. Perseo es un objeto de la clase perro y
podemos interactuar con Perseo, averiguar su peso, su talla y su color de pelo.
Programación Orientada a Objeto

Clases

Una clase es un tipo definido por el usuario que determina las estructuras de
datos y las operaciones asociadas con ese tipo. Cada vez que se construye un
objeto de una clase, se crea una instancia de esa clase. En general, los términos
objetos e instancias de una clase se pueden utilizar indistintamente.

Una clase es una colección de objetos similares y un objeto es una instancia de


una definición de una clase.

La comunicación con el objeto se realiza a través del paso de mensajes. El


envío a una instancia de una clase produce la ejecución de un método o función
miembro. El paso de mensajes es el término utilizado para referirnos a la
invocación o llamada de una función miembro de un objeto.
Programación Orientada a Objeto

Variables miembro

Las propiedades o atributos que son características de los objetos. Cuando definimos una
propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que
las variables son algo así como el almacén de los datos de estado relacionados con los objetos.
Habitualmente, las variables miembro son privadas al objeto (siguiendo las directrices de diseño
del Principio de ocultación) y su acceso se realiza mediante propiedades o métodos que realizan
comprobaciones adicionales.

Métodos de las clases

Implementan la funcionalidad asociada al objeto. Los métodos son el equivalente a las funciones
en los lenguajes estructurados. Se diferencian de ellos en que es posible acceder a las variables de
la clase de forma implícita.

Cuando se desea realizar una acción sobre un objeto, se dice que se le manda un mensaje
invocando a un método que realizará la acción.
Programación Orientada a Objeto

Abstracción

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 cómo se implementan estas características. Los
procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo
están, una variedad de técnicas son requeridas para ampliar una abstracción.

La abstracción encarada desde el punto de vista de la programación orientada a


objetos expresa las características esenciales de un objeto, las mismas distinguen
al objeto de los demás. Además de distinguir entre los objetos provee límites
conceptuales. Entonces se puede decir que la encapsulación separa las
características esenciales de las no esenciales dentro de un objeto. Si un objeto
tiene mas características de las necesarias los mismos resultarán difíciles de
usar, modificar, construir y comprender.
Programación Orientada a Objeto

Encapsulamiento

También llamado "ocultación de la información". Cada objeto está aislado del


exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros
objetos que especifica cómo pueden interactuar con los objetos de la clase.

El aislamiento protege a las propiedades de un objeto contra su modificación


por quien no tenga derecho a acceder a ellas, solamente los propios métodos
internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no
pueden cambiar el estado interno de un objeto de maneras inesperadas,
eliminando efectos secundarios e interacciones inesperadas.

Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos


internos del objeto de una manera controlada y limitando el grado de
abstracción. La aplicación entera se reduce a un agregado o rompecabezas de
objetos.
Programación Orientada a Objeto

Polimorfismo

Comportamientos diferentes, asociados a objetos distintos, pueden compartir el


mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento
correspondiente al objeto que se esté usando. O dicho de otro modo, las
referencias y las colecciones de objetos pueden contener objetos de diferentes
tipos, y la invocación de un comportamiento en una referencia producirá el
comportamiento correcto para el tipo real del objeto referenciado.

Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama


asignación tardía o asignación dinámica. Algunos lenguajes proporcionan
medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como
las plantillas y la sobrecarga de operadores de C++.
Programación Orientada a Objeto

Herencia

Las clases no están aisladas, sino que se relacionan entre sí, formando una
jerarquía de clasificación. Los objetos heredan las propiedades y el
comportamiento de todas las clases a las que pertenecen.

La herencia organiza y facilita el polimorfismo y la encapsulación permitiendo a


los objetos ser definidos y creados como tipos especializados de objetos
preexistentes.

Estos pueden compartir (y extender) su comportamiento sin tener que


reimplementar su comportamiento. Esto suele hacerse habitualmente agrupando
los objetos en clases y estas en árboles o enrejados que reflejan un
comportamiento común. Cuando un objeto pertenece a más de una clase se
llama herencia múltiple; esta característica no está soportada por algunos
lenguajes (como Java).
Programación Orientada a Objeto

Control de acceso a una clase


 
En una definición de clase se utiliza especificadores de acceso para controlar
la visibilidad de miembros de la clase fuera del ámbito de la misma (clase);
En consecuencia los datos o funciones miembro de una clase pertenecen a tres
categorías de acuerdo a la visibilidad que ellas poseen
 
Los tres niveles de protección para el acceso de datos son:

•Private (privado)
•Protected(protegido)
•Public(publico)

private: La sección privada contiene todas las funciones y datos que serán
privados, es decir, ninguna de características serán accesibles por entidades
ajenas a la clase. Solo los métodos de la clase podrán manipular la sección
privada
Programación Orientada a Objeto

Protected
El acceso protegido sirve como un nivel intermedio de restricción entre la
sección privada y la sección publica.
La sección protegida de la clase base es solo accesible miembros y amigos
de la clase base y por los miembros y amigas de la clase derivada.

Public
La sección publica contiene todas las funciones y datos que serán públicos,
es decir, se le puede acceder libremente por cualquier entidad sin ningún tipo
de restricción, sin importar si pertenece o no a la clase.

Por defecto todos los datos y funciones miembro de una clase son privados

Es recomendable que todos los datos miembro de una clase sean privados y
que las funciones miembro sean publicas
Constructores y Destructores

Constructor

Es una función especial que sirve para construir o inicializar objetos.


Un constructor es una función que permite crear un nuevo objeto y asignar
valores a sus datos miembros
 
Características:

•Tienen el mismo nombre de la clase


•No devuelve valores
•Puede permitir parámetros como cualquier otra función
•Puede existir más de un constructor por clase

Destructor

Es una función miembro que realiza lo inverso de un constructor es decir


limpia la memoria asignada a un objeto. 
HERENCIA
 
Jerarquía de clases.
 
A través de la herencia, (simple y compuesta), se puede diseñar una
jerarquía de clases creando una potente herramienta de desarrollo aplicable a
diversos sistemas sin necesidad de modificar código.

La representación gráfica de una jerarquía de clases es idéntica a la de un


organigrama, esto es, una clase base fundamental al tope de la jerarquía y
luego las diversas ramificaciones de clases derivadas que a su vez son clases
bases de otras.
Programación Orientada a Objeto

Clases abstractas.
 
Existe una clase especial muy útil para crear jerarquías, o mejor digamos que es muy
típico usarla para diseñar jerarquías. Estas clases se llaman "clases abstractas", son
como cualquier otra, pero definidas con la intención de que sirvan como clase base de
otras clases. O sea que nunca se va a crear una instancia de una clase abstracta, (nunca
se creará un objeto de esa clase).

Se podría decir que una clase abstracta presenta la interfase común para los objetos de
clases derivadas.

Funciones virtuales
 
Técnicamente una clase abstracta define por lo menos una función virtual, que es
aquella que puede ser rescrita en la clase derivada, (que heredó esa función virtual).
Una función virtual en una clase es solamente la definición del prototipo de la
función, no hay implementación de la misma en esa clase, sino que queda a criterio
de clases derivadas, si es aplicable, la escritura de la implementación
HERENCIA
 
Tipos de herencia
 
En la programación Orientada a Objeto tiene dos tipos de herencia
 
Herencia Simple: es cuando la clase o clases derivadas, heredan las
propiedades de una sola clase Base
 
Herencia Múltiple: es cuando la clase o clases derivadas, heredan propiedades
de mas de una clase Base (dos o mas clases bases), este tipo de herencia no es
aplicable en todos los L.P.O.O.

A B A C

B C D
D

Jerarquía A Jerarquía B

También podría gustarte