SlideShare una empresa de Scribd logo
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
Dpto de Informática
Asignatura: Introducción a la Programación
Programación Orientada a
Objetos. (P.O.O.)
Unidad III:
Programación Orientada a
Objetos. (P.O.O.)
Unidad III:
Objetivos:
Conocer la filosofía de las clases.
Programación Orientada a
Objetos. (P.O.O.)
Unidad III:
3.1 Elementos fundamentales de la programación orientada a objetos.
3.2 Representación gráfica (UML.)
Bibliografía
C++ para Ingeniería y
Ciencia. Editorial
Cengage Learning
Editores S. A. de C. V.
Segunda edición. 2007.
Gary J. Bronson. Ficha
9a . Páginas 64 – 88.
Bibliografía
Fundamentos de
Programación con el
Lenguaje de Programación
C++. Dpto. Lenguajes y
CC. Computación E.T.S.I.
Informática. 2017. Vicente
Benjumea y Manuel
Roldán. Capítulo 13.
Páginas: 167 - 168.
Introducción.
Por los años 70 (s. XX) una nueva metodología
denominada "desarrollo estructurado", basada en la
independencia de datos y funciones o métodos,
permitió superar la llamada "crisis del software". El
diseño "top-down" se convirtió en sinónimo de
enfoque estructurado: un problema se asimila a una
función o procedimiento, que se descompone en
problemas más pequeños, que a su vez se
descomponen en otras funciones más pequeñas,
hasta llegar a problemas descomponibles. Gracias a
estos métodos los software fueron poco a poco
creciendo en tamaño y complejidad, de forma que al
final los problemas solucionados por el desarrollo
estructurado generaron nuevos problemas más
difícil de solucionar.
Bibliografía
C++ / OOP. Un enfoque
práctico. Ricardo Devis
Botella. Capítulo 1.
Páginas: 7 – 10, 13 – 15,
17 – 20, 22 – 26.
Pensar en objetos.
Pensar en objetos, puede resultar -al inicio- una tarea difícil.
Sin embargo, difícil no significa complejo. Por el contrario,
pensar en objetos representa la mayor simplicidad que uno
podría esperar del mundo de la programación.
Pensar en objetos, es simple... aunque lo simple, no
necesariamente signifique sencillo.
Y ¿qué es un objeto?
Un objeto es una cosa. Y, si una cosa es un sustantivo,
entonces un objeto es un sustantivo.
Al mirar a tu alrededor encontrarás decenas, cientos de
objetos. Tu ordenador, es un objeto. Tú, eres un objeto. Tu
llave es un objeto. La taza con café (esa que tienes frente a
ti para estudiar y no dormirte), es otro objeto. A bueno, y se
me olvidaba, tu mascota también es un objeto.
Sencillo ¿cierto? Entonces, de ahora en más, solo
concéntrate en pensar la vida en objetos (al menos, hasta
terminar esta unidad.)
!Describamos las
cualidades de un
objeto!
Describir un objeto, es simplemente mencionar sus
cualidades. Las cualidades son adjetivos. Si no sabes que
es un adjetivo, estamos … (y mucho).
Pero, podemos decir que un adjetivo es una cualidad del
sustantivo.
Entonces, para describir "la manera de ser" de un objeto,
debemos preguntarnos ¿cómo es el objeto? Toda
respuesta que comience por "el objeto es", seguida de un
adjetivo, será una cualidad del objeto.
Algunos ejemplos:
 El objeto es verde.
 El objeto es grande.
 El objeto es feo.
Ahora, imagínate frente a un niño de 2 años (niño: objeto
que pregunta cosas que tú das por entendidas de forma
implícita). Y cada vez que le dices las cualidades de un
objeto al molesto niño-objeto, éste te pregunta: -¿Qué es...?,
seguido del adjetivo con el cuál finalizaste tu frase.
Entonces, tu le respondes diciendo es un/una seguido de un
sustantivo. Te lo muestro con un ejemplo:
 El objeto es verde. ¿Qué es verde? Un color.
 El objeto es grande. ¿Qué es grande? Un tamaño.
 El objeto es feo. ¿Qué es feo? Un aspecto.
Estos sustantivos que responden a la pregunta del niño,
pueden pasar a formar parte de las descripciones anteriores:
 El objeto es de color verde.
 El objeto es de tamaño grande.
 El objeto es de aspecto feo.
Podemos decir entonces -y todo esto, gracias al molesto
niño-objeto-, que una cualidad, es un atributo (derivado de
cualidad atribuible a un objeto) y que entonces, un objeto es
un sustantivo que posee atributos, cuyas cualidades lo
describen.
OBJETO
(sustantivo)
ATRIBUTO
(locución adjetiva)
CUALIDAD DEL
ATRIBUTO (adjetivo)
(el) Objeto (es de) color Verde
(el) Objeto (es de) tamaño Grande
(el) Objeto (es de) aspecto Feo
! Pero algunos objetos,
también se componen
por otros objetos!
Los objetos tienen otras cosas. Estas otras cosas, son
aquellas pseudo-cualidades que en vez de responder a
¿cómo es el objeto? responden a ¿cómo está compuesto
el objeto? o incluso, aún más simple ¿Qué tiene el objeto?.
La respuesta a esta pregunta, estará dada por la frase “el
objeto tiene...”, seguida de un adverbio de cantidad (uno,
varios, muchos, algunos, unas cuantas) y un sustantivo.
Algunos ejemplos:
 El objeto tiene algunas antenas.
 El objeto tiene un ojo.
Los componentes de un objeto, también integran los
atributos de ese objeto. Solo que estos atributos, son algo
particulares: son otros objetos que poseen sus propias
cualidades. Es decir, que estos atributos-objeto también
responderán a la pregunta ¿Cómo es/son ese/esos/esas?
seguido del atributo-objeto (sustantivo).
Ampliemos el ejemplo para que se entienda mejor:
El objeto tiene algunas antenas. ¿Cómo son esas antenas?
 Las antenas son de color violeta
 Las antenas son de longitud extensa
El objeto tiene un ojo. ¿Cómo es ese ojo?
 El ojo es de forma oval.
 El ojo es de color azul.
 El ojo es de tamaño grande.
OBJETO
(sustantivo)
ATRIBUTO-
OBJETO
(sustantivo)
ATRIBUTOS
(locución
adjetiva)
CUALIDADES DE
LOS ATRIBUTOS
(adjetivo)
(el) Objeto
(tiene
algunas)
antenas
(de) color Violeta
(el) Objeto
(tiene
algunas)
antenas
(de) longitud extensa
(el) Objeto (tiene un) ojo (de) forma Oval
(el) Objeto (tiene un) ojo (de) color azul
(el) Objeto (tiene un) ojo (de) tamaño grande
Entonces, podemos deducir que un objeto puede tener dos
tipos de atributos:
 Los que responden a la pregunta ¿Cómo es el objeto?
con la frase El objeto es... + adjetivo (atributos definidos
por cualidades)
 Los que responden a la pregunta ¿Qué tiene el objeto?
con la frase El objeto tiene... + sustantivo (atributos
definidos por las cualidades de otro objeto).
Los objetos, también
hacen cosas.
Ya describimos las cualidades de nuestros objetos. Pero de
lo que no hemos hablado, es de aquellas cosas que los
objetos "pueden hacer", es decir, "cuáles son sus
capacidades".
Los objetos tiene la capacidad de realizar acciones. Las
acciones, son verbos. Es decir, que para conocer las
capacidades de un objeto, debes preguntarte ¿Qué puede
hacer el objeto? y la respuesta a esta pregunta, estará
dada por todas aquellas que comiencen por la frase “el
objeto puede” seguida de un verbo en infinitivo.
Algunos ejemplos:
 El objeto original puede flotar.
 El nuevo objeto (además) puede saltar.
