You are on page 1of 23

INACAP

Universidad Tecnológica de Chile


Sede Santiago Centro

Taller de Programación I

Curso Java J2SE

Tema 05:
Programación Orientada
a Objetos en Java 01

Ing. Manuel López Ramos

(versión 2)
Parte I

Conceptos Básicos
de Orientación a Objetos
Conceptos de Orientación a Objetos
●La orientación a objetos es una forma de análisis y diseño de software que permite
desarrollar software más complejo, pero en menor tiempo y de una forma
organizada y más racional.

● Los conceptos básicos a desarrollar son los siguientes:

● Objeto (entidad, concepto o idea)


● Atributo (características de un objeto)
● Método (acciones que puede realizar un objeto)
● Clase
● Instancia de clase
● Paso de mensajes
● Herencia
● Polimorfismo
Conceptos de Orientación a Objetos

Objeto: cualquier entidad, concepto o idea que es importante para la definición de
un problema y que posee características y acciones asociadas al problema en
cuestión.

Perro Dígito Avión

Edificio Árbol Link


Conceptos de Orientación a Objetos

Atributo: corresponde a una característica de un objeto, importante para la
definición del problema, y que puede tomar un valor desde un conjunto finito de
valores.

Lista de atributos:

raza -> String -> "Bulldog"


nombre -> String -> "Rex"
color -> String, int o float -> "café"
tamaño -> String o char -> "Pequeño"
altura -> float o double -> 10.50
sexo -> char -> 'M'

Lista de atributos:

tipo -> String -> "Decimal"


nombre -> String -> "Uno"
valor -> byte -> 1
trazos -> byte -> 2
Conceptos de Orientación a Objetos
● Método:acciones relevantes al problema a tratar, que puede realizar un objeto de forma
propia o que otro objeto puede realizar sobre el primero.
acciones
del objeto ladrar()

darleNombre(nombre:String)

Objeto Perro obtenerPeso():float

● Clase: conjunto infinito de objetos que comparten las mismas características (atributos) y
acciones (métodos) entre sí. Sin embargo, el valor de los atributos no tienen necesariamente
los mismos valores.

Clase Perro Clase FiguraGeometrica


Conceptos de Orientación a Objetos

Instancia de clase: objeto creado a partir de una clase, cuyos atributos tienen
un valor determinado a partir de su conjunto de valores asociado.

FiguraGeometrica: triangulo01

nombre = "Triángulo"
color = "Celeste"
area = 34.1894
numLados = 3
esRegular = false

Clase
FiguraGeometrica
FiguraGeometrica: circulo02

nombre = "Círculo"
color = "Verde"
area = 562.91
numLados = 0
esRegular = true
Conceptos de Orientación a Objetos

Paso de mensajes: es un mecanismo invisible que permite que el programa le
pida a una instancia de clase que ejecute una de sus acciones asociadas.

¡Ejecute el método
ladrar()!

Instancia
de Perro (Rex01)

Mensaje en Java:

Rex01.ladrar()
Conceptos de Orientación a Objetos

Herencia: es un mecanismo por el cual todos los objetos de una clase adoptan
automáticamente todos los atributos y métodos de otra clase (pero no sus valores).

● Es una forma de extender el funcionamiento de los objetos a partir del


comportamiento de otras clases ya creadas.

Perro Deportista Perro de Asistencia

Perro

Perro Artista
Conceptos de Orientación a Objetos

Polimorfismo: es un mecanismo que permite que un método sea aplicado sobre
objetos de diferentes clases, cada uno de ellos respondiendo de forma diferente a la
misma acción aplicada.

Objeto Helicóptero

Mensaje en Java:

volar()

Objeto Avión

Objeto Superman
Parte II

Diagrama de clases de UML


Diagrama de clases de UML
●Los conceptos anteriores pueden diagramarse, utilizando un tipo de lenguaje de
modelado, conocido como UML (Unified Modeling Language). A continuación, se
muestra la forma en la que se aplican los conceptos sobre un tipo de diagramas de
UML, denominado diagrama de clases.

● Clases: las clases se grafican utilizando un rectángulo con 3 áreas:

● nombre de la clase

● lista de atributos

● lista de métodos
Diagrama de clases de UML (continuación)
● Algunas cosas a considerar:

1) Nombre de la clase: debe escribirse, en general, utilizando notación "camello"


(cada palabra comienza por mayúscula inicial). Además, el nombre debe escribirse
en singular.

2) Visibilidad: este concepto indica los lugares de la aplicación desde donde podrá
llamarse y utilizarse una determinada variable o función. Los tipos de visibilidad
definidos en UML (y en Java) son los siguientes:

● Tipos de acceso: público (signo +)


privado (signo -)
protegido (signo #)
por omisión (sin signo)

● Tipo de datos: char, byte, short, int, long, float, double, String, etc.
Diagrama de clases de UML (continuación)
●3) Atributos de la clase: en Java, se escriben con notación "camello", pero con
minúscula inicial (por ejemplo: cantidadPersonas, tipoColor, etc.) Además, se
acompañan con dos elementos adicionales: el tipo de acceso al atributo y el tipo de
datos que aceptará.

Ejemplos de atributos:

nombre: String
edad: byte
altura: float
esAdulto: boolean
Diagrama de clases de UML (continuación)
4) Métodos de la clase: en Java, se escriben con notación "camello", pero con
minúscula inicial (por ejemplo: obtenerEdad, pintar, incrementar, etc.) Además, se
acompañan con tres elementos adicionales: el tipo de acceso al atributo, los
parámetros de entrada (si los tuviera) y el tipo de datos que retornará (en el
caso de que se trate de una función; si es sólo un procedimiento, no se especifica
ninguno).

Si el método además se subraya, se tratará de un método estático (definido con


la palabra clave static; más sobre este tema en un capítulo posterior).

Por ejemplo:
pintar()
obtenerEdad(): byte
definirColor(color: String)
esHumano(ser: SerVivo): boolean
Diagrama de clases de UML (continuación)
● Los métodos son equivalentes a las subrutinas de otros lenguajes (procedimientos
y subrutinas). Por ejemplo:
pintar() (void)
a) pintar()

b) obtenerEdad(): byte
obtenerEdad() byte

c) definirColor(color: String)

String definirColor() (void)


(color)

d) esHumano(ser: SerVivo): boolean

SerVivo
esHumano() boolean
(ser)

MÉTODOS (O SUBRUTINAS)
Diagrama de clases de UML (continuación)

● Sintaxis general de atributos en UML:

<nombreAtributo>: <tipoDato>

● Sintaxis general de métodos en UML:

<nombreMetodo> (<parámetros_opcionales>): <tipoRetorno>


Resumen
● De forma general, una clase puede anotarse como se muestra a continuación:

atributos públicos (+),


privados (-) y protegidos (#)
con su tipo de datos

métodos públicos (+),


privados (-) y protegidos (#)

con o sin tipo de dato de


retorno

con o sin parámetros

método estático
Parte III

Cardinalidad de relaciones
Relaciones entre clases
● Relaciones: las clases no viven solas dentro de una aplicación, sino que más bien
se vinculan a otras clases a través del significado, del trabajo conjunto o de la
dependencia jerárquica. El vínculo entre dos clases se conoce con el nombre de
relación entre clases y se grafica con una línea recta entre ambas clases
participantes.

● Las relaciones tienen un nombre, que indica cómo se vinculan o trabajan ambas
clases entre sí; también tienen una dirección de uso (unidireccionales o
bidireccionales). Por ejemplo:

(relación bidireccional)

(relación unidireccional)
Relaciones entre clases (continuación)
●Cuando hay dos o más clases se pueden verificar más relaciones entre ellas. Por
ejemplo:

(relación reflexiva)
Relaciones entre clases (continuación)
● Cardinalidad: en las relaciones no siempre participa sólo una instancia de cada
clase; en realidad, las instancias pueden participar en diferentes cantidades. Estas
cantidades se denominan como la cardinalidad de la relación y se indican en el
diagrama de clases utilizando números o símbolos a ambos lados de la línea que
conecta las clases.

● Existen diferentes notaciones para la cardinalidad. Estas son:

Símbolo Cardinalidad
1 uno

N 'N' objetos

0..1 cero o uno

0..* cero o muchos


*

1..* uno o muchos


Relaciones entre clases (continuación)
● Ejemplos de cardinalidad aplicada a las relaciones:

1) un hombre es padre de cero o más niños


2) una mujer es madre de cero o más niños
3) un hombre se casa con una mujer

1) un directorio guarda cero o más archivos


2) un directorio está dentro de cero o un 1) una molécula está formada por 1 ó
directorio más átomos
2) un átomo está formado por 1 ó más
partículas