0% encontró este documento útil (0 votos)
62 vistas50 páginas

Introducción a POO y UML

Este documento describe las diferencias entre la programación procedural y orientada a objetos. Explica que la programación orientada a objetos modela objetos del mundo real como unidades que encapsulan datos y comportamientos. También describe conceptos clave como clases, objetos, atributos, métodos, encapsulamiento y mensajes.

Cargado por

nilson gomez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
62 vistas50 páginas

Introducción a POO y UML

Este documento describe las diferencias entre la programación procedural y orientada a objetos. Explica que la programación orientada a objetos modela objetos del mundo real como unidades que encapsulan datos y comportamientos. También describe conceptos clave como clases, objetos, atributos, métodos, encapsulamiento y mensajes.

Cargado por

nilson gomez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Clase - Objeto

Clase 5
PROGRAMACIÓN
ORIENTADA A
OBJETOS

Fabián Andrés Giraldo


ANÁLISIS

Diferencias entre Programación Procedimental y Orientada


a Objetos

Object-Oriented Analysis and Design Using UML, Sun Learning Service


2
ANÁLISIS

Object-Oriented Analysis and Design Using UML, Sun Learning Service

3
ANÁLISIS

Object-Oriented Analysis and Design Using UML, Sun Learning Service

4
ANÁLISIS

5
ANÁLISIS

Qué son los Objetos?


• Los objeto consisten de datos y funciones empaquetados juntos en una
unidad reutilizable. Los objetos encapsulan datos.
• Cada objeto es una instancia de un alguna clase, la cual define un conjunto
de características comunes (atributos y operaciones) compartidas por todas
las instancias. Los objetos tienen:
– Atributos– La parte de los datos.
– Operaciones– La parte del comportamiento
• Todos los objetos tienen:
– Identificador: Cada objeto tiene su identificar único y puede ser accedido por un
único manejador.
– Estado: Son los datos almacenados en el objeto en cualquier parte del tiempo.
– Comportamiento: Conjunto de operaciones que el objeto puede ejecutar.

6
ANÁLISIS

• Programar bajo el paradigma de programación orientada


a objetos consiste en simular o modelar los objetos del
mundo real. En una granja, por ejemplo, se pueden
identificar diferentes animales como entes con
características y acciones propias. Como ejemplos se
puede tomar un perro.

7
ANÁLISIS

Un campo (Atributo) es un nombre de una


localización de memoria en la cual un objeto Características del Perro
puede almacenar información. Típicamente, es • Edad
una variable de instancia.
• Color
• Peso
Zlatan Características comunes a
todos los perros

Acciones que puede realizar


el Perro Un método (Procedimiento) es una
secuencia de instrucciones con
• Comer nombre que puede ser referenciada
• Dormir (Invocada) en otro lugar del
programa a través del uso de una
• Correr instrucción de invocación de
• Ladrar métodos.
Estos comportamientos son
comunes a todos los perros

Zlatan es un objeto con características específicas. En la granja pueden existir otro


Perros con diferente edad, color y peso. Se puede definir la clase Perro como una
8
Abstracción de todos los perros existentes en la granja.
ANÁLISIS

9
ANÁLISIS

Operaciones
Encapsulamiento Valores de los Atributos

• Los datos están ocultos


dentro del objeto. Los datos deposit()
deben ser accedidos a través
de operaciones (Tener en
cuenta el especificador de withdraw()
number = "1243"
acceso).
owner = "Jim Arlow"
• El encapsulamiento o
ocultamiento de datos es un balance = 300.00
getOwner()
ponderosa idea. Permite
software más robusto y
código reutilizable setOwner()

Objeto Cuenta
10
ANÁLISIS

Mensajes
• En los Sistema orientados a objetos. Los objetos envían mensajes a otros a través de enlaces.
• Los mensajes causan que los objetos invoquen una operación

Objeto Bank Objeto Account


message

withdraw( 150.00 )

El objeto Bank envía el mensaje El objeto Account responde invocando


“withdraw 150.00” al objeto la operación withdraw. Esta operación
Account. reduce el saldo de la cuenta en 150.00.

11
ANÁLISIS

Sintaxis UML para los Objetos Variantes