Cuando
En programación
se llama
Y en POO es
Hablamos de objeto Objeto Un elemento
Hablamos de atributos (o cualidades) Propiedades Un elemento
Hablamos de acciones que puede realizar
el objeto
Métodos Un elemento
Hablamos de atributos-objeto Composición Una técnica
Vemos que los objetos relacionados entre
sí, tienen nombres de atributos iguales
(por ejemplo: color y tamaño) y sin
embargo, pueden tener valores diferentes
Polimorfismo
Una
característica
Hablamos de objetos que son sub-tipos (o
ampliación) de otros
Herencia
Una
característica
Ahora, pasemos a algo
un poco más
académico.
Introducción a la progrogramación orientada a objetos
Introducción.
La Programación Orientada a Objetos (POO u OOP por sus siglas
en inglés), es un paradigma de programación.
Cómo tal, nos enseña un método -probado y estudiado- el cual se
basa en las interacciones de objetos (todo lo descrito
anteriormente) para resolver las necesidades de un sistema
informático.
Introducción.
La Programación Orientada a Objetos (POO u OOP por sus siglas
en inglés), es un paradigma de programación.
Cómo tal, nos enseña un método -probado y estudiado- el cual se
basa en las interacciones de objetos (todo lo descrito
anteriormente) para resolver las necesidades de un sistema
informático.
2. m. Teoría o conjunto de teorías cuyo núcleo central se
acepta sin cuestionar y que suministra la base y modelo
para resolver problemas y avanzar en el conocimiento.
Ejemplo: El paradigma newtoniano. Diccionario de la lengua
española. (Edición del Tricentenario. Actualización 2018)
Introducción.
Cuando hacemos referencia a la programación orientada a
objetos no estamos hablando de unas cuantas características
nuevas añadidas a un lenguaje de programación. Estamos
hablando de una nueva forma de pensar acerca del proceso de
descomposición de problemas y de desarrollo de soluciones
de programación. La programación orientada a objetos surge en la
historia como un intento para dominar la complejidad que, de
forma innata, posee el software. En la POO vamos a fijarnos no en
lo que hay que hacer (verbos o acciones) en el problema, sino en
cuál es el escenario real del mismo, y vamos a intentar simular ese
escenario en nuestro programa.
Introducción.
En el caso de los lenguajes orientados a objetos, como es el caso
de C++ y Java, el elemento básico no es la función, sino un
ente denominado precisamente objeto. Un objeto es la
representación, en un programa, de un concepto; y contiene
toda la información necesaria para abstraerlo: datos que
describen sus atributos y operaciones que pueden realizarse
sobre los mismos.
Introducción.
Es cierto que con C++ se puede escribir código que no es
programación orientada a objetos. Esta situación no se da en
Java, dotado desde las primeras etapas de su diseño para la
POO, y donde no cabe obviar la orientación a objetos para el
desarrollo de programas.
Un ejemplo.
Un domingo por la tarde estoy en casa viendo la televisión, y
de repente mi madre siente un fuerte dolor de cabeza; como es
natural, lo primero que hago es tratar de encontrar una caja de
aspirinas. Lo que acabo de describir es una situación que
probablemente no resulte muy extraña a muchos de nosotros.
Vamos a verla en clave de objetos…
Un ejemplo.
El objeto hijo ha recibido un mensaje procedente del objeto
madre. El objeto hijo responde al mensaje o evento ocurrido
mediante una acción: buscar aspirinas. La madre no tiene que
decirle al hijo dónde debe buscar, es responsabilidad del hijo
resolver el problema como considere más oportuno. Al objeto
madre le basta con haber emitido un mensaje.
Un ejemplo.
El hijo no encuentra aspirinas en el botiquín y decide acudir a la
farmacia de guardia más cercana para comprar aspirinas. En la
farmacia es atendido por una señorita que le pregunta qué desea,
a lo que el hijo responde: "una caja de aspirinas, por favor". La
farmacéutica desaparece para regresar al poco tiempo con una
caja de aspirinas en la mano. El hijo paga el importe, se despide y
vuelve a su casa. Allí le da un comprimido a su madre, la cual al
cabo de un rato comienza a experimentar una notable mejoría
hasta la completa desaparición del dolor de cabeza.
Un ejemplo.
El hijo, como objeto responsable de un cometido, sabe lo
que debe hacer hasta conseguir una aspirina. Para ello entra en
relación con un nuevo objeto, la farmacéutica, quien responde al
mensaje o evento de petición del objeto hijo con la búsqueda de la
aspirina. El objeto farmacéutica es ahora el responsable de la
búsqueda de la aspirina. El objeto farmacéutica lanza un mensaje
al objeto hijo solicitando el pago del importe, y el objeto hijo
responde a tal evento con la acción de pagar.
Un ejemplo.
Como hemos podido ver, en esta situación nos hemos encontrado
con objetos que se diferenciaban de los demás por un conjunto
de características o propiedades, y por un conjunto de acciones
que realizaban en respuesta a unos eventos que se originaban en
otros objetos o en el entorno. También podemos darnos cuenta de
que, aunque todos los objetos tienen propiedades distintas,
como el color del cabello, el grado de simpatía o el peso,
todos tienen un conjunto de atributos en común por ser ejemplos
de una entidad superior llamada “ser humano”.
Un ejemplo.
Como hemos podido ver, en esta situación nos hemos encontrado
con objetos que se diferenciaban de los demás por un conjunto
de características o propiedades, y por un conjunto de acciones
que realizaban en respuesta a unos eventos que se originaban en
otros objetos o en el entorno. También podemos darnos cuenta de
que, aunque todos los objetos tienen propiedades distintas,
como el color del cabello, el grado de simpatía o el peso,
todos tienen un conjunto de atributos en común por ser ejemplos
de una entidad superior llamada “ser humano”.
Las propiedades, como hemos visto antes, son las
características intrínsecas del objeto. Éstas, se
representan a modo de variables, solo que
técnicamente, pasan a denominarse propiedades
Un ejemplo.
A este patrón de objetos (en nuestro caso “ser humano”) lo
llamaremos clase. Con este ejemplo espero que se entienda
que los objetos son instancias o casos concretos de las clases,
que no son más que plantillas que definen las variables y los
métodos comunes a todos los objetos de un cierto tipo. La clase
“ser humano” tendrá, entre sus muchas variables miembro o
variables que la componen: color del cabello, color de los ojos,
estatura, peso, fecha de nacimiento, etc.
Un ejemplo.
A este patrón de objetos (en nuestro caso “ser humano”) lo
llamaremos clase. Con este ejemplo espero que se entienda
que los objetos son instancias o casos concretos de las clases,
que no son más que plantillas que definen las variables y los
métodos comunes a todos los objetos de un cierto tipo. La clase
“ser humano” tendrá, entre sus muchas variables miembro o
variables que la componen: color del cabello, color de los ojos,
estatura, peso, fecha de nacimiento, etc.
Las clases son los modelos sobre los
cuáles se construirán nuestros objetos.
Un ejemplo.
A este patrón de objetos (en nuestro caso “ser humano”) lo
llamaremos clase. Con este ejemplo espero que se entienda
que los objetos son instancias o casos concretos de las clases,
que no son más que plantillas que definen las variables y los
métodos comunes a todos los objetos de un cierto tipo. La clase
“ser humano” tendrá, entre sus muchas variables miembro o
variables que la componen: color del cabello, color de los ojos,
estatura, peso, fecha de nacimiento, etc.
Los métodos son funciones (como
las que vimos anteriormente), solo
que técnicamente se denominan
métodos, y representan acciones
propias que puede realizar el objeto
(y no otro.)
Un ejemplo.
A partir de una clase se podrán generar todos los objetos que
se deseen especificando valores particulares para cada una de
las variables definida por la clase. Así, encontraremos el
objeto farmacéutica, cuyo color de cabello es rubio, color de ojos
azul, estatura 175 cm., peso 50 Kg., y así sucesivamente.
Un ejemplo.
A partir de una clase se podrán generar todos los objetos que
se deseen especificando valores particulares para cada una de
las variables definida por la clase. Así, encontraremos el
objeto farmacéutica, cuyo color de cabello es rubio, color de ojos
azul, estatura 175 cm., peso 50 Kg., y así sucesivamente.
Las clases por sí mismas, no son más que modelos que nos
servirán para crear objetos en concreto. Podemos decir que una
clase, es el razonamiento abstracto de un objeto, mientras que
el objeto, es su materialización. A la acción de crear objetos, se
la denomina instanciar una clase y dicha instancia, consiste en
asignar la clase, como asignar valor a una variable.
Otro ejemplo.
Por ejemplo, un objeto que modelase una bicicleta en el mundo
real tendría variables que indicararían el estado actual de la
bicicleta: su velocidad es de 20 km/h, su cadencia de pedaleo 90
r.p.m. y su marcha actual es la 5ª. Estas variables se
conocen formalmente como variables instancia o variables
miembro porque contienen el estado de un objeto bicicleta
particular y, en programación orientada a objetos, un objeto
particular se denomina una instancia.
Otro ejemplo.
Además de estas variables, el objeto bicicleta podría tener
métodos para frenar, cambiar la cadencia de pedaleo, y
cambiar de marcha (la bicicleta no tendría que tener un
método para cambiar su velocidad pues ésta es función de la
cadencia de pedaleo, la marcha en la que está y de si los frenos
están siendo utilizados o no, entre otros muchos factores). Estos
métodos se denominan formalmente métodos instancia o
métodos miembro, ya que cambian el estado de una instancia u
objeto bicicleta particular.
Otro ejemplo.
Otro ejemplo.
El diagrama del objeto
bicicleta muestra las variables
objeto en el núcleo o centro
del objeto y los métodos
rodeando el núcleo y
protegiéndolo de otros
objetos del programa. Este
hecho de empaquetar o
proteger las variables
miembro con los métodos
miembro se denomina
encapsulamiento.
Otro ejemplo.
Este dibujo conceptual que
muestra el núcleo de
variables miembro del
objeto protegido por una
membrana protectora de
métodos o funciones
miembro es la representación
ideal de un objeto y es el ideal
que los programadores
orientados a objetos deben
buscar.
Beneficios P.O.O.
A menudo, por razones prácticas, es posible que un objeto desee
exponer alguna de sus variables miembro, o proteger otras de
sus propios métodos o funciones miembro. Por ejemplo, Java
permite establecer 4 niveles de protección de las variables y
de las funciones miembro para casos como éste. Los niveles
de protección determinan qué objetos y clases pueden
acceder a qué variables o a qué métodos. De cualquier forma, el
hecho de encapsular las variables y las funciones miembro
relacionadas proporciona dos importantes beneficios a los
programadores de aplicaciones:
Beneficios P.O.O.
1. Capacidad de crear módulos: El código fuente de un objeto
puede escribirse y mantenerse independiente del código
fuente del resto de los objetos. Así, un objeto puede
pasarse fácilmente de una parte a otra del programa.
Podemos dejar nuestra bicicleta a un amigo, y ésta seguirá
funcionando.
Beneficios P.O.O.
2. Protección de información: Un objeto tendrá una interfaz
pública perfectamente definida que otros objetos podrán usar
para comunicarse con él. Así, los objetos pueden mantener
información privada y pueden cambiar el modo de operar
de sus funciones miembros sin que esto afecte a otros objetos
que usen estas funciones miembro. Es decir, no
necesitamos entender cómo funciona el mecanismo de
cambio de marcha para hacer uso de él.
Mensajes.
Un solo objeto no es muy útil. En general, un objeto aparece como
un componente de un programa o de una aplicación que
contiene otros muchos objetos. Precisamente haciendo uso de
esta interacción, los programadores consiguen una funcionalidad
de mayor orden y modelan comportamientos mucho más
complejos.
Una bicicleta colgada de un gancho en el garaje no es más que una
estructura de aleación de titanio y un poco de goma. Por sí sola, tu
bicicleta es incapaz de desarrollar actividad alguna. Tu bicicleta es
realmente útil en tanto que otro objeto (tú) interactúa con ella
(pedalea.)
Mensajes.
Los objetos de un programa interactúan y se comunican
entre ellos por medio de mensajes. Cuando un objeto A quiere
que otro objeto B ejecute una de sus funciones miembro (métodos
de B), el objeto A manda un mensaje al objeto B.
Mensajes.
Mensajes.
Mensajes.
En ocasiones, el objeto que recibe el mensaje necesita más
información para saber exactamente lo que tiene que hacer; por
ejemplo, cuando se desea cambiar la marcha de una bicicleta, se
debe indicar la marcha a la que se quiere cambiar. Esta
información se pasa junto con el mensaje en forma de
parámetro.
Partes que componen un mensajes.
1. El objeto al cual se
manda el mensaje
(TuBicicleta).
2. El método o función
miembro que debe
ejecutar
(CambiarDeMarcha).
3. Los parámetros que
necesita ese método
(Marcha)
Partes que componen un mensajes.
1. El objeto al cual se
manda el mensaje
(TuBicicleta).
2. El método o función
miembro que debe
ejecutar
(CambiarDeMarcha).
3. Los parámetros que
necesita ese método
(Marcha)
Partes que componen un mensajes.
Estas tres partes del
mensaje (objeto
destinatario, método y
parámetros) son
suficiente información
para que el objeto que
recibe el mensaje
ejecute el método o la
función miembro
solicitada.
Ventajas de los mensajes.
1. El comportamiento de un objeto está completamente
determinado (a excepción del acceso directo a variables
miembro públicas) por sus métodos, así que los mensajes
representan todas las posibles interacciones que pueden
realizarse entre objetos.
2. Los objetos no necesitan formar parte del mismo proceso, ni
siquiera residir en un mismo ordenador para mandarse
mensajes entre ellos (y de esta forma interactuar.)
¿Qué es un clase?
En el mundo real existen varios objetos de un mismo tipo,
o como diremos enseguida, de una misma clase. Por ejemplo,
mi bicicleta es una de las muchas bicicletas que existen en el
mundo. Usando la terminología de la programación orientada
a objetos, diremos que mi bicicleta es una instancia de la clase
de objetos conocida como bicicletas. Todas las bicicletas tienen
algunos estados o atributos (color, marcha actual, cadencia
actual, dos ruedas) y algunos métodos (cambiar de marcha,
frenar) en común. Sin embargo, el estado particular de cada
bicicleta es independiente del estado de las demás bicicletas.
En el mundo real existen varios objetos de un mismo tipo,
o como diremos enseguida, de una misma clase. Por ejemplo,
mi bicicleta es una de las muchas bicicletas que existen en el
mundo. Usando la terminología de la programación orientada
a objetos, diremos que mi bicicleta es una instancia de la clase
de objetos conocida como bicicletas. Todas las bicicletas tienen
algunos estados o atributos (color, marcha actual, cadencia
actual, dos ruedas) y algunos métodos (cambiar de marcha,
frenar) en común. Sin embargo, el estado particular de cada
bicicleta es independiente del estado de las demás bicicletas.
¿Qué es un clase?
La cadencia es la
velocidad a la que
pedaleamos y la
medimos en pedaladas o
revoluciones por minuto
que dan las bielas.
¿Qué es un clase?
La particularización de estos atributos puede ser diferente.
Es decir, una bicicleta podrá ser azul, y otra roja, pero ambas
tienen en común el hecho de tener una variable “color”. De este
modo podemos definir una plantilla de variables y métodos
para todas las bicicletas. Las plantillas para crear objetos
son denominadas clases. Una clase es una plantilla que define
las variables y los métodos que son comunes para todos los
objetos de un cierto tipo.
¿Qué es un clase?
En nuestro ejemplo, la clase bicicleta definiría variables miembro
comunes a todas las bicicletas, como la marcha actual, la
cadencia actual, etc. Esta clase también debe declarar e
implementar los métodos o funciones miembro que
permiten al ciclista cambiar de marcha, frenar, y cambiar la
cadencia de pedaleo.
Definición de la clase “bicicleta”.
Definición de la clase “bicicleta”.
Después de haber creado la clase bicicleta, podemos crear
cualquier número de objetos bicicleta a partir de la clase.
Cuando creamos una instancia de una clase, el sistema reserva
suficiente memoria para el objeto con todas sus variables
miembro. Cada instancia tiene su propia copia de las variables
miembro definidas en la clase.
Definición de la clase “bicicleta”.
#1
MiBicicleta
Definición de la clase “bicicleta”.
#2
TuBicicleta
Herencia.
El mecanismo de herencia permite definir nuevas clases
partiendo de otras ya existentes. Las clases que derivan de otras
heredan automáticamente todo su comportamiento, pero
además pueden introducir características particulares propias
que las diferencian. Con el mero hecho de conocer a qué clase
pertenece un objeto, ya se sabe bastante sobre él. Puede que no
sepamos lo que es la “Pinarello”, pero si nos dicen que es una
bicicleta, ya sabremos que tiene dos ruedas, manillar, pedales y
otras cosas más.
Herencia.
La programación orientada a objetos va más allá,
permitiéndonos definir clases a partir de otras clases ya
construidas. Por ejemplo, las bicicletas de montaña, las de
carretera y los tándems son todos, en definitiva, bicicletas. En
términos de programación orientada a objetos, son subclases o
clases derivadas de la clase bicicleta. Análogamente, la clase
bicicleta es la clase base o superclase de las bicicletas de
montaña, las de carretera y los tándems.
Herencia.
La programación orientada a objetos va más allá,
permitiéndonos definir clases a partir de otras clases ya
construidas. Por ejemplo, las bicicletas de montaña, las de
carretera y los tándems son todos, en definitiva, bicicletas. En
términos de programación orientada a objetos, son subclases o
clases derivadas de la clase bicicleta. Análogamente, la clase
bicicleta es la clase base o superclase de las bicicletas de
montaña, las de carretera y los tándems.
Algunos objetos comparten las mismas propiedades y
métodos que otro objeto, y además agregan nuevas
propiedades y métodos. A esto se lo denomina herencia:
una clase que hereda de otra.
Herencia.
Herencia.
Cada subclase hereda los estados (en forma de declaración de
variables) de la superclase de la cual deriva. Las bicicletas de
montaña, las de carretera y los tándems comparten algunos
estados: cadencia, velocidad y otros. Además, cada subclase
hereda los métodos de su superclase. Las bicicletas de montaña,
las de carretera y los tándems comparten algunos
comportamientos: frenar y cambiar la cadencia de pedaleo, por
ejemplo.
Herencia.
Sin embargo, las clases derivadas no se encuentran limitadas por
los estados y comportamientos que heredan de su superclase.
Muy al contrario, estas subclases pueden añadir variables y
métodos a aquellas que han heredado. Los tándems tienen dos
asientos y dos manillares; algunas bicicletas de montaña tienen
una catalina adicional con un conjunto de marchas con
relaciones de transmisión mucho más cortas.
Herencia.
Las clases derivadas pueden incluso sobrescribir los métodos
heredados y proporcionar implementaciones más especializadas
para esos métodos. Por ejemplo, si nuestra bicicleta de montaña
tuviera una catalina extra, podríamos sobrescribir el método
“CambiarDeMarcha” para poder usar esas nuevas marchas.
Herencia.
Además, no estamos limitados a un único nivel de herencia. El
árbol de herencias o jerarquía de clases puede ser tan extenso
como necesitemos. Los métodos y las variables miembro se
heredarán hacia abajo a través de todos los niveles de la
jerarquía. Normalmente, cuanto más abajo está una clase en la
jerarquía de clases, más especializado es su comportamiento. En
nuestro ejemplo, podríamos hacer que la clase bicicleta derivase
de una superclase de vehículos. La herencia es una herramienta
clave para abordar la resolución de un problema de forma
organizada, pues permite definir una relación jerárquica entre
todos los conceptos que se están manejando.
Herencia.
Es posible emplear esta técnica para descomponer un problema
de cierta magnitud en un conjunto de problemas subordinados a
él. La resolución del problema original se consigue cuando se
han resuelto cada uno de los problemas subordinados, que a su
vez pueden contener otros. Por consiguiente, la capacidad de
descomponer un problema o concepto en un conjunto de
objetos relacionados entre sí cuyo comportamiento es
fácilmente identificable puede ser extraordinariamente útil para
el desarrollo de programas informáticos.
Ventajas de la herencia.
1. Las clases derivadas o subclases proporcionan comportamientos
especializados a partir de los elementos comunes que hereda
de la clase base. A través del mecanismo de herencia los
programadores pueden reutilizar el código de la superclase tantas
veces como sea necesario.
2. Los programadores pueden implementar las superclases abstractas,
para definir comportamientos genéricos. Las clases abstractas
definen e implementan parcialmente comportamientos, pero gran
parte de estos no se definen ni se implementan totalmente. Así,
otros programadores podrán usar estas superclases detallando
esos comportamientos con subclases especializadas.
Ventajas de la herencia.
El propósito de una clase abstracta es servir de modelo base para la
creación de otras clases derivadas, pero cuya implantación depende de
las características particulares de cada una de ellas. Un ejemplo de
clase abstracta podría ser en nuestro caso la clase vehículos. Esta clase
sería una clase base genérica, a partir de la cual podríamos ir creando
todo tipo de clases derivadas.
Fuentes consultadas.
 http://luis.izqui.org/resources/ProgOrientadaObjetos.pdf
 https://uniwebsidad.com/libros/python/capitulo-5/

Más contenido relacionado

DOCX
La 100 preguntas sobre word
PPTX
Tipos de buscadores web
PDF
Prog orientadaobjetos
PDF
Prog orientadaobjetos
PDF
Orientacion a Objetos para Dummies
PPTX
Programacion orientada a obetos
DOCX
Que es
DOCX
ANALISIS Y DISEÑO ORIENTADA A UN OBJETO
La 100 preguntas sobre word
Tipos de buscadores web
Prog orientadaobjetos
Prog orientadaobjetos
Orientacion a Objetos para Dummies
Programacion orientada a obetos
Que es
ANALISIS Y DISEÑO ORIENTADA A UN OBJETO

Similar a Introducción a la progrogramación orientada a objetos (20)

DOCX
Hgtyj
PDF
Prog orientadaobjetos
PDF
1 prog orientadaobjetos
PDF
Introducion a POO
PDF
Prog orientadaobjetos
PDF
Prog orientadaobjetos
PDF
Programación Orientada a Objetos
DOCX
DOCX
Programacion Orientada a Objetos
PDF
Teoría sintáctico-gramatical de objetos (eugenia bahit)
DOCX
Que es y para que sirve la programacion orientada a objetos
DOCX
Programacion orientada a objetos
PDF
Orientacion A Objetos Para Dummies
PDF
Microsoft PowerPoint - Desarrollo Orientado a Objeto version 2.pptx - 1_Conce...
DOCX
Programacion orientada a objetos
PPT
Programacion orientada a objetos
PPT
Programacion orientada a objetos
PPTX
Windows Phone - Sesión 1 - SenaGeeks
PDF
Introducción a la programación orientada a objetos en c (POO)
PDF
Fundamentos del Enfoque OO
Hgtyj
Prog orientadaobjetos
1 prog orientadaobjetos
Introducion a POO
Prog orientadaobjetos
Prog orientadaobjetos
Programación Orientada a Objetos
Programacion Orientada a Objetos
Teoría sintáctico-gramatical de objetos (eugenia bahit)
Que es y para que sirve la programacion orientada a objetos
Programacion orientada a objetos
Orientacion A Objetos Para Dummies
Microsoft PowerPoint - Desarrollo Orientado a Objeto version 2.pptx - 1_Conce...
Programacion orientada a objetos
Programacion orientada a objetos
Programacion orientada a objetos
Windows Phone - Sesión 1 - SenaGeeks
Introducción a la programación orientada a objetos en c (POO)
Fundamentos del Enfoque OO
Publicidad

Más de Facultad de Ciencias y Sistemas (20)

PDF
PDF
09 ordenamiento-en-vectores-en-c
PDF
08 mas-de-vectores-en-c
PDF
07 vectores-en-c final
PDF
05 cadenas-de-caracteres-en-c
PDF
04 mas-estructuras-iterativas-en-c
PDF
03 estructuras-iterativas-en-c
PDF
02 mas-de-las-estructuras-de-programacion-en-c
PDF
01 estructuras-de-programacion-en-c
PDF
Procesamiento del lenguaje natural con python
PPTX
Actividades de aprendizaje en Moodle
PPTX
Creación de grupos en Moodle
PPTX
Introducción a la progrogramación orientada a objetos con Java
PPTX
Como crear un diagrama de clases
PDF
Diagrama de clases - Ejemplo monográfico 02
PDF
Diagrama de clases - Ejemplo monográfico 01
PPTX
Otro ejemplo de diagrama de clases UML
PPTX
Un ejemplo de diagrama de clases
09 ordenamiento-en-vectores-en-c
08 mas-de-vectores-en-c
07 vectores-en-c final
05 cadenas-de-caracteres-en-c
04 mas-estructuras-iterativas-en-c
03 estructuras-iterativas-en-c
02 mas-de-las-estructuras-de-programacion-en-c
01 estructuras-de-programacion-en-c
Procesamiento del lenguaje natural con python
Actividades de aprendizaje en Moodle
Creación de grupos en Moodle
Introducción a la progrogramación orientada a objetos con Java
Como crear un diagrama de clases
Diagrama de clases - Ejemplo monográfico 02
Diagrama de clases - Ejemplo monográfico 01
Otro ejemplo de diagrama de clases UML
Un ejemplo de diagrama de clases
Publicidad

Último (20)

PPTX
Trabajo de Investigación sobre AFP en Chile
PDF
14062024_Criterios_programacion_multianual_presupuestaria_gasto_materia_perso...
PPT
Concepto de Management y Teoría Administrativa P-1.ppt
PDF
Modelo de negocios CANVAS ing industrial
PDF
GESTION PUBLICA Y SU INCIDENCIA EN EL ESTADO PERUANO
PPTX
Tema 8 Libro Contable Registro de Ventas.PPTX
PPT
04 ONCENIO DE LEGUÍA REPUBLICA PERUANA SIGLOS XX LATAM
PPTX
S16_S1_Ratios Financieros trabajo final.pptx
PPT
Ejemplo practico de flujo de efectivo de el insittuto senati
PDF
practica de presupuesto en un departamento
PDF
unidad 5_presupuestos_POWER_FINANCIERA.pdf
PPTX
MÉXICO EN EL CONCIERTO INTERNACIONAL Y LAS REFORMAS
PPTX
CONTABILIDAD GUBERNAMENTAL II SESION 1.pptx
PPTX
HOSPITAL REGIONAL DE LORETO 12.12.24 - ALMILCAR ASENCIO SAENZ.pptx
PPT
PRESENTACIÓN PRESUPUESTO 2010_CONCEJO.ppt
DOCX
Un pacto necesario: Europa, Ucrania y la nueva era arancelaria.(Ampliado y ac...
PPTX
clase de administración Presupuesto_de_Capital.pptx
PPTX
AFP Plan vital disertación DERECHO LABORAL
PPTX
JORNADA LABORAL Y TIPOS DE HORAS EXTRAS.pptx
PPTX
Presentación atención emergencias viales_0.pptx
Trabajo de Investigación sobre AFP en Chile
14062024_Criterios_programacion_multianual_presupuestaria_gasto_materia_perso...
Concepto de Management y Teoría Administrativa P-1.ppt
Modelo de negocios CANVAS ing industrial
GESTION PUBLICA Y SU INCIDENCIA EN EL ESTADO PERUANO
Tema 8 Libro Contable Registro de Ventas.PPTX
04 ONCENIO DE LEGUÍA REPUBLICA PERUANA SIGLOS XX LATAM
S16_S1_Ratios Financieros trabajo final.pptx
Ejemplo practico de flujo de efectivo de el insittuto senati
practica de presupuesto en un departamento
unidad 5_presupuestos_POWER_FINANCIERA.pdf
MÉXICO EN EL CONCIERTO INTERNACIONAL Y LAS REFORMAS
CONTABILIDAD GUBERNAMENTAL II SESION 1.pptx
HOSPITAL REGIONAL DE LORETO 12.12.24 - ALMILCAR ASENCIO SAENZ.pptx
PRESENTACIÓN PRESUPUESTO 2010_CONCEJO.ppt
Un pacto necesario: Europa, Ucrania y la nueva era arancelaria.(Ampliado y ac...
clase de administración Presupuesto_de_Capital.pptx
AFP Plan vital disertación DERECHO LABORAL
JORNADA LABORAL Y TIPOS DE HORAS EXTRAS.pptx
Presentación atención emergencias viales_0.pptx

Introducción a la progrogramación orientada a objetos

  • 1. Universidad Nacional de Ingeniería. Facultad de Ciencias y Sistemas. Dpto de Informática Asignatura: Introducción a la Programación Programación Orientada a Objetos. (P.O.O.) Unidad III:
  • 2. Programación Orientada a Objetos. (P.O.O.) Unidad III: Objetivos: Conocer la filosofía de las clases.
  • 3. Programación Orientada a Objetos. (P.O.O.) Unidad III: 3.1 Elementos fundamentales de la programación orientada a objetos. 3.2 Representación gráfica (UML.)
  • 4. Bibliografía C++ para Ingeniería y Ciencia. Editorial Cengage Learning Editores S. A. de C. V. Segunda edición. 2007. Gary J. Bronson. Ficha 9a . Páginas 64 – 88.
  • 5. Bibliografía Fundamentos de Programación con el Lenguaje de Programación C++. Dpto. Lenguajes y CC. Computación E.T.S.I. Informática. 2017. Vicente Benjumea y Manuel Roldán. Capítulo 13. Páginas: 167 - 168.
  • 6. Introducción. Por los años 70 (s. XX) una nueva metodología denominada "desarrollo estructurado", basada en la independencia de datos y funciones o métodos, permitió superar la llamada "crisis del software". El diseño "top-down" se convirtió en sinónimo de enfoque estructurado: un problema se asimila a una función o procedimiento, que se descompone en problemas más pequeños, que a su vez se descomponen en otras funciones más pequeñas, hasta llegar a problemas descomponibles. Gracias a estos métodos los software fueron poco a poco creciendo en tamaño y complejidad, de forma que al final los problemas solucionados por el desarrollo estructurado generaron nuevos problemas más difícil de solucionar.
  • 7. Bibliografía C++ / OOP. Un enfoque práctico. Ricardo Devis Botella. Capítulo 1. Páginas: 7 – 10, 13 – 15, 17 – 20, 22 – 26.
  • 9. Pensar en objetos, puede resultar -al inicio- una tarea difícil. Sin embargo, difícil no significa complejo. Por el contrario, pensar en objetos representa la mayor simplicidad que uno podría esperar del mundo de la programación. Pensar en objetos, es simple... aunque lo simple, no necesariamente signifique sencillo.
  • 10. Y ¿qué es un objeto?
  • 11. Un objeto es una cosa. Y, si una cosa es un sustantivo, entonces un objeto es un sustantivo. Al mirar a tu alrededor encontrarás decenas, cientos de objetos. Tu ordenador, es un objeto. Tú, eres un objeto. Tu llave es un objeto. La taza con café (esa que tienes frente a ti para estudiar y no dormirte), es otro objeto. A bueno, y se me olvidaba, tu mascota también es un objeto. Sencillo ¿cierto? Entonces, de ahora en más, solo concéntrate en pensar la vida en objetos (al menos, hasta terminar esta unidad.)
  • 13. Describir un objeto, es simplemente mencionar sus cualidades. Las cualidades son adjetivos. Si no sabes que es un adjetivo, estamos … (y mucho). Pero, podemos decir que un adjetivo es una cualidad del sustantivo. Entonces, para describir "la manera de ser" de un objeto, debemos preguntarnos ¿cómo es el objeto? Toda respuesta que comience por "el objeto es", seguida de un adjetivo, será una cualidad del objeto.
  • 14. Algunos ejemplos:  El objeto es verde.  El objeto es grande.  El objeto es feo.
  • 15. Ahora, imagínate frente a un niño de 2 años (niño: objeto que pregunta cosas que tú das por entendidas de forma implícita). Y cada vez que le dices las cualidades de un objeto al molesto niño-objeto, éste te pregunta: -¿Qué es...?, seguido del adjetivo con el cuál finalizaste tu frase. Entonces, tu le respondes diciendo es un/una seguido de un sustantivo. Te lo muestro con un ejemplo:  El objeto es verde. ¿Qué es verde? Un color.  El objeto es grande. ¿Qué es grande? Un tamaño.  El objeto es feo. ¿Qué es feo? Un aspecto.
  • 16. Estos sustantivos que responden a la pregunta del niño, pueden pasar a formar parte de las descripciones anteriores:  El objeto es de color verde.  El objeto es de tamaño grande.  El objeto es de aspecto feo. Podemos decir entonces -y todo esto, gracias al molesto niño-objeto-, que una cualidad, es un atributo (derivado de cualidad atribuible a un objeto) y que entonces, un objeto es un sustantivo que posee atributos, cuyas cualidades lo describen.
  • 17. OBJETO (sustantivo) ATRIBUTO (locución adjetiva) CUALIDAD DEL ATRIBUTO (adjetivo) (el) Objeto (es de) color Verde (el) Objeto (es de) tamaño Grande (el) Objeto (es de) aspecto Feo
  • 18. ! Pero algunos objetos, también se componen por otros objetos!
  • 19. Los objetos tienen otras cosas. Estas otras cosas, son aquellas pseudo-cualidades que en vez de responder a ¿cómo es el objeto? responden a ¿cómo está compuesto el objeto? o incluso, aún más simple ¿Qué tiene el objeto?. La respuesta a esta pregunta, estará dada por la frase “el objeto tiene...”, seguida de un adverbio de cantidad (uno, varios, muchos, algunos, unas cuantas) y un sustantivo. Algunos ejemplos:  El objeto tiene algunas antenas.  El objeto tiene un ojo.
  • 20. Los componentes de un objeto, también integran los atributos de ese objeto. Solo que estos atributos, son algo particulares: son otros objetos que poseen sus propias cualidades. Es decir, que estos atributos-objeto también responderán a la pregunta ¿Cómo es/son ese/esos/esas? seguido del atributo-objeto (sustantivo). Ampliemos el ejemplo para que se entienda mejor:
  • 21. El objeto tiene algunas antenas. ¿Cómo son esas antenas?  Las antenas son de color violeta  Las antenas son de longitud extensa El objeto tiene un ojo. ¿Cómo es ese ojo?  El ojo es de forma oval.  El ojo es de color azul.  El ojo es de tamaño grande.
  • 22. OBJETO (sustantivo) ATRIBUTO- OBJETO (sustantivo) ATRIBUTOS (locución adjetiva) CUALIDADES DE LOS ATRIBUTOS (adjetivo) (el) Objeto (tiene algunas) antenas (de) color Violeta (el) Objeto (tiene algunas) antenas (de) longitud extensa (el) Objeto (tiene un) ojo (de) forma Oval (el) Objeto (tiene un) ojo (de) color azul (el) Objeto (tiene un) ojo (de) tamaño grande
  • 23. Entonces, podemos deducir que un objeto puede tener dos tipos de atributos:  Los que responden a la pregunta ¿Cómo es el objeto? con la frase El objeto es... + adjetivo (atributos definidos por cualidades)  Los que responden a la pregunta ¿Qué tiene el objeto? con la frase El objeto tiene... + sustantivo (atributos definidos por las cualidades de otro objeto).
  • 25. Ya describimos las cualidades de nuestros objetos. Pero de lo que no hemos hablado, es de aquellas cosas que los objetos "pueden hacer", es decir, "cuáles son sus capacidades". Los objetos tiene la capacidad de realizar acciones. Las acciones, son verbos. Es decir, que para conocer las capacidades de un objeto, debes preguntarte ¿Qué puede hacer el objeto? y la respuesta a esta pregunta, estará dada por todas aquellas que comiencen por la frase “el objeto puede” seguida de un verbo en infinitivo.
  • 26. Algunos ejemplos:  El objeto original puede flotar.  El nuevo objeto (además) puede saltar.
  • 27. Cuando En programación se llama Y en POO es Hablamos de objeto Objeto Un elemento Hablamos de atributos (o cualidades) Propiedades Un elemento Hablamos de acciones que puede realizar el objeto Métodos Un elemento Hablamos de atributos-objeto Composición Una técnica Vemos que los objetos relacionados entre sí, tienen nombres de atributos iguales (por ejemplo: color y tamaño) y sin embargo, pueden tener valores diferentes Polimorfismo Una característica Hablamos de objetos que son sub-tipos (o ampliación) de otros Herencia Una característica
  • 28. Ahora, pasemos a algo un poco más académico.
  • 30. Introducción. La Programación Orientada a Objetos (POO u OOP por sus siglas en inglés), es un paradigma de programación. Cómo tal, nos enseña un método -probado y estudiado- el cual se basa en las interacciones de objetos (todo lo descrito anteriormente) para resolver las necesidades de un sistema informático.
  • 31. Introducción. La Programación Orientada a Objetos (POO u OOP por sus siglas en inglés), es un paradigma de programación. Cómo tal, nos enseña un método -probado y estudiado- el cual se basa en las interacciones de objetos (todo lo descrito anteriormente) para resolver las necesidades de un sistema informático. 2. m. Teoría o conjunto de teorías cuyo núcleo central se acepta sin cuestionar y que suministra la base y modelo para resolver problemas y avanzar en el conocimiento. Ejemplo: El paradigma newtoniano. Diccionario de la lengua española. (Edición del Tricentenario. Actualización 2018)
  • 32. Introducción. Cuando hacemos referencia a la programación orientada a objetos no estamos hablando de unas cuantas características nuevas añadidas a un lenguaje de programación. Estamos hablando de una nueva forma de pensar acerca del proceso de descomposición de problemas y de desarrollo de soluciones de programación. La programación orientada a objetos surge en la historia como un intento para dominar la complejidad que, de forma innata, posee el software. En la POO vamos a fijarnos no en lo que hay que hacer (verbos o acciones) en el problema, sino en cuál es el escenario real del mismo, y vamos a intentar simular ese escenario en nuestro programa.
  • 33. Introducción. En el caso de los lenguajes orientados a objetos, como es el caso de C++ y Java, el elemento básico no es la función, sino un ente denominado precisamente objeto. Un objeto es la representación, en un programa, de un concepto; y contiene toda la información necesaria para abstraerlo: datos que describen sus atributos y operaciones que pueden realizarse sobre los mismos.
  • 34. Introducción. Es cierto que con C++ se puede escribir código que no es programación orientada a objetos. Esta situación no se da en Java, dotado desde las primeras etapas de su diseño para la POO, y donde no cabe obviar la orientación a objetos para el desarrollo de programas.
  • 35. Un ejemplo. Un domingo por la tarde estoy en casa viendo la televisión, y de repente mi madre siente un fuerte dolor de cabeza; como es natural, lo primero que hago es tratar de encontrar una caja de aspirinas. Lo que acabo de describir es una situación que probablemente no resulte muy extraña a muchos de nosotros. Vamos a verla en clave de objetos…
  • 36. Un ejemplo. El objeto hijo ha recibido un mensaje procedente del objeto madre. El objeto hijo responde al mensaje o evento ocurrido mediante una acción: buscar aspirinas. La madre no tiene que decirle al hijo dónde debe buscar, es responsabilidad del hijo resolver el problema como considere más oportuno. Al objeto madre le basta con haber emitido un mensaje.
  • 37. Un ejemplo. El hijo no encuentra aspirinas en el botiquín y decide acudir a la farmacia de guardia más cercana para comprar aspirinas. En la farmacia es atendido por una señorita que le pregunta qué desea, a lo que el hijo responde: "una caja de aspirinas, por favor". La farmacéutica desaparece para regresar al poco tiempo con una caja de aspirinas en la mano. El hijo paga el importe, se despide y vuelve a su casa. Allí le da un comprimido a su madre, la cual al cabo de un rato comienza a experimentar una notable mejoría hasta la completa desaparición del dolor de cabeza.
  • 38. Un ejemplo. El hijo, como objeto responsable de un cometido, sabe lo que debe hacer hasta conseguir una aspirina. Para ello entra en relación con un nuevo objeto, la farmacéutica, quien responde al mensaje o evento de petición del objeto hijo con la búsqueda de la aspirina. El objeto farmacéutica es ahora el responsable de la búsqueda de la aspirina. El objeto farmacéutica lanza un mensaje al objeto hijo solicitando el pago del importe, y el objeto hijo responde a tal evento con la acción de pagar.
  • 39. Un ejemplo. Como hemos podido ver, en esta situación nos hemos encontrado con objetos que se diferenciaban de los demás por un conjunto de características o propiedades, y por un conjunto de acciones que realizaban en respuesta a unos eventos que se originaban en otros objetos o en el entorno. También podemos darnos cuenta de que, aunque todos los objetos tienen propiedades distintas, como el color del cabello, el grado de simpatía o el peso, todos tienen un conjunto de atributos en común por ser ejemplos de una entidad superior llamada “ser humano”.
  • 40. Un ejemplo. Como hemos podido ver, en esta situación nos hemos encontrado con objetos que se diferenciaban de los demás por un conjunto de características o propiedades, y por un conjunto de acciones que realizaban en respuesta a unos eventos que se originaban en otros objetos o en el entorno. También podemos darnos cuenta de que, aunque todos los objetos tienen propiedades distintas, como el color del cabello, el grado de simpatía o el peso, todos tienen un conjunto de atributos en común por ser ejemplos de una entidad superior llamada “ser humano”. Las propiedades, como hemos visto antes, son las características intrínsecas del objeto. Éstas, se representan a modo de variables, solo que técnicamente, pasan a denominarse propiedades
  • 41. Un ejemplo. A este patrón de objetos (en nuestro caso “ser humano”) lo llamaremos clase. Con este ejemplo espero que se entienda que los objetos son instancias o casos concretos de las clases, que no son más que plantillas que definen las variables y los métodos comunes a todos los objetos de un cierto tipo. La clase “ser humano” tendrá, entre sus muchas variables miembro o variables que la componen: color del cabello, color de los ojos, estatura, peso, fecha de nacimiento, etc.
  • 42. Un ejemplo. A este patrón de objetos (en nuestro caso “ser humano”) lo llamaremos clase. Con este ejemplo espero que se entienda que los objetos son instancias o casos concretos de las clases, que no son más que plantillas que definen las variables y los métodos comunes a todos los objetos de un cierto tipo. La clase “ser humano” tendrá, entre sus muchas variables miembro o variables que la componen: color del cabello, color de los ojos, estatura, peso, fecha de nacimiento, etc. Las clases son los modelos sobre los cuáles se construirán nuestros objetos.
  • 43. Un ejemplo. A este patrón de objetos (en nuestro caso “ser humano”) lo llamaremos clase. Con este ejemplo espero que se entienda que los objetos son instancias o casos concretos de las clases, que no son más que plantillas que definen las variables y los métodos comunes a todos los objetos de un cierto tipo. La clase “ser humano” tendrá, entre sus muchas variables miembro o variables que la componen: color del cabello, color de los ojos, estatura, peso, fecha de nacimiento, etc. Los métodos son funciones (como las que vimos anteriormente), solo que técnicamente se denominan métodos, y representan acciones propias que puede realizar el objeto (y no otro.)
  • 44. Un ejemplo. A partir de una clase se podrán generar todos los objetos que se deseen especificando valores particulares para cada una de las variables definida por la clase. Así, encontraremos el objeto farmacéutica, cuyo color de cabello es rubio, color de ojos azul, estatura 175 cm., peso 50 Kg., y así sucesivamente.
  • 45. Un ejemplo. A partir de una clase se podrán generar todos los objetos que se deseen especificando valores particulares para cada una de las variables definida por la clase. Así, encontraremos el objeto farmacéutica, cuyo color de cabello es rubio, color de ojos azul, estatura 175 cm., peso 50 Kg., y así sucesivamente. Las clases por sí mismas, no son más que modelos que nos servirán para crear objetos en concreto. Podemos decir que una clase, es el razonamiento abstracto de un objeto, mientras que el objeto, es su materialización. A la acción de crear objetos, se la denomina instanciar una clase y dicha instancia, consiste en asignar la clase, como asignar valor a una variable.
  • 46. Otro ejemplo. Por ejemplo, un objeto que modelase una bicicleta en el mundo real tendría variables que indicararían el estado actual de la bicicleta: su velocidad es de 20 km/h, su cadencia de pedaleo 90 r.p.m. y su marcha actual es la 5ª. Estas variables se conocen formalmente como variables instancia o variables miembro porque contienen el estado de un objeto bicicleta particular y, en programación orientada a objetos, un objeto particular se denomina una instancia.
  • 47. Otro ejemplo. Además de estas variables, el objeto bicicleta podría tener métodos para frenar, cambiar la cadencia de pedaleo, y cambiar de marcha (la bicicleta no tendría que tener un método para cambiar su velocidad pues ésta es función de la cadencia de pedaleo, la marcha en la que está y de si los frenos están siendo utilizados o no, entre otros muchos factores). Estos métodos se denominan formalmente métodos instancia o métodos miembro, ya que cambian el estado de una instancia u objeto bicicleta particular.
  • 49. Otro ejemplo. El diagrama del objeto bicicleta muestra las variables objeto en el núcleo o centro del objeto y los métodos rodeando el núcleo y protegiéndolo de otros objetos del programa. Este hecho de empaquetar o proteger las variables miembro con los métodos miembro se denomina encapsulamiento.
  • 50. Otro ejemplo. Este dibujo conceptual que muestra el núcleo de variables miembro del objeto protegido por una membrana protectora de métodos o funciones miembro es la representación ideal de un objeto y es el ideal que los programadores orientados a objetos deben buscar.
  • 51. Beneficios P.O.O. A menudo, por razones prácticas, es posible que un objeto desee exponer alguna de sus variables miembro, o proteger otras de sus propios métodos o funciones miembro. Por ejemplo, Java permite establecer 4 niveles de protección de las variables y de las funciones miembro para casos como éste. Los niveles de protección determinan qué objetos y clases pueden acceder a qué variables o a qué métodos. De cualquier forma, el hecho de encapsular las variables y las funciones miembro relacionadas proporciona dos importantes beneficios a los programadores de aplicaciones:
  • 52. Beneficios P.O.O. 1. Capacidad de crear módulos: El código fuente de un objeto puede escribirse y mantenerse independiente del código fuente del resto de los objetos. Así, un objeto puede pasarse fácilmente de una parte a otra del programa. Podemos dejar nuestra bicicleta a un amigo, y ésta seguirá funcionando.
  • 53. Beneficios P.O.O. 2. Protección de información: Un objeto tendrá una interfaz pública perfectamente definida que otros objetos podrán usar para comunicarse con él. Así, los objetos pueden mantener información privada y pueden cambiar el modo de operar de sus funciones miembros sin que esto afecte a otros objetos que usen estas funciones miembro. Es decir, no necesitamos entender cómo funciona el mecanismo de cambio de marcha para hacer uso de él.
  • 54. Mensajes. Un solo objeto no es muy útil. En general, un objeto aparece como un componente de un programa o de una aplicación que contiene otros muchos objetos. Precisamente haciendo uso de esta interacción, los programadores consiguen una funcionalidad de mayor orden y modelan comportamientos mucho más complejos. Una bicicleta colgada de un gancho en el garaje no es más que una estructura de aleación de titanio y un poco de goma. Por sí sola, tu bicicleta es incapaz de desarrollar actividad alguna. Tu bicicleta es realmente útil en tanto que otro objeto (tú) interactúa con ella (pedalea.)
  • 55. Mensajes. Los objetos de un programa interactúan y se comunican entre ellos por medio de mensajes. Cuando un objeto A quiere que otro objeto B ejecute una de sus funciones miembro (métodos de B), el objeto A manda un mensaje al objeto B.
  • 58. Mensajes. En ocasiones, el objeto que recibe el mensaje necesita más información para saber exactamente lo que tiene que hacer; por ejemplo, cuando se desea cambiar la marcha de una bicicleta, se debe indicar la marcha a la que se quiere cambiar. Esta información se pasa junto con el mensaje en forma de parámetro.
  • 59. Partes que componen un mensajes. 1. El objeto al cual se manda el mensaje (TuBicicleta). 2. El método o función miembro que debe ejecutar (CambiarDeMarcha). 3. Los parámetros que necesita ese método (Marcha)
  • 60. Partes que componen un mensajes. 1. El objeto al cual se manda el mensaje (TuBicicleta). 2. El método o función miembro que debe ejecutar (CambiarDeMarcha). 3. Los parámetros que necesita ese método (Marcha)
  • 61. Partes que componen un mensajes. Estas tres partes del mensaje (objeto destinatario, método y parámetros) son suficiente información para que el objeto que recibe el mensaje ejecute el método o la función miembro solicitada.
  • 62. Ventajas de los mensajes. 1. El comportamiento de un objeto está completamente determinado (a excepción del acceso directo a variables miembro públicas) por sus métodos, así que los mensajes representan todas las posibles interacciones que pueden realizarse entre objetos. 2. Los objetos no necesitan formar parte del mismo proceso, ni siquiera residir en un mismo ordenador para mandarse mensajes entre ellos (y de esta forma interactuar.)
  • 63. ¿Qué es un clase? En el mundo real existen varios objetos de un mismo tipo, o como diremos enseguida, de una misma clase. Por ejemplo, mi bicicleta es una de las muchas bicicletas que existen en el mundo. Usando la terminología de la programación orientada a objetos, diremos que mi bicicleta es una instancia de la clase de objetos conocida como bicicletas. Todas las bicicletas tienen algunos estados o atributos (color, marcha actual, cadencia actual, dos ruedas) y algunos métodos (cambiar de marcha, frenar) en común. Sin embargo, el estado particular de cada bicicleta es independiente del estado de las demás bicicletas.
  • 64. En el mundo real existen varios objetos de un mismo tipo, o como diremos enseguida, de una misma clase. Por ejemplo, mi bicicleta es una de las muchas bicicletas que existen en el mundo. Usando la terminología de la programación orientada a objetos, diremos que mi bicicleta es una instancia de la clase de objetos conocida como bicicletas. Todas las bicicletas tienen algunos estados o atributos (color, marcha actual, cadencia actual, dos ruedas) y algunos métodos (cambiar de marcha, frenar) en común. Sin embargo, el estado particular de cada bicicleta es independiente del estado de las demás bicicletas. ¿Qué es un clase? La cadencia es la velocidad a la que pedaleamos y la medimos en pedaladas o revoluciones por minuto que dan las bielas.
  • 65. ¿Qué es un clase? La particularización de estos atributos puede ser diferente. Es decir, una bicicleta podrá ser azul, y otra roja, pero ambas tienen en común el hecho de tener una variable “color”. De este modo podemos definir una plantilla de variables y métodos para todas las bicicletas. Las plantillas para crear objetos son denominadas clases. Una clase es una plantilla que define las variables y los métodos que son comunes para todos los objetos de un cierto tipo.
  • 66. ¿Qué es un clase? En nuestro ejemplo, la clase bicicleta definiría variables miembro comunes a todas las bicicletas, como la marcha actual, la cadencia actual, etc. Esta clase también debe declarar e implementar los métodos o funciones miembro que permiten al ciclista cambiar de marcha, frenar, y cambiar la cadencia de pedaleo.
  • 67. Definición de la clase “bicicleta”.
  • 68. Definición de la clase “bicicleta”. Después de haber creado la clase bicicleta, podemos crear cualquier número de objetos bicicleta a partir de la clase. Cuando creamos una instancia de una clase, el sistema reserva suficiente memoria para el objeto con todas sus variables miembro. Cada instancia tiene su propia copia de las variables miembro definidas en la clase.
  • 69. Definición de la clase “bicicleta”. #1 MiBicicleta
  • 70. Definición de la clase “bicicleta”. #2 TuBicicleta
  • 71. Herencia. El mecanismo de herencia permite definir nuevas clases partiendo de otras ya existentes. Las clases que derivan de otras heredan automáticamente todo su comportamiento, pero además pueden introducir características particulares propias que las diferencian. Con el mero hecho de conocer a qué clase pertenece un objeto, ya se sabe bastante sobre él. Puede que no sepamos lo que es la “Pinarello”, pero si nos dicen que es una bicicleta, ya sabremos que tiene dos ruedas, manillar, pedales y otras cosas más.
  • 72. Herencia. La programación orientada a objetos va más allá, permitiéndonos definir clases a partir de otras clases ya construidas. Por ejemplo, las bicicletas de montaña, las de carretera y los tándems son todos, en definitiva, bicicletas. En términos de programación orientada a objetos, son subclases o clases derivadas de la clase bicicleta. Análogamente, la clase bicicleta es la clase base o superclase de las bicicletas de montaña, las de carretera y los tándems.
  • 73. Herencia. La programación orientada a objetos va más allá, permitiéndonos definir clases a partir de otras clases ya construidas. Por ejemplo, las bicicletas de montaña, las de carretera y los tándems son todos, en definitiva, bicicletas. En términos de programación orientada a objetos, son subclases o clases derivadas de la clase bicicleta. Análogamente, la clase bicicleta es la clase base o superclase de las bicicletas de montaña, las de carretera y los tándems. Algunos objetos comparten las mismas propiedades y métodos que otro objeto, y además agregan nuevas propiedades y métodos. A esto se lo denomina herencia: una clase que hereda de otra.
  • 75. Herencia. Cada subclase hereda los estados (en forma de declaración de variables) de la superclase de la cual deriva. Las bicicletas de montaña, las de carretera y los tándems comparten algunos estados: cadencia, velocidad y otros. Además, cada subclase hereda los métodos de su superclase. Las bicicletas de montaña, las de carretera y los tándems comparten algunos comportamientos: frenar y cambiar la cadencia de pedaleo, por ejemplo.
  • 76. Herencia. Sin embargo, las clases derivadas no se encuentran limitadas por los estados y comportamientos que heredan de su superclase. Muy al contrario, estas subclases pueden añadir variables y métodos a aquellas que han heredado. Los tándems tienen dos asientos y dos manillares; algunas bicicletas de montaña tienen una catalina adicional con un conjunto de marchas con relaciones de transmisión mucho más cortas.
  • 77. Herencia. Las clases derivadas pueden incluso sobrescribir los métodos heredados y proporcionar implementaciones más especializadas para esos métodos. Por ejemplo, si nuestra bicicleta de montaña tuviera una catalina extra, podríamos sobrescribir el método “CambiarDeMarcha” para poder usar esas nuevas marchas.
  • 78. Herencia. Además, no estamos limitados a un único nivel de herencia. El árbol de herencias o jerarquía de clases puede ser tan extenso como necesitemos. Los métodos y las variables miembro se heredarán hacia abajo a través de todos los niveles de la jerarquía. Normalmente, cuanto más abajo está una clase en la jerarquía de clases, más especializado es su comportamiento. En nuestro ejemplo, podríamos hacer que la clase bicicleta derivase de una superclase de vehículos. La herencia es una herramienta clave para abordar la resolución de un problema de forma organizada, pues permite definir una relación jerárquica entre todos los conceptos que se están manejando.
  • 79. Herencia. Es posible emplear esta técnica para descomponer un problema de cierta magnitud en un conjunto de problemas subordinados a él. La resolución del problema original se consigue cuando se han resuelto cada uno de los problemas subordinados, que a su vez pueden contener otros. Por consiguiente, la capacidad de descomponer un problema o concepto en un conjunto de objetos relacionados entre sí cuyo comportamiento es fácilmente identificable puede ser extraordinariamente útil para el desarrollo de programas informáticos.
  • 80. Ventajas de la herencia. 1. Las clases derivadas o subclases proporcionan comportamientos especializados a partir de los elementos comunes que hereda de la clase base. A través del mecanismo de herencia los programadores pueden reutilizar el código de la superclase tantas veces como sea necesario. 2. Los programadores pueden implementar las superclases abstractas, para definir comportamientos genéricos. Las clases abstractas definen e implementan parcialmente comportamientos, pero gran parte de estos no se definen ni se implementan totalmente. Así, otros programadores podrán usar estas superclases detallando esos comportamientos con subclases especializadas.
  • 81. Ventajas de la herencia. El propósito de una clase abstracta es servir de modelo base para la creación de otras clases derivadas, pero cuya implantación depende de las características particulares de cada una de ellas. Un ejemplo de clase abstracta podría ser en nuestro caso la clase vehículos. Esta clase sería una clase base genérica, a partir de la cual podríamos ir creando todo tipo de clases derivadas.
  • 82. Fuentes consultadas.  http://luis.izqui.org/resources/ProgOrientadaObjetos.pdf  https://uniwebsidad.com/libros/python/capitulo-5/