PDF de programación - Tema 8 Introducción a la Programación Orientada a Objetos (POO)

Imágen de pdf Tema 8 Introducción a la Programación Orientada a Objetos (POO)

Tema 8 Introducción a la Programación Orientada a Objetos (POO)gráfica de visualizaciones

Publicado el 19 de Enero del 2019
1.238 visualizaciones desde el 19 de Enero del 2019
479,5 KB
48 paginas
Creado hace 8a (19/11/2015)
Tema 8

Introducción a la
Programación

Orientada a Objetos (POO)

Programación
2015-2016

Programación - Tema 8: Programación Orientada a Objetos (POO)

1

Tema 8. Prog. Orientada a Objetos

● Tipos abstractos de datos.

● Encapsulación, Herencia y
Polimorfismo.

● Objetos.

Programación - Tema 8: Programación Orientada a Objetos (POO)

2
2

Introducción

 Hemos realizado una primera incursión en Java pero para
proseguir se nos hace indispensable hablar de conceptos
fundamentales de la programación orientada a objetos:
objetos y clases. Estos términos parecen resultarnos
familiares.

 En la vida diaria podemos pensar en objetos como una

manzana o un libro y podemos distinguir clases de cosas:
por ejemplo clases de plantas.

 Al escribir un programa en un lenguaje orientado a objetos

tratamos de modelar un problema del mundo real
pensando en objetos que forman parte del problema y que
se relacionan entre sí.

Programación - Tema 8: Programación Orientada a Objetos (POO)

3
3

Concepto de objeto y clase

 Podemos decir como primera aproximación:

– Objeto: entidad existente en la memoria del
ordenador que tiene unas propiedades (atributos
o datos sobre sí mismo almacenados por el
objeto) y unas operaciones disponibles
específicas (métodos).

– Clase: abstracción que define un tipo de objeto

especificando qué propiedades (atributos) y
operaciones disponibles va a tener.

Programación - Tema 8: Programación Orientada a Objetos (POO)

4
4

Tipos abstractos de datos

 Un tipo abstracto de datos es aquel cuyas

operaciones relacionadas (interfaz) pueden
describirse independientemente de su
representación interna (implementación).

Programación - Tema 8: Programación Orientada a Objetos (POO)

5
5

Tipos abstractos de datos
 Supongamos que al crear un programa creamos una ciudad.

Disponemos de normas de urbanismo. Cada norma vamos a decir que
es una interface: nos dice qué debemos cumplir para que al construir
un edificio (clase) se pueda calificar con un nombre determinado.
Supongamos una norma denominada “Edificio a dos aguas”, cuyo
contenido incluye:

– El edificio habrá de tener cuatro paredes.
– El edificio habrá de tener un tejado formado por dos planos.
– Otras especificaciones.

 Si al construir un edificio (implementación) se cumplen las

condiciones de las normas de urbanismo, podremos decir que se trata
de un edificio a dos aguas. Un edificio con forma de pentágono y
cinco paredes no se denominará “Edificio a dos aguas”. Por el
contrario, sería posible denominar edificio a dos aguas a una capilla
que cumpla la norma, también a una vivienda unifamiliar que la
cumpla, o a una biblioteca que la cumpla.

Programación - Tema 8: Programación Orientada a Objetos (POO)

6
6

Clases
 DEFINICIÓN:



Implementación total o parcial de un Tipo Abstracto de Datos.
 Entidad sintáctica que describe objetos que van a tener la misma

estructura y el mismo comportamiento.

 Doble naturaleza: Módulo + Tipo de Datos

– Módulo (concepto sintáctico)

● Mecanismo para organizar el software

– Tipo (concepto semántico)

● Mecanismo de definición de nuevos tipos de datos:

describe una estructura de datos (objetos) y las
operaciones aplicables.

Programación - Tema 8: Programación Orientada a Objetos (POO)

7
7

Componentes de una clase

 Atributos:

– Determinan una estructura de almacenamiento para cada

objeto de la clase (variables)

 Métodos:

– Operaciones aplicables a los objetos
– Único modo de acceder a los atributos

Programación - Tema 8: Programación Orientada a Objetos (POO)

8
8

Tema 8. Prog. Orientada a Objetos

● Tipos abstractos de datos.

● Encapsulación, Herencia y
Polimorfismo.

● Objetos.

Programación - Tema 8: Programación Orientada a Objetos (POO)

9
9

Programación Orientada a Objetos

Características de la POO:

 Encapsulación.
 Herencia.
 Polimorfismo.

Programación - Tema 8: Programación Orientada a Objetos (POO)

10
10

Encapsulación
Ocultamiento del estado interno de un objeto, de modo que
sólo puede ser cambiado mediante las operaciones definidas
para ese objeto.

Es decir, no podremos acceder directamente a los atributos de un objeto
(modificador private). Lo haremos mediante:
 Métodos modificadores: llamamos métodos modificadores a

aquellos métodos que dan lugar a un cambio en el valor de uno o
varios de los atributos del objeto.
Suelen ir precedidos del prefijo set (setMatricula, setDistrito, etc.) por
lo que muchas veces se alude coloquialmente a ellos como “métodos
set” o “setters”.

 Métodos consultores u observadores: son métodos que

devuelven información sobre el contenido de los atributos del objeto
sin modificar los valores de estos atributos.
Estos métodos suelen ir precedidos del prefijo get (getMatricula,
getDistrito, etc.) por lo que muchas veces se alude coloquialmente a
ellos como “métodos get” o “getters”.

Programación - Tema 8: Programación Orientada a Objetos (POO)

11
11

Encapsulación

 A las características de una clase (atributos y métodos) se les puede

asignar un modificador de visibilidad:

– public:

● Característica pública, accesible desde todas las clases

– private:

● Característica privada, accesible sólo dentro de la clase donde

se define

 Principio de diseño:

– Todos los atributos de una clase son privados
– Los métodos pueden tener distintos niveles de visibilidad

Programación - Tema 8: Programación Orientada a Objetos (POO)

12
12

Herencia
Muchas veces distintos objetos comparten campos y métodos que
hacen aproximadamente lo mismo

Programación - Tema 8: Programación Orientada a Objetos (POO)

13
13

Herencia
Si nos fijamos en el planteamiento del problema, encontramos:
 La definición de clases nos permite identificar campos y métodos
que son comunes a Taxis y Autobuses. Si implementamos ambas
clases, incurriremos en duplicidad de código. Por ejemplo si el campo
matricula es en ambas clases un tipo String, el código para gestionar
este campo será idéntico en ambas clases.

 La definición de clases nos permite identificar campos y métodos
que difieren entre una clase y otra. Por ejemplo en la clase Taxi se
gestiona información sobre un campo denominado numeroDeLicencia
que no existe en la clase Autobus.

 Conceptualmente podemos imaginar una abstracción que

engloba a Taxis y Autobuses: ambos podríamos englobarlos bajo la
denominación de “Vehículos”. Un Taxi sería un tipo de Vehiculo y un
Autobus otro tipo de Vehiculo.

 Al implementar tros vehículos como minibuses, tranvías, etc.

seguiríamos engrosando la duplicidad de código. Por ejemplo, un
minibús también tendría matrícula, potencia… y los métodos
asociados.

Programación - Tema 8: Programación Orientada a Objetos (POO)

14
14

Herencia
¿No sería más razonable, si una propiedad o método va a ser siempre
común para varios tipos de objetos, que estuviera localizada en un sitio
único al que ambos tipos de objeto accedieran? En los lenguajes con
orientación a objetos la solución a esta problemática se llama herencia.
 La herencia nos permite definir una clase como extensión de

otra:

– de esta manera decimos “la clase 1.1 tiene todas las

características de la clase 1 y además sus características
particulares”.

– Todo lo que es común a ambas clases queda comprendido en

la clase “superior”, mientras lo que es específico, queda
restringido a las clases “inferiores”.

En nuestro ejemplo definiríamos una clase denominada Vehiculo, de

forma que la clase Taxi tuviera todas las propiedades de la clase
Vehiculo, más algunas propiedades y métodos específicos. Lo mismo
ocurriría con la clase Autobus y otras que pudieran “heredar” de
Vehiculo.

Programación - Tema 8: Programación Orientada a Objetos (POO)

15
15

Herencia

Programación - Tema 8: Programación Orientada a Objetos (POO)

16
16

Herencia
 Para declarar la herencia en Java usamos la palabra clave extends.

Ejemplo:

– public class MiClase2 extends Miclase1.

 Si quisiéramos podríamos escribir para todas las clases public class

NombreDeLaClase extends Object, aunque como es algo
implícito a Java normalmente no lo escribiremos por ser
redundante. En los diagramas representativos de la jerarquía de
herencia ocurre lo mismo.

 Recordar que en Java los tipos primitivos no son objetos: no son
instancias de clase, y por tanto no heredan de la superclase
Object.

 Los campos privados de una superclase no son accesibles por la

subclase directamente. Decimos que la subclase no tiene derechos
de acceso sobre los campos privados de la superclase. Para
acceder a ellos tendrá que hacer uso de métodos de acceso o
modificación. Una subclase puede invocar a cualquier método
público de su superclase como si fuese propio.

Programación - Tema 8: Programación Orientada a Objetos (POO)

17
17

Polimorfismo
 Al igual que se forma una jerarquía de clases, el hecho de que las

clases definan tipos hace que la herencia dé lugar a una jerarquía de
tipos. El tipo que se define mediante una subclase se dice que es un
subtipo del tipo definido en su superclase.

 Los supertipos pueden usarse para definir operaciones que admitan

objetos de distintos subtipos. Por ejemplo, podemos crear una
colección que admita objetos de distintos subtipos.

 Al uso de variables de subtipos en lugares donde se espera (o se

admite) un objeto de un supertipo se le denomina “sustitución”. Los
lenguajes orientados a objetos trabajan con el principio de
sustitución: los tipos hijos pueden sustituir a los tipos padres. Sin
embargo, la operación contraria no es posible: un tipo padre no
puede ocupar el lugar de un tipo hijo.

Programación - Tema 8: Programación Orientada a Objetos (POO)

18
18

Polimorfismo
 Una variable que apunta a un objeto de un supertipo puede contener

objetos de ese supertipo (si es que es coherente que existan) o de
cualquier subtipo en escalas dependientes dentro de la jerarquía de
tipos. Así resultarían válid
  • Links de descarga
http://lwp-l.com/pdf14899

Comentarios de: Tema 8 Introducción a la Programación Orientada a Objetos (POO) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad