Está en la página 1de 150

Elementos Básicos

de TOO
V4.0
Junio 2017
Ferreiras.

Ferreiras
Elementos basicos de TOO 1
Contenido a desarrollar
- Elementos Básicos de TOO
- - Objetos
- - Atributos, estado y comportamiento de un objeto
- - Abstracción
- - Objeto de software
- - Object Identification, OID/UID
- - Objetos según shlaer, mellor y coad/yourdon
-- Beneficios del uso de objetos en la TOO y la POO
- - Clases
- - Definición de clase en TOO
- - - Ejemplos de objetos agrupados en clases
- - Notación para clases ( De Booch, Tylor, UML)
- - Tipos de datos UML y su sintaxis
- - Notación UML de objetos
- - Atributos, operaciones de una clase
- - Interfaz de una clase
- - Constructores de una clase
- - Destructor de una clase
- - Ejemplos de clases

Ferreiras Elementos basicos de TOO 2


Contenido a desarrollar
- - Encontrando Objetos y Clases en TOO
- - - Heurística a usar para encontrar objetos, clases, atributos y operaciones
- - - Elementos gramaticales Vs. Elementos del modelo OO
- - - Ejemplo completo
- - Quiz: Su turno es ahora.
- - Más conceptos, de un vistazo, de TOO
- - - Los pilares de la TOO
- - - Instanciación de clases
- - - Clases abstractas
- - - Niveles de acceso a los miembros de la clase
- - - Ejecución o corrida de una aplicación OO
- - - Encapsulamiento
- - - Herencia (simple y múltiple)
- - - Polimorfismo
- - - Asignando responsabilidades a una clase
- - - - Tarjetas CRC
Ejemplos
Ejercicios.

Ferreiras Elementos basicos de TOO 3


CONCEPTOS
BÁSICOS
DE
ORIENTACIÓN
A OBJETOS
V4.0
Mayo 2014
Ferreiras

Ferreiras Elementos basicos de TOO 4


OBJETOS

Ferreiras Elementos basicos de TOO 5


Un objeto es cualquier cosa del
mundo que nos rodea a la que se le
aplica un concepto, una idea o noción,
como un reflejo de una realidad
concreta que existe independiente de
nosotros. Luego, son objetos:

Ferreiras Elementos basicos de TOO 6


LAS PERSONAS

Ferreiras Elementos basicos de TOO 7


LOS LUGARES

Ferreiras Elementos basicos de TOO 8


CD-DRIVER
PANTALLAS VIEJAS

LOS EQUIPOS

Ferreiras Elementos basicos de TOO 9


SILLAS
VEHÍCULOS
Ferreiras Elementos basicos de TOO 10
CUENTA DE BANCO

Ferreiras Elementos basicos de TOO 11


EDIFICIOS
SÍMBOLOS

Ferreiras Elementos basicos de TOO 12


UN PROCESO

Ferreiras Elementos basicos de TOO 13


FORMULARIO PARA LA APLICACIÓN A UNA CUENTA DE CRÉDITO

Ferreiras Elementos basicos de TOO 14


PAISAJE
Ferreiras Elementos basicos de TOO 15
d1 1 d1 2 d1 3 ... d1 p 
 
d2 1 d2 2 d2 3 ... d2 p 
d d d ... d 
 31 32 33 3p

.............................
 
dn1 dn2 dn3 ... dnp 
MATRIZ DE DATOS

Ferreiras Elementos basicos de TOO 16


El objeto al que
se refiere es un
iPhone 6:

Ferreiras Elementos basicos de TOO 17


... HAY

OBJETOS QUE
PODEMOS
CONCEPTUAR
Ferreiras Elementos basicos de TOO 18
Atributos estado y
Comportamiento de un objeto
Atributo: En general, un atributo es una
propiedad de un objeto que describe sus
características. Por ejemplo, son atributos de un
vehiculo:
 Numero de chasis;
 Color;
 Consumo de combustible;
 Tamaño
 Forma;
 número de asientos
 precio;
 Posición GPS
 Velocidad
 Propietario
 Marca

Ferreiras Elementos basicos de TOO 19


• Estado: Es el conjunto de valores actuales de los
atributos de un objeto.
• Ejemplo, un estado de un vehiculo podría ser:

 XHRET102J345KDE23;  Amarillo;
 Un galón cada 40 KM;  3 metro cúbico
 Caja del 2011; 4
 RD$ 700,000.00;  43o 27’ 53.59” N; 80o 31’ 28.71” W
 80 Km/hr  Yuleidy Turpen Diario Libre
 Hommer

Todos los objetos existentes en una aplicación en ejecución, en un


momento dado, tienen un estado definido con valores por defecto,
con valores asignados en el momento de su creación o con valores
actualizados por la interactuación con otros objetos.

Ferreiras Elementos basicos de TOO 20


Comportamiento: Las operaciones o
acciones asociadas a un objeto. Pueden
ser usadas para cambiar el estado del
objeto. Por ejemplo, el comportamiento
de un vehiculo podría ser:  Transportar;
 Atropellar;
 Chocar;
 Pintar;
 Acelerar

Ferreiras Elementos basicos de TOO 21


 Notación UML para un objeto

<nobreDelObjeto>

< atributo = valor >


< atributo = valor >
Valores de los
Todo objeto tiene < atributo = valor >
atributos del
los mismos ...
objeto en un
miembros que su momento dado.
clase
<métodos u operaciones>

{ información adicional }

Ferreiras Elementos basicos de TOO 22


 Ejemplo de notación UML
para un objeto
unVehiculo

chasis = XHRET102J345KDE23
Marca = TOYOTA
consumo = 40.0 {Km por galón}
precio = 880000 {RD$}

+ transportar() : int
+ atropellar() : String

{ información adicional; Es opcional }

Ferreiras Elementos basicos de TOO 23


ABSTRACCION

Ferreiras Elementos basicos de TOO 24


Abstraction
• Abstraction is the process of taking away or removing characteristics from something in
order to reduce them to a set of essential attributes.

• In Object-Oriented programming, abstraction is one of central principles of the OOT


(along with encapsulation, inheritance and encapsulation).

• Through the process of abstraction, a programmer hides all but the relevant data about
an object in order to reduce complexity and increase efficiency.

• In the same way that abstraction sometimes works in art, the object that remains is a
representation of the original, with unwanted detail omitted.

• The resulting object itself can be referred to as an abstraction, meaning a named


entity made up of selected attributes and behavior specific to a particular usage of the
originating entity.

• Abstraction is related to both encapsulation and data hiding.

Ferreiras Elementos basicos de TOO 25


Abstraction
• In the process of abstraction, the programmer tries to ensure that the entity is named in
a manner that will make sense and that it will have all the relevant aspects included and
none of the extraneous ones.

• A real-world analogy of abstraction might work like this:

•“You (the object) are arranging to meet a blind date and are deciding what to tell
them so that they can recognize you in the restaurant. You decide to include the
information about where you will be located, your height, hair color, and the color of
your jacket. This is all data that will help the procedure (your date finding you) work
smoothly. You should include all that information. “

• On the other hand, there are a lot of bits of information about you that aren't
relevant to this situation: your social security number, your admiration for obscure
films, and what you took to "show and tell" in fifth grade are all irrelevant to this
particular situation because they won't help your date find you. However, since
entities may have any number of abstractions, you may get to use them in another
procedure in the future.

Ferreiras Elementos basicos de TOO 26


La abstracción modela un
problema real construyendo
una representación que puede
ser procesada
computacionalmente;

Ferreiras Elementos basicos de TOO 27


EL PROBLEMA

PROCESO DE
ABSTRACCIÓN

EL MODELO
OBJETO3
OBJETO1

OBJETO2

Ferreiras Elementos basicos de TOO 28


 El modelo define una vista
abstracta del problema. Esto
implica que el modelo solo se
enfoca en la materia relativa al
problema;

Ferreiras Elementos basicos de TOO 29


 El modelo debe definir los
objetos de software, identificados
con sus atributos y respectivas
operaciones.

Ferreiras Elementos basicos de TOO 30


 El proceso de abstracción inicia
con la remoción gradual de los
detalles excesivos que son de valor
estético pero que no contribuyen a la
identidad del objeto como elemento
para almacenar información de interés;

Ferreiras Elementos basicos de TOO 31


 Por ejemplo, consideremos los
empleados de una institución, de los
cuales se requiere procesar información
relativa a la nómina, solamente :
 Atributos encontrados  Atributos de
interés para el
 nombre; caso serían:
 estatura;
 talle;  nombre;
 cedula  cedula
 fecha nacimiento;  salario
 nss;
 cabello
 entretenimientos;
 numero apto;
 Salario

Ferreiras Elementos basicos de TOO 32


 SUS OPERACIONES

incluirEmpleado;
ponerDatos;
verDatos;
actualizarDatos;
...

Ferreiras Elementos basicos de TOO 33


 Para ayudar al proceso de abstracción
existen los lenguajes de modelado de
objetos, los cuales están basados en un
conjunto estandarizado de símbolos y formas
de organizarlos para el modelado de
sistemas de software usando tecnología de
orientación a objeto; UML( lenguaje unificado
de modelado) es el mas conocido;

Ferreiras Elementos basicos de TOO 34


OBJETO DE SOFTWARE

OBJETO
PROCESO
OBJETO
DE DE
REAL
ABSTRACCIÓN
SOFTWARE
“Cuando el nivel de
abstracción absorbe la
desmesura, el resultado
es la demencia”. Octavio
Paz, El mono gramático.

Ferreiras Elementos basicos de TOO 35


Object Identification, OID
• Object IDentification in object models means that every object instance has a unique,
unchanging identity, that is, a Object IDentifier (OID) , generated by the object system
of the OOP language.

• Object identification is often referred to as an OID.

• OIDs are used to reference object instances.

• Characteristics of OIDs:

• OIDs are independent of data contained in the object; The internal data values
are not used to generate identification.

• OIDs are generated by the object system; Users or programmers have no control
over Object identification.

• OID has a duration throughout life of the object.

Ferreiras• The OID never changes evenElementos


when the data
basicos contents may change.
de TOO 36
 El OID es único, no es compartido entre
objetos, aunque sean del mismo tipo, incluso en
diferentes tiempos; no cambia durante la vida del
objeto;

 El OID es un valor generado por el modelo de


sistema de objetos del lenguaje de POO.

Ferreiras Elementos basicos de TOO 37


• Por ejemplo:

LukasL2001
PapolinaQP201
JennyXF100 • Nótese que:

• Todos son “objetos Perro” que ladran, corren,


muerden, son de una raza, tienen un color,
pueden tener hambre, etc., y tienen un nombre (
JennyXF100, PapolinaQP201, LukasL2001,
Kika12eYu33) ASOCIADO CON SU OID, que los
hace únicos, identificables uno de los otros, esto
Kika12eYu33 es, cada uno tiene una identidad.

• Estos “objetos Perro”, veremos más adelante,


pueden ser instancia de una clase llamada Perro.

Ferreiras Elementos basicos de TOO 38


• Otro ejemplo: • NÓTESE QUE:

• Son todos “objetos Billete” con


valor de 200 DOP; Cada uno tiene
un número de serie único (su
atributo Identificador Único, UID)

• El valor del atributo usado como


UID es generado por un código de
programación establecido por el
programador.

• UID y OID no son la misma cosa:

• UID es un atributo en la clase


del objeto, manipulado por el
programador;

• OID es generado por el


sistema de modelo de objetos
del lenguaje de POO usado.

Ferreiras Elementos basicos de TOO 39


 Para el programador asignar un identificador único,
UID, algunas reglas generales son:

 Generar un identificador que no se vuelva a originar a través del


tiempo, lugar o después de su cancelación.
 Usar números al azar, con dígitos de control.

 Para cada identificador el proceso de validación debe utilizar campos


(atributos) eficaces para los objetos coincidentes, como ( por ejemplo, para
objetos Persona) los primeras nombre, segundo nombre, apellido, sufijo,
fecha de nacimiento y género.

Ferreiras Elementos basicos de TOO 40


Un objeto de software esta definido por
tres elementos básicos:
Definen el
 Un Nombre ( no debe cambiar) Estado
Del
 Datos ( pueden cambiar) Objeto

 Comportamiento ( Las operaciones,


acciones asociadas con el objeto)

Ferreiras Elementos basicos de TOO 41


 Un objeto de software es una entidad que tiene un estado definido por
un Nombre, asociado a un OID ( y, posiblemente, a un UID) y datos o
valores actuales de los otros atributos, y un conjunto de operaciones
asociadas.

 Por ejemplo, el objeto unVehiculo:

unVehiculo
• Es la
notación UML
chasis = XHRET102J345KDE23 de un objeto
Definen el nombrado;
Marca = TOYOTA
Estado Más adelante
consumo = 40.0 {Km por galón} veremos todos
Del precio = 880000 {RD$} los formatos
Objeto UML para
nombrar
+ transportar() : int objetos.
+ atropellar() : String

Ferreiras Elementos basicos de TOO 42


 La diferencia entre el “objeto
real” y el “objeto de software” es que
este último “vive” en el mundo de la
computadora o mundo del software
y no en el mundo real;

Ferreiras Elementos basicos de TOO 43


 Para ser útil de alguna manera, el
objeto de software debe mapear el
dominio del objeto real al dominio de
la aplicación;

DOMINIO DOMINIO DE
DEL OBJETO LA
OBJETO DE APLICACIÓN
REAL SOFTWARE

Ferreiras Elementos basicos de TOO 44


 Un objeto de software puede
representar un objeto físico en un
dominio particular, pero también
puede representar un concepto
abstracto o una idea;

Ferreiras Elementos basicos de TOO 45


 El estado representa las diferentes
condiciones internas posibles que el objeto
puede experimentar durante su vida; Se
representa por variables con valores; Es la
información que almacena el objeto;

 Estado vs. Nombre En el cambio de


estado de un objeto su Nombre no debe
cambiar, solo los valores de los otros
atributos (datos) pueden cambiar.

Ferreiras Elementos basicos de TOO 46


• El comportamiento son las acciones
que el objeto puede ejecutar o que se
pueden ejecutar sobre el.

• Es la forma de un objeto reaccionar a la


interacción con otros objetos. Es
determinado por el conjunto de las
operaciones definidas como funcionales
para ese objeto.

Ferreiras Elementos basicos de TOO 47


 Según shlaer, mellor y
coad/yourdon, los objetos o sus
clases pueden ser:

1: extraído del texto programación orientada a objetos. 2da edición.


luis joyanes a. mcgraw hill.

Ferreiras Elementos basicos de TOO 48


 Cosas tangibles

- aviones
- reactores nucleares
- fuentes de alimentación
- televisores
- libros
- automóviles

Ferreiras Elementos basicos de TOO 49


 Organizaciones

- empresas
- partidos políticos
- equipos deportivos
- universidades
- ...

Ferreiras Elementos basicos de TOO 50


 Roles o papeles jugados o
representados por personas:

- gerentes
- clientes
- empleados
- médicos
- pacientes
- ingenieros
- estudiantes

Ferreiras Elementos basicos de TOO 51


 Incidentes, representan un suceso, un
evento, u ocurrencia, tales como:

- vuelos
- accidentes
- sucesos
- llamadas a un servicio de asistencia
técnica,
- …

Ferreiras Elementos basicos de TOO 52


 Interacciones, implican generalmente
una transacción o contrato y relacionan
dos o más objetos del modelo:

 compras (comprador, vendedor,


articulo),

 matrimonios ( esposa, esposo, hijos,


fecha de boda), …),
...

Ferreiras Elementos basicos de TOO 53


 Especificaciones, muestran
aplicaciones de inventario o fabricación:

- Especificaciones de refrigeradores,
- Especificaciones de motherboards
...

Ferreiras Elementos basicos de TOO 54


 Lugares, espacios físicos
ocupados por cualquier tipo de
cuerpo tangible:

- sala de embarque,
- muelle de carga,
- …

Ferreiras Elementos basicos de TOO 55


 Otros aspectos de interés en los objetos,
además de su nombre, atributos y operaciones son:
 Encapsulamiento Los datos del objeto solo se pueden acceder por las
operaciones del objeto; También se le llama ocultamiento de información;

 Mensajería-Colaboración Usando las operaciones definidas para cada uno


los objetos se comunican entre por medio de mensajes (pedirle a un objeto que
ejecute dichas operaciones) para realizar las tareas que se les asignen;

 Herencia El estado de un objeto hereda parte o todo de los datos del estado
de otro objeto;
 Polimorfismo Mas de un objeto puede ejecutar una misma operación según
sus particular estado;

Ferreiras Elementos basicos de TOO 56


Objetos, TOO, POO

• Los objetos son claves para:


• Entender la tecnología orientada a
objetos (TOO);
• Desarrollar programas utilizando
los objetos, llamado como
programación orientada a objetos
(POO).
Ferreiras Elementos basicos de TOO 57
 La TOO tiene los siguientes beneficios, entre otros:

 Reuso de código, eliminando el código redundante

 Ocultamiento de información, evita la corrupción de los datos

 Llegar al dominio del problema con precisión;

 Diseño centrado en los datos;

 Facilidad de actualización de los modulos de un sistema;

 Construcción de GUI mas simples y rapido;

 Flexibilidad para adaptarse a los cambios de requerimientos


durante el proceso de desarrollo de un software;

Ferreiras Elementos basicos de TOO 58


CLASES

Ferreiras Elementos basicos de TOO 59


CLASE
Es una descripción abstracta de
un conjunto de objetos tangibles
o intangibles, de una cierta
especie, que tienen atributos y
comportamientos similares;

Ferreiras Elementos basicos de TOO 60


• Por ejemplo:

Son objetos
que
se pueden
agrupar
en la clase
PersonaCulta

Ferreiras Elementos basicos de TOO 61


• Luego, no serán objetos de la
clase PersonaCulta: Las groserías, las
vulgaridades, y las
obscenidades son
Podrían ser opuestas a la noción de
agrupados en la culto.
clase, por ejemplo,
ArtistaUrbano

Ferreiras Elementos basicos de TOO 62


 Cada objeto existente es una
instancia de una clase;
 Una clase define un tipo y un objeto
de esta clase es justamente una variable
del tipo de la clase;
 Cada uno de los objetos agrupados
en la clase PersonaCulta antes visto es
una instancia de dicha clase.

Ferreiras Elementos basicos de TOO 63


Notación para Clases

NOTACIÓN GRÁFICA DE NOTACIÓN GRÁFICA DE


UNA CLASE SEGÚN BOOCH UNA CLASE SEGÚN TYLOR

Ferreiras Elementos basicos de TOO 64


 Notación UML para una clase

<NombreClase>

Miembros
< atributos o campos>
de la clase

<métodos u operaciones>

{ información adicional }

Ferreiras Elementos basicos de TOO 65


Notación UML de la clase, sintaxis de miembros
• La sintaxis para escribir los miembros de la clase es como sigue:

• Atributos o campos: ( es recomendable que siempre sean - ) 1

• acceso ( - or + ) ID : tipo = valor inicial { información adicional }

• Por ejemplo:
• - salarioMensual : double = 93456.23 { DOP }

• Métodos u operaciones: ( es recomendables que siempre sean + ) 1

• acceso ( - , + , # ) ID (par1: tipo, par2: tipo, ... ) : tipo de retorno { idem }


• Por ejemplo:
• + pagar( monto : double ) : boolean { si es true fue OK el pago }

1: Más adelante veremos estos conceptos con más detalles.

Ferreiras Elementos basicos de TOO 66


Notación UML para una clase, Ejemplo

Estudiante Nombre

- matricula: long
- nombre: String Atributos
- direccion: String
- edad: byte
+ setNombre( no: String) : void
Miembros + getNombre() : String Operaciones
de la clase + setNota( x:double ) : void

{ edad minima 16 } Restricciones o información


adicional

Ferreiras Elementos basicos de TOO 67


Notación UML para una clase, Ejemplo

Estudiante
IMPORTANTE,
MUY - matricula: long
- nombre: String
IMPORTANTE: - direccion: String
Este es el modelo - edad: byte
de la clase que se + setNombre( no: String) : void
+ getNombre() : String
implementará, es
+ setNota( x:double ) : void
decir, el que usted
codificará y { edad minima 16 }
probará

Ferreiras Elementos basicos de TOO 68


Notación UML para un objeto; Por
ejemplo, para la clase anterior
Estudiante:
Es la notación unEstudiante : Estudiante
de objeto a
usar. matricula = 103456430
Nombre = Juan Rodriguez
direccion = Katanga, Calle C, # 8, Los Minas, SDE, R.D.
edad = 23

Los campos o variables miembros deben mostrarse con


valores, debido a que un objeto tiene un estado definido por
dichos valores; No es recomendable dejarle los valores por
defecto.

Ferreiras Elementos basicos de TOO 69


 Una clase esta hecha,
básicamente, de un nombre
único, un numero de atributos y
de un conjunto de operaciones;

Ferreiras Elementos basicos de TOO 70


ATRIBUTOS1
Los atributos de una clase determinan
la información que sus objetos pueden
almacenar.

¡¡ toda la data del sistema es


almacenada como valores de
los atributo de sus objetos. !!

1: propiedades: Característica o calidad de una cosa;

Ferreiras
Elementos basicos de TOO 71
 Los valores de los atributos
de una clase definirán los
posibles datos de los estados en
los cuales una instancia de la
clase ( un objeto ) puede estar;

Ferreiras Elementos basicos de TOO 72


 Los valores de los atributos
de un objeto concreto definen, en
un momento dado, el estado de
dicho objeto.

Ferreiras Elementos basicos de TOO 73


OPERACIONES
 Acciones que hacen o que
pueden ser hechas a los
atributos de sus objetos ó a los
objetos mismos como tales;

Ferreiras Elementos basicos de TOO 74


TODA LA FUNCIONALIDAD DEL
SISTEMA ES DEFINIDA POR LAS
OPERACIONES DE LOS OBJETOS
DE SUS CLASES;

Ferreiras Elementos basicos de TOO 75


 Las acciones son las únicas
forma de acceder a los atributos de
una clase; Pueden ser:

 Para obtener información del estado actual


del objeto de la clase; O,

 Para cambiar el estado actual del objeto


de la clase;

Ferreiras Elementos basicos de TOO 76


INTERFAZ DE LA CLASE

Es el conjunto de operaciones
que un objeto de la clase podrá
ejecutar para interactuar con el
mundo exterior a este.

Ferreiras Elementos basicos de TOO 77


Las funciones miembros (Los
métodos en JAVA y C#) forman la
interfaz de los objetos de la clase
con el mundo exterior:

Mundo
objeto de INTERFAZ
exterior al
la clase (funciones objeto
miembro)

Ferreiras Elementos basicos de TOO 78


 Las operaciones de una clase que
componen su interfaz son, básicamente,
de cuatro tipos:

modificar (mutator methods): cambia uno o


mas valores asociados con los atributos del
objeto;

acceder (accesor methods) : retorna un valor


del estado del objeto;

Ferreiras Elementos basicos de TOO 79


Constructor: se invoca una vez cuando el
objeto es creado, antes de cualquier otra
operación;

Destructor: se invoca cuando el objeto es


destruido para liberar los recursos de memoria
asignados; JAVA y C# NO REQUIEREN QUE EL
DESARROLLADOR LE DEFINA UN
DESTRUCTOR; Usan su “Garbage Collector”;

Ferreiras Elementos basicos de TOO 80


Encontrando
Objetos
Y
Clases

Ferreiras Elementos basicos de TOO 81


 El proceso de encontrar objetos
y clases se realiza examinando la
narrativa o descripción del
problema (análisis gramatical) y
localizando nombres propios,
nombres comunes, verbos y
adjetivos.

Ferreiras Elementos basicos de TOO 82


 Luego de encontrados los
objetos y sus clases será
preciso encontrar los atributos y
las operaciones que actúan
sobre ellos;

Ferreiras Elementos basicos de TOO 83


 Los atributos serán
característica, cualidad, propiedad,
particularidad, peculiaridad,
singularidad, rasgo, marca,
carácter, idiosincrasia, naturaleza
o condición del objeto;

Ferreiras Elementos basicos de TOO 84


 Operaciones que se pueden
realizar sobre un objeto: aunque
existe gran cantidad de operaciones
que se pueden realizar sobre un
objeto, generalmente se dividen en
tres grandes grupos:

Ferreiras Elementos basicos de TOO 85


1) Operaciones que manipulan los
datos de alguna forma específica (
añadir, borrar, cambiar formato, …);

2) Operaciones que realizan un cálculo


o proceso;

Ferreiras Elementos basicos de TOO 86


3) Operaciones que comprueban
(monitorizan) un objeto frente a
la ocurrencia de algún suceso de
control;

Ferreiras Elementos basicos de TOO 87


 Para encontrar las operaciones se
realiza un nuevo análisis gramatical
de la descripción del problema
buscando y aislando los verbos del
texto.

Ferreiras Elementos basicos de TOO 88


Las clases estarán definidas por los
objetos identificados con sus atributos y
comportamiento comunes. El conjunto
de todas las clases es un modelo OO del
sistema en desarrollo.

Ferreiras
Elementos basicos de TOO 89
 En la siguiente tabla se muestran
atributos y operaciones de clases.

CLASE ATRIBUTOS OPERACIONES


Estudiante Matricula EstablecerMatricula
Nombre CalcularIndice
Dirección
Índice
Vuelo Aerolínea EstablecerAerolínea
Numero EstablecerNumeroDeVuelo
Destino VerPosición
Origen
Posición
Acuario Material EstablecerMaterial
Longitud EstablecerDimensiones
Ancho CalcularVolumen
Profundidad

Ferreiras Elementos basicos de TOO 90


Heurística a usar
 In the OO&D:

 The first stage can be a simple brain-


storming of the possible objects;

 One method is to go through all the nouns


in any documentation about the world you are
analyzing, and considering these as candidate
objects/classes.

Ferreiras Elementos basicos de TOO 91


Heurística a usar
• For the initial stage of the identification process, can be used an intuitive set of heuristics for
identifying objects, attributes, operations, and relationships, starting with some form of
problem statement or narrative ( in OOA&D, after the analysis phase, the requirements
specification is the starting point).

• Using this heuristics we map various language constructs, such as nouns, verbs, and
adjectives, to component models. The following list illustrates related examples:

- Proper Noun: Instances of a class (an object)


- - For example: Whiskers the cat.
- Common Noun: Class
- - For example: cat
- Adjective: Attribute
- - For example: pretty
- Doing Verb: Operation
- - For example: eats

Ferreiras Elementos basicos de TOO 92


Heurística a usar
• Class relationships

- Being Verb: Inheritance


- - For example: a cat is a kind of animal.
- Having Verb: Aggregation
- - For example: a cat has the skin of a mammal
- Modal Verb: Constraints
- - For example: a cat must be a mammal

• From
– Pages 115-116, Software Engineering: A Hands-On Approach; Roger Y. Lee; Springer, 2013.
– Page 180, Object-Oriented Software Engineering Using UML, Patterns, and Java; Bernd Bruegge,
Allen H. Duttoit; Prentice Hall, Third Edition, 2010.

Ferreiras Elementos basicos de TOO 93


Encontrando objetos y clases
• El proceso inicia con La narrativa o declaración del problema (Si ya se ha
realizado la fase de análisis, las SRS estarán disponibles y se debe iniciar
con éstas) ;

• Al escribir la narrativa o declaración del problema, o las SRS, se hace


énfasis en el uso de nombre propios, nombres comunes, verbos y adjetivo.
todos los cuales son mapeados al modelo OO usando los siguientes
criterios:

Ferreiras Elementos basicos de TOO 94


 Criterios: Elementos gramaticales Vs.
Elementos del modelo OO

ELEMENTO ELEMENTO DEL EJEMPLO


GRAMATICAL MODELO OO
NOMBRES PROPIOS OBJETO (INSTANCIA) JUAN, ROSA
NOMBRE CLASE JUEGETE, MUÑECA
IMPROPIOS/COMUNES
VERBO ACCION COMPRAR, ENTRAR.
RECOMENDAR,
TERMINAR
ADJETIVO ATRIBUTO 5 AÑOS

Ferreiras Elementos basicos de TOO 95


• Los pasos a seguir en el proceso de encontrar objetos y clases son:

• Narrativa o Declaración del problema, o SRS;


• Si no se tiene las SRS, hacer el Análisis-dominio del problema;
• Seleccionar los elementos gramaticales (subrayándolos, por
ejemplo) ;
• Hacer un listado, ordenado alfabéticamente, de los elementos
gramaticales seleccionados;
• En el listado anterior eliminar los elementos redundantes;
• Mapear cada elemento gramatical a su elemento del modelo OO;
• Agrupar los objetos en clases;
• Hacer un listado de las clases encontradas, con sus
correspondientes atributos y operaciones;
• Escribir el pseudocódigo de las clases identificadas, así:

• NombreClase(atrib1, atrib2,...; oper, oper2, ...);

• Hacer la Notación UML de las clases identificadas.

Ferreiras
Elementos basicos de TOO 96
Ejemplo completo
 Narrativa

“el cliente aa entra a la tienda bb con la


intención de comprar un juguete para su hija
de 3 años. el dueño de la tienda le hace
recomendaciones. el cliente selecciona un
juego peligroso que es inadecuado para la hija.
el propietario de la tienda le recomienda una
muñeca como un juguete mas adecuado.”

Ferreiras Elementos basicos de TOO 97


 Selección de los elementos
gramaticales
“El cliente AA entra a la tienda BB con la
intención de comprar un juguete para su
hija Rosita de 3 años. El dueño de la
tienda le hace recomendaciones. El
cliente selecciona un juguete peligroso
que es inadecuado para la hija. El
propietario de la tienda le recomienda
una muñeca como un juguete mas
adecuado.Luego, el cliente paga”
Ferreiras Elementos basicos de TOO 98
 Listado de la selección de los
elementos gramaticales
cliente dueño propietario

entra tienda tienda

tienda hace rec recomienda

intención cliente muñeca

comprar selecciona juguete

juguete juguete adecuado

hija peligroso AA

Rosita inadecuado BB

3 años hija paga

Ferreiras Elementos basicos de TOO 99


 Eliminación de los elementos
gramaticales redundantes
cliente dueño propietario

entra tienda tienda

tienda hace rec recomienda

intención cliente muñeca

comprar selecciona juguete

juguete juguete adecuado

hija peligroso AA

Rosita inadecuado BB

3 años hija paga

Ferreiras Elementos basicos de TOO 100


 Mapeado de los elementos gramaticales a
elementos del modelo OO
cliente clase

entra acción

tienda clase

intención atributo

comprar acción

juguete clase

hija clase

Rosita atributo

3 años atributo

Ferreiras Elementos basicos de TOO 101


dueño clase propietario propietario
tienda tienda tienda tienda
hace rec hace rec recomienda acción
cliente cliente muñeca instancia
selecciona acción juguete juguete
juguete juguete adecuado atributo
peligroso atributo AA atributo
inadecuado atributo BB atributo
hija hija paga acción

Ferreiras Elementos basicos de TOO 102


Agrupar los objetos (instancias) en clases

Objeto (Instancia) Clase

Muñeca Juguete

Ferreiras Elementos basicos de TOO 103


Listado de clases encontradas, con sus atributos y operaciones

Clase Atributos Operaciones

Hija nombre, edad, (1)

Juguete peligroso, (1)


inadecuado,
adecuado,
Cliente nombre, intención, entrar, comprar, seleccionar, pagar

Tienda nombre, (1)

Propietario (1) recomendar,

(1) Estos son los atributos y las operaciones iniciales, como resultado
inmediato de aplicar la heurística indicada. En la fase de diseño ya se podrá
agregar o eliminar atributos y operaciones.
Ferreiras Elementos basicos de TOO 104
• Escribir el pseudocódigo de cada clase :
• NombreClase ( atrib1, atrib2, ... ; oper1, oper2, ...);
• Por ejemplo, para una de las clases encontradas aquí :
• Cliente( nombre, intencion; entrar, comprar, seleccionar, pagar);
•) Hacer la Notación UML de cada clase. Por ejemplo:

Cliente
- nombre : String
- intencion : String
+ entrar() : void
+ seleccionar() : String
+ pagar( valor: double ) : boolean

 Se deja como ejercicio al estudiantes elaboras las tarjetas CRC


de las clases identificadas.
Ferreiras Elementos basicos de TOO 105
!Uf! Por fin, ya aprendí a
modelar clases

Ferreiras Elementos basicos de TOO 106


Gracias
al señor OK, Vaya con su
clase y pruébela
!!

Ferreiras Elementos basicos de TOO 107


Su turno es ahora
Quiz No. : 01

• Usando la heurística estudiada, identificar las clases, sus atributos y operaciones,


presentes en la siguiente narrativa:

• ...

Ferreiras Elementos basicos de TOO 108


Responsabilidades de una clase
• Las responsabilidades de una clase son:
• La información que sus objetos pueden almacenar ;
• Esa información es almacenada en los campos o variables
miembros de la clase (Siempre, preferiblemente, encapsulada, es
decir, private)
• Las acciones que sus objetos pueden ejecutar;
• Esas acciones son llamadas métodos o funciones miembros de
la clase.
• Los colaboradores de una clase son otras clases con las cuales
interactúa para cumplir sus responsabilidades.
• Por lo general, la definición de los colaboradores de una clase da
lugar a nuevas clases y redefinición de las clases existentes.
Responsabilidades de una clase
•  Luego de identificadas las clases
relevantes (que son de importancia para la
aplicación), hay que asignarles
responsabilidades.
• La Asignación adecuada de
responsabilidades a las clases es la clave
del proceso de encontrar objetos y clases
y, por extensión, el éxito del diseño.
Responsabilidades de una clase
Luego de identificadas las
responsabilidades de una clase se debe
decidir cuales son los datos a encapsular y
la interfaz de la clases, esto es, las
funciones miembro que serán public;
 La interfaz pública determinará cómo
la clase será utilizada por otros
programadores (o usted mismo).
Responsabilidades de una clase
•  Una vez diseñada e implementada la
interfaz, esta debe permanecer, por lo general,
bastante constante.
• Cualquier cambio en la interfaz debe ser
solicitado al propietario de la clase; El
propietarios de la clase es quien podrá
añadir o eliminar funciones a su interfaz.
Tarjetas CRC, breve introduccion1
• Tarjetas CRC es un método que se utiliza para detectar, comprobar,
actualizar y asignar las responsabilidades de las clases y sus
colaboraciones con otras clases en un nivel conceptual.

• Es el método mas sencillo para definir el comportamiento de una


clase.
• CRC es sinónimo de “Clases", “Responsabilidades",
“Colaboradores“.

• El método CRC es informal a propósito, para ser creativo.

• Asignar responsabilidades a una clase es diseñar los atributos para


almacenar datos y las funciones miembro (métodos), correspondientes a las
operaciones ( acciones, verbos) identificadas, que definirán en código el
comportamiento de sus objetos.

1: Ver en la PPT-Book “CRC Card” el desarrollo completo del tema


Ferreiras Elementos basicos de TOO 113
 El formato de tarjeta CRC a usar en este curso
es como sigue:

CRC Card
<<ClassName>>
SYSTEM: <<System name>>
CREATED BY: <<Analyst name>>
DATE, mm-dd-aaaa <<Developed date>>

Responsibilities of the ClassName CollaboratorClass::method()


- Brief list of responsibilities; And / Or The names of other classes which collaborate
- Signature of individual methods ( FF ) with this class helping her to comply its
responsibilities and the method from this.

Ver en la PPT-Book “CRC Card” el desarrollo completo del tema

Ferreiras Elementos basicos de TOO 114


• Ejemplo de una tarjeta CRC para un sistema de cajero ATM :

CRC Card
UserMenu
SYSTEM: ATM
CREATED BY: Ferreiras
DATE, mm-dd-aaaa February-15-2013
Responsibilities of the class UserMenu CollaboratorClass::method( )
Display main menu
Ask user for PIN
Send PIN to BankSystem for validation BankSystem::method1()
Display validation error
Ask BankSystem for balance BankSystem::method2()
Print Balance Printer::method()
Debit Account BankSystem::method3()
Print Receipt Printer::metho4()
Eject card CardReader::method(5)

Ver en la PPT-Book “CRC Card” el desarrollo completo del tema


Ferreiras CRC Cards, Ejemplo 1 115
 Otro ejemplo, Si consideramos “... el proceso de inscribir estudiantes en un
curso. Los estudiantes solicitan información acerca de los cursos disponibles y
también se pueden retirar ... “, tendremos su CRC (en un formato muy simple):
• Los campos para
Estudiante
los datos que podrán
almacenar los objetos RESPONSABILIDADES COLABORADORES
Estudiantes; Clase::metodo(...)

• En la preparación Matricula
de las CRC no es
absolutamente Nombres
necesario indicar los Los tres puntos (...)
atributos o campos. significan los
Apellidos
parámetros para los
Dirección
argumentos, si son
requeridos.
Los métodos Correo Electrónico
para las acciones
que podrán Inscribir curso Curso::InscribirCurso(...)
realizar los
objetos
Solicitar información Curso::MostrarInformacion(...)
Estudiantes

Retirar curso Curso::RetirarCurso(...)

Ferreiras Elementos basicos de TOO 116


 Algunos comentarios de la tarjeta CRC
Estudiantes anterior:
 Un objeto estudiante solicita información acerca de un curso. Esto significa que
Curso debe tener una acción para enviar dicha información;

 Un objeto Estudiante solicita ser inscrito. Esto significa que Curso debe tener
una acción para inscribir estudiante e informarle el resultado;

 Un estudiante solicita retiro de un Curso. Esto significa que curso debe tener
una acción para retirar estudiantes e informarles.;

 La clase colaborador Curso, vemos que debe tener atributos y acciones que
serán sus responsabilidades para poder colaborar con la clase Estudiante.

Ferreiras Elementos basicos de TOO 117


Más conceptos, de un vistazo,
de TOO

Ferreiras Elementos basicos de TOO 118


LOS PILARES DE LA TOO

A continuación veremos, a nivel introductorio, cada


uno de estos pilares de la TOO.
Ferreiras Elementos basicos de TOO 119
INSTANCIACIÓN DE CLASES
• Es el proceso de crear objetos de una clase. Cuando se crea un
objeto se crea una “instancia ” de una clase;
• Una clase es un tipo nuevo de dato, definido por el desarrollador,
luego, para usar la clase debemos crear una variable de ese tipo, esta
variable es llamada variable referencia.
• Cuando a la variable referencia se le asigna un objeto su nombre es
asociado a dicho objeto.

Ferreiras Elementos basicos de TOO 120


INSTANCIACIÓN DE CLASES
• En Java y C#, la sintaxis para la declaración e inicialización de
variables referencia con un objeto es como sigue:
Fruta unaFruta = new Fruta();
• En el tema “Implementación de clases, Encapsulamiento” veremos
los detalles completos.

Ferreiras Elementos basicos de TOO 121


CLASES ABSTRACTAS
Son clases que no pueden ser
instanciadas directamente. Son
usadas para derivar otras clases a
partir de ellas.

Ferreiras Elementos basicos de TOO 122


 ” representan los escalones más elevados
de algunas jerarquías de clases y solo sirven
para derivar otras clases, en las que se van
implementando detalles y concreciones,
hasta que finalmente presentan un nivel de
definición suficiente que permita instanciar
objetos concretos”
Ver http://www.zator.com/cpp/e4_11_8c.htm)

Ferreiras Elementos basicos de TOO 123


NIVELES DE ACCESO A LOS
MIEMBROS DE LA CLASE
Las clases permiten especificar tres
niveles de acceso a los atributos y
operaciones de sus objetos:

 privado
 protegido
 publico

Ferreiras Elementos basicos de TOO 124


1) privado: Acceso solo permitido al través
de la implementación de sus operaciones
(funciones miembros en C++, métodos en C#
y Java); Es el que garantiza el ocultamiento
de información.

2) protegido: Acceso sólo permitido a las


derivadas;

3) publico: Acceso libre para todo


cliente de la clase;

Ferreiras Elementos basicos de TOO 125


EJECUCIÓN O CORRIDA DE
UNA APLICACIÓN OO
En la ejecución o corrida de una aplicación
orientada a objetos deberán de producirse
las siguientes actividades, en ese orden:
 Creación de los objetos;
 Intercambio de mensajes;
 Liberación de memoria;

Ferreiras Elementos basicos de TOO 126


 1ro. creación de los
objetos: se crean los objetos
de software a medida que se
necesitan;

Ferreiras Elementos basicos de TOO 127


 2do. intercambio de mensajes: los
objetos de software se intercambian los
mensajes a medida que se procesa
información internamente o se responde
a las entradas de los usuarios;

Ferreiras Elementos basicos de TOO 128


 3ro. liberación de la memoria:
cuando los objetos de software ya no
son necesarios, se borran de la
memoria;

Ferreiras Elementos basicos de TOO 129


ENCAPSULAMIENTO

Ferreiras Elementos basicos de TOO 130


Concepto de Encapsulamiento

Interfase de la clase, Detalles privados o miembros


miembros públicos u encapsulados, normalmente
operaciones son los atributos de la clase

Ferreiras Elementos basicos de TOO 131


 La encapsulación empaqueta
los datos y las acciones dentro de
un objeto ocultando su estructura
e implementación;

Ferreiras Elementos basicos de TOO 132


 También se le conoce como
ocultamiento de información:
los datos solo pueden ser
accedidos por las acciones del
objeto a que pertenecen;

 Permite a los objetos ser


independientes y ser empaquetados en
componentes reusables;

Ferreiras Elementos basicos de TOO 133


 Facilita la modularidad El código
fuente del objeto de software puede ser
mantenido independientemente del de
otros objetos;

 Es concepto clave de la too;

Ferreiras Elementos basicos de TOO 134


HERENCIA

Ferreiras Elementos basicos de TOO 135


• La herencia es una manera de formar nuevas clases a partir de clases
ya definidas, reusando el código ya existente con alguna o ninguna
modificación; también se le llama generalización;

• La notacion UML para la herencia es:

Base

Derivada

Ferreiras Elementos basicos de TOO 136


 En la herencia, si una clase D se
deriva de la clase B, se dice entonces
que la clase D es una subclase o
derivada de la B mientras que B se
dice que es una superclase o una
clase base de D.

Ferreiras Elementos basicos de TOO 137


 Por ejemplo, la relación de herencia entre objetos fruta
manzana, mango, naranja, en notación UML es como indicado a
continuación:
La Clase Fruta es la
Fruta clase base o superclase
y las clases Mango,
Manzana y Naranja son
las clases derivadas o
subclases.

Mango Manzana Naranja

Ferreiras Elementos basicos de TOO 138


 La clase derivada hereda todos los
miembros que son públicos y protegidos
en la clase base y, también, le es
permitido agregar mas atributos y
operaciones o sobrescribir las
existentes;

Ferreiras Elementos basicos de TOO 139


 La herencia es, probablemente, la
técnica más poderosa de la Tecnología
Orientada a Objetos (TOO);

 Es el mecanismo mas comúnmente


utilizado para el reuso de funcionalidades.

Ferreiras Elementos basicos de TOO 140


 Una regla empírica para determinar si una clase
puede ser modelada como una subclase de otra es
la regla “es-un” | “ es-una”:

“ Si la sentencia “a es-una b” | “a es-un b” tiene sentido,


entonces a es probablemente una subclase de b. Por
ejemplo, un perro es-un mamífero. La subclase es
perro y la superclase es mamífero:

Perro es la clase derivada



Mamífero
Un Perro es-un Mamífero.

Mamífero es la clase Base


Perro

Ferreiras Elementos basicos de TOO 141


HERENCIA MÚLTIPLE
• Significa que una subclase (LA Derivada) puede tener mas de una superclase (La Base).

• Por ejemplo: “Un presidente en RD es un empleado, es un dominicano y es una persona culta” . En


notación UML, simplificada:

Presidente

Empleado Nacionalidad PersonaCulta

• C# y Java no soportan herencia múltiple.


• C++ es de los pocos que soporta herencia múltiple.

Ferreiras Elementos basicos de TOO 142


 La herencia múltiple Permite a la
clase derivada heredar propiedades
(datos y operaciones) de más de una
superclase y fusionarlas como partes
suyas;

Ferreiras Elementos basicos de TOO 143


POLIMORFISMO

Ferreiras Elementos basicos de TOO 144


POLIMORFISMO
Es la capacidad de objetos, pertenecientes a
diferentes clases, procesar un mismo
mensaje de acuerdo a un comportamiento
especifico para cada una de sus clases;
Significa que dichos objetos pueden
responder al mismo mensaje en diferentes
maneras;

Ferreiras Elementos basicos de TOO 145


Ilustración del concepto polimorfismo: En la
figura de mas abajo, cuando le indicamos a
cada objeto que hable ( les enviamos en
mensaje “hablen”) cada uno hablará en su
forma particular:

Ferreiras Elementos basicos de TOO 146


Por ejemplo, en el sistema
figurasGeometricas, un círculo, un triangulo,
un cuadrado, y un decágono tienen cada uno
formas diferentes; Mediante el uso de
polimorfismo, se puede enviar a cada una de
las figuras el mismo mensaje (por ejemplo,
dibujarse), y cada una es responsable de
dibujarse por sí mismo según su forma propia;

Ferreiras Elementos basicos de TOO 147


 Otro ejemplo: en un software OO que
gestiona el sistema de una empresa,
podemos enviar un mensaje a todos los
objetos que se les pide que almacenen sus
datos. cada uno de ellos se comportan de
manera diferente en el sentido de que tienen
diferentes atributos para almacenar. sin
embargo, todos ellos reciben y actúan igual
ante el mismo mensaje;

Ferreiras Elementos basicos de TOO 148


GRACIAS

Ferreiras Elementos basicos de TOO 149


Referencias
Ferreiras’s PPT of Object-Oriented Analysis and Design.

Ferreiras Elementos basicos de TOO 150

También podría gustarte