Nombre del Nombre de la Omitir la compartimento para los atributos
Identificar del objeto Objeto clase
(Debe subrayarse) Objeto y
nombre jimsAccount : Account
Compartimento De la clase
Para el nombre jimsAccount : Account
Nombre del
accountNumber : String = "1234567" objeto solo jimsAccount
Compartimento owner : String = "Jim Arlow"
Para los atributos balance : double = 300.00
Solo el
nombre de la : Account
Valor del clase
Nombre del Tipo de
atributo Atributo atributo Un objeto anónimo
• Todos los objetos de una clase particular tiene el mismo conjunto de operaciones. Por lo
tanto, las operaciones no son mostradas en un diagrama de objeto, estas son solo
mostradas en el diagrama de clases.
• El tipo de los atributos puede ser omitido para simplificar el diagrama.
• Nombres:
– Objetos y atributos en lowerCamelCase.
– Nombre de clases en UpperCamelCase.
12
ANÁLISIS

QUE SON LAS CLASES?


• Cada objeto es una instancia de una clase – la clase
describe el “Tipo” del objeto.
• Las clases permiten modelar un conjunto de objetos que
tienen las mismas características – una clase actúa
como una plantilla para crear objetos.
– La clase determina la estructura (Conjunto de características) de
todos los objetos de la clase.
– Todos los objetos de la clase tiene las mismas operaciones,
tiene los mismos atributos, pero tiene diferentes valores para los
atributos.
• Piense en las clases como:
class
– Sellos.
– Moldes de galleta

object
13
ANÁLISIS

EJERCICIO – CUANTAS CLASES HAY?

14
ANÁLISIS

Clases y Objetos
Account
• Los objetos son instancias
Clase accountNumber : String
de las clases. owner : String
balance : double

withdraw()
• La mayoría de las clases deposit()
poseen una operación
llamada constructor para «instantiate» «instantiate» «instantiate»
crear una instancia de una
clase. Esa operación tiene JimsAccount:Account fabsAccount:Account ilasAccount:Account

ámbito de clase. Es decir, accountNumber : "801"


owner : "Jim"
accountNumber : "802"
owner : "Fab"
accountNumber : "803"
owner : "Ila"
Permite a la clase misma balance : 300.00 balance : 1000.00 balance : 310.00
crear objetos.
Objetos
Objetos son instancias de las clases

15
ANÁLISIS

Nombre de la clase
UML - Notación de Clase
Window
Compartimento
Para el nombre

+size : Area=(100,100) Inicialización de


Los valores
#visibility : Boolean = false
Compartimento +defaultSize: Rectangle
Para los atributos
#maximumSize : Rectangle
Adorno de -xptr : XWindow*
visibilidad +create() Operación del
Ámbito de clase
+hide()
Compartimento para +display( location : Point )
Operaciones. -attachXWindow( xwin : XWindow*)

• Las clases son nombradas en UpperCamelCase


• Usan nombres descriptivos que son sustantivos.
16
ANÁLISIS

Compartimento para los Atributos


Visibilidad nombre : tipo [multiplicidad] = valor Inicial
Obligatorio

• Todos los elementos son opcionales excepto el nombre


• El valor inicial es el valor que el atributo obtiene cuando un
objeto de la clase es instanciado.
• Los atributos son nombrados en lowerCamelCase
– Usar nombres descriptivos

17
ANÁLISIS

Visibilidad
Symbol Name Semantics
+ public Cualquier elementos que pueda acceder a la clase, puede acceder solo a
la características que son públicas.
- private Solo las operaciones de la clase pueden accede a las características
privadas.
# protected Solo operaciones de la clase, o los hijos de la clase, pueden accede a las
características con visibilidad protegida.
~ package Cualquier elemento que esté en el mismo paquete, pueden acceder a las
características con visibilidad de paquete.

• Se puede omitir la visibilidad en el análisis


PersonDetails
• En el diseño, los atributos tiene
-name : String [2..*]
-address : String [3] generalmente visibilidad privada
-emailAddress : String [0..1] (Encapsulamiento)
18
ANÁLISIS

Multiplicidad

• Multiplicidad le permite modelar colecciones de cosas


• [0..1] Significa que el atributo podría tener un valor null

PersonDetails

-name : String [2..*] Name está compuesto de 2 o más String


-address : String [3] address está compuesta de 3 Strings
-emailAddress : String [0..1] emailAddress está compuesto de 1 String o null

Expresión de multiplicidad

19
ANÁLISIS
Compartimento para las Operaciones
Signatura para operaciones.

Visibilidad nombre( dirección NombreParametro: Type = default, …) : TipoRetorno

Lista de Parámetros

• Las operaciones son nombradas en lowerCamelCase


– Los nombres de las operaciones son usualmente verbos.
• Las operaciones podrían tener un tipo de retorno.
– Pueden retornar objetos.

20
ANÁLISIS

Dirección de los parámetros


parameter semantics
direction
in El parámetro es una entrada en la operación. El parámetro no es
cambiado por la operación.
out El parámetro sirve como un repositorio para la salida de la operación
(En lenguajes que soporten paso por referencia).
inout El parámetro es una entrada en la operación y este puede ser
cambiado por la operación (En lenguajes que soporte paso por
referencia)
return El parámetro es un de los valores de retorno de la operación.

21
ANÁLISIS

ÁMBITO
• Hay dos ámbitos para los atributos y para las variables.

BankAccount
-accountNumber : int
-count : int = 0
+create( aNumber : int)
Ámbito de clase +getNumber() : int Ámbito de instancia
(Subrayado) -incrementCount() (Por defecto)
+getCount() : int

22
ANÁLISIS

Que es el ámbito de una variable?

El ámbito de una variable es el


contexto dentro del que la variable
está definida.
En Programación Estructurada
• Variables locales o automáticas: son las que
se declaran en el interior de un bloque y
valen solo allí.

• Variables externas o globales: Son definidas


fuera de las funciones, y ocupan una posición
de memoria fija. Hay que tener en cuenta que
estas variables pueden ser modificadas desde
cualquier función.

23
ANÁLISIS
Ámbito de Instancia vs. Ámbito de Clase
Ámbito de Instancia Ámbito de Clase
Por defecto, los atributos tienen ámbito de instancia Los atributos podrían ser definidos como ámbito
de clase.
Cada objeto de la clase obtiene su propia copia de Cada objeto de la clase comparte el mismo, y
Atributos

los atributos instancia. una única copia de los atributos de ámbito de la


clase.
Cada objeto puede teóricamente tener diferentes Cada objeto debe tener los mismo valores en los
valores en los atributos de ámbito instancia atributos de ámbito clase.

Por defecto, las operaciones tiene ámbito de Las operaciones pueden ser definidas como
instancia ámbito de clase.
Cada invocación de una operación de ámbito La invocación no es aplicada a una instancia
instancia es aplicado a una instancia especifica de específica de la clase.
Operaciones

la clase.

Usted no puede invocar una operación, a menos Usted puede invocar una operación así no tenga
que usted tenga una instancia de la clase una instancia de la clase creada – esto es ideal
disponible. para las operaciones de creación de objetos.

24
ANÁLISIS

Construcción de Objetos
• Como crear instancias de una clase?
• Cada clase define una o más operación de ámbito de clase, las
cuales son conocidas como constructores. Esas operaciones
crean nuevas instancias de la clase.

BankAccount BankAccount

+create( aNumber : int ) +BankAccount( aNumber : int )

Nombre de constructor Estándar Java / C++


genérico 25
ANÁLISIS

Ejemplo clase ClubMember


ClubMember
Cada objeto ClubMember tiene -membershipNumber : String
su propia copia del atributo -memberName : String
membershipNumber -numberOfMembers : int = 0
+create( number : String, name : String )
• El atributo numberOfMembers +getMembershipNumber() : String
definido una sola vez y es +getMemberName() : String
compartido por todas las -incrementNumberOfMembers()
instancia de la clase +decrementNumberOfMembers()
ClubMember. +getNumberOfMembers() : int

• Suponga que en la operación


de creación se incrementa
numberOfMembers:
– Cual es el valor del Contador
cuando se han creado 3 objetos?
26
ANÁLISIS – Buscando clases
de Análisis

Análisis parte 2

27
ANÁLISIS

Que son las clases de análisis?


• Clases de análisis representan una
abstracción en el dominio del
Nombre de BankAccount
problema
La clase name
• Las clases en el análisis tienen:
– Un conjunto de atributos de alto nivel. Atributos address
– Operaciones específicas a alto nivel, balance
que indica los servicios que podría deposit()
prestar la clase.
Operaciones withdraw()
• Las Clases de análisis representan calculateInterest()
conceptos de negocio presentes en el
mundo real.

28
ANÁLISIS

• Abstracción: En el sentido mas general, una abstracción


es una representación concisa de una idea o de un
objeto complicado. En un sentido mas especifico, la
abstracción localiza y oculta los detalles de un modelo o
diseño para generar y manipular objetos.
• La abstracción es la característica más básica de la
Programación Orientada a Objetos y puede definirse
como la acción de identificar las cualidades y acciones
que un objeto puede realizar.

29
ANÁLISIS

• En el análisis se está tratando de modelar un aspecto


del dominio del problema de forma precisa y concisa
desde la perspectiva del sistema que está tratando de
construir
• Por ejemplo, si usted está modelando un cliente en un
sistema bancario, usted desea capturar el nombre y
dirección del cliente, etc., pero sería poco probable que
esté interesado en su preferencia por la ventana o
pasillo en los asientos en un avión. Usted necesita
centrarse en los aspectos de las cosas del mundo real
que son importantes desde el punto de vista del sistema
que está construyendo

30
ANÁLISIS

Que hace una buena clase de análisis?


• Su nombre refleja su intención
• Es una abstracción que modela un elemento específico de un dominio del problema.
– Mapea una característica claramente identificable del dominio del problema.
• Tienen alta cohesión
– Cohesión es el grado en el cual una clase modela una única abstracción.
– Cohesión es el grado en el cual las responsabilidades de la clase son semánticamente
relacionadas.
• Tienen bajo acoplamiento.
– Acoplamiento es el grado que una clase depende de otras.
• Reglas de Oro: Una responsibilidad es un
– 3 a 5 responsabilidades por clase contrato o obligación de
– Cada clase colabora con otras una clase- Este es
– Cuidado con muchas clases muy pequeñas resuelto con los atributos
– Cuidado con pocas pero clases muy grandes y los métodos.
– Ciudado con las clases “omnipotentes”
– Evite árboles de herencia profundas.
31
ANÁLISIS

Buscando las Clases


• Ejecutar análisis sustantivo/verbo sobre los documentos:
– Los sustantivos con clases candidatas.
– Los verbos son operaciones candidatas.
• Ejecutar análisis de cartas CRC
– Una técnica de lluvia de ideas usando notas adhesivas
• Con ambas técnicas:
– Buscar sinónimos- Diferentes palabras que significan lo mismo.
– Buscar por homónimos – Mismo significado para diferentes cosas.
• Buscando clases ocultas!
– Las clases no aparecen como sustantivos o como cartas.

32
ANÁLISIS

Procedimiento de análisis sustantivo / Verbo


• Reunir todos los documentos relevante.
– Documento de requerimientos
– Casos de uso.
– Glosario del Proyecto.
• Hacer una lista de sustantivos
– Son clases candidatas o atributos.
• Hacer una lista de verbos.
– Son responsabilidades candidatas.
• Tentativamente asignar atributos y responsabilidades
a las clases.
33
ANÁLISIS

• El análisis del lenguaje natural es un conjunto intuitivo


de heurísticas para identificar objetos , atributos y
asociaciones de especificadores de requerimientos

• El análisis del lenguaje natural tiene la ventaja de


focalizarse en los términos del usuario. Sin embargo,
existen varias limitaciones. La calidad del modelo de
objeto depende ampliamente del estilo de escritura del
análisis

34
ANÁLISIS

• Tabla de Heurísticas

35
ANÁLISIS
Procedimiento CRC
Class Name: BankAccount
Responsibilities: Collaborators:
Cosas que
Maintain balance Bank Cosas con las
la clase cuales la clase
hace trabaja.

• Clases, Responsabilidades y Colaboradores.


• Separa la recolección de la información del análisis de la
información
– Parte 1: Lluvia de ideas
• Todas las ideas son buenas en el análisis CRC
• Nunca discuta acerca de algo - anótelo y analizarlo más tarde!
– Parte 2: Analice la información – consolide con sustantivo / verbo
36
ANÁLISIS

• Lista de conceptos para identificar clases candidatas.


Categoría Ejemplo
Objetos físicos o tangibles Avión
Libro
Especificación, diseño o Especificación de Productos
descripción de cosas Descripción del vuelo
Lugares Aeropuerto
Transacciones Venta, Reserva
Roles de Personas Piloto
Contenedor de cosas Tienda, Avión
Cosas en el contenedor Productos, Personas

37
ANÁLISIS

Categoría Ejemplo
Organizaciones Departamento de Ventas
Eventos Venta, Pago, Reunión
Procesos Vender un producto, Reserva
de un puesto
Catálogos Catálogo de productos,
Catálogo de partes

38
ANÁLISIS

Errores comunes en la identificación de conceptos


Quizás el error más común cuando se crea un modelo de
dominio es representar algo como un atributo cuando
debería haber sido un concepto. Una regla de oro para
ayudar a evitar este error es:
Si un concepto X es posible representarlo como un número
o texto en el mundo real, X es probablemente un atributo
no una clase.
Un ejemplo, podría store ser un atributo de Sale, o una
clase conceptual separada Store?

39
ANÁLISIS

• En el mundo real, una Store no es considerada como un


número o texto —el término sugiere una entidad, una
organización, algo que ocupa espacio. Teóricamente,
Store debería ser un concepto.
• Otro ejemplo, considere un Sistema de reservas aéreas.
Podría ser destination un atributo de Flight, o una clase
conceptual Airport?

40
ANÁLISIS

• En el mundo real, un airport de destino no es


considerado un número o texto —es algo que ocupa
espacio. Teóricamente, Airport debería ser un concepto.

41
IMPLEMENTACIÓN

Codificación en Java –
Diagrama de Clases

42
Ejercicios

43
Ejercicios

44
Ejercicios

• Construir un programa que permita manipular la cuenta


bancaria de una persona. La información que se tiene
de la cuenta es el número, la clave de acceso, el dueño
y el saldo. Las operaciones que puede realizar con la
cuenta son: consignar dinero, retirar dinero, cambiar la
clave y consultar el saldo. Se debe crear la cuenta de
Magdalena Sánchez, con número 1012, clave 1234 y
saldo en cero. A la cuenta en mención se le consignar
$100.000. También se debe crear la cuenta de Joselito
Pérez con número 1013, clave 9876 y saldo 500000,
quien cambia su clave y consulta su saldo.

45
TRABAJO INDEPENDIENTE

• Crear una aplicación que permita desarrollar las siguientes


tareas: crear empleados, añadir horas y calcular nómina.
– Crear empleados: se crearan tres objetos de la clase
empleados.
– Añadir horas: Se le preguntará al usuario por un empleado
para añadirle las horas trabajadas. La búsqueda se debe
realizar por medio del número de identificación del
empleado.
– Calcular nómina: Aquí se le informará al usuario el salario
que tendrá que pagar a cada uno de los tres empleados
creados. Además, se deberá calcular el salario total por el
mes que se deberá pagar, es decir, la nómina.

46
TRABAJO INDEPENDIENTE

• Un empleado tiene un nombre, un apellido, un genero


(másculino , femenino), una fecha de nacimiento y una
imagen asociada (foto). Además tiene una fecha (día,
mes, año) de ingreso a la empresa en la que trabaja.

• Desde el programa se debe poder: cambiar el salario del


empleado, lo mismo que hacer los siguientes cálculos
con la información disponible: edad actual, antigüedad
en la empresa.

47
TRABAJO INDEPENDIENTE

• Se quiere construir un programa para manejar una


alcancía. En la alcancía es posible guardar monedas de
distintas denominaciones: $20, $50, $100, $200 y $500.
No se guardar billetes o monedas de otras
denominaciones.
• El programa debe dar las siguientes opciones: agregar
una moneda de una de las denominaciones, informar
cuantas monedas tiene de cada denominación, calcular
el dinero ahorrado y romper la alcancía, vaciando su
contenido.

48
TRABAJO INDEPENDIENTE

• Una pequeña tienda que vende cuatro productos, para


cada uno de los cuales se debe manejar la siguiente
información: su nombre, su tipo (producto de papelería,
de supermercado o de droguería), la cantidad actual de
producto en la tienda, el número de productos por el
cual se debe hacer un nuevo pedido al proveedor, el
precio base de venta por unidad. Para calcular el precio
final de cada producto, se debe sumar los impuestos
que define la ley. Dichos impuestos dependen del tipo
de producto: Los de papelería 16%, los de
supermercado 4% y los de droguería 12%. El programa
debe permitir.

49
TRABAJO INDEPENDIENTE

Las siguientes operaciones: Vender a un cliente un cierto


número de unidades de un producto, hacer un pedido de
un producto para el cual ya se llego al tope mínimo
permitido y mostrar algunas estadísticas de la tienda.
Dichas estadísticas son: el producto más vendido, el
producto menos vendido, la cantidad total de dinero
obtenido por las ventas de la tienda y el promedio de
ventas de la tienda (valor total de las ventas dividido por el
número total de unidades vendidas de todos los productos)

50

También podría gustarte