fundamentos de programación unidad 4

15
IV. Programación orientada a objetos y modelado. Una de las actividades más comunes en el mundo financiero es la realización de simulaciones que permitan a los clientes saber el rendimiento de sus productos a través del tiempo, contemplando diferentes escenarios, así como las posibles situaciones que pueden presentarse. Se quiere crear un programa que haga la simulación de un modelo bancario. Un cuentahabiente tiene nombre, domicilio, teléfono y número de cuenta. Una cuenta, por su parte, está constituida por tres productos financieros básicos: (1) Una cuenta de ahorro, (2) una cuenta corriente y (3) un certificado de depósito a plazo fijo (CDPF). Estos productos son independientes y tienen comportamientos particulares. El saldo total de la cuenta es la suma de lo que tiene el cliente en cada uno de dichos productos. En la cuenta corriente el cliente puede depositar o retirar su dinero, este tipo de cuenta no recibe ningún interés. En la cuenta de ahorros se paga un interés mensual del 6% sobre el saldo. Cuando el cliente abre un CDPF, define la cantidad de depósito que quiere invertir y negocia con el banco el interés mensual. A diferencia de la cuenta corriente o la cuenta de ahorros en un CDPF no se puede realizar ningún retiro o depósito, las únicas operaciones posibles son abrir o cerrar la cuenta. Si es abrir, el dinero se toma de la cuenta corriente y si es cerrar, el dinero se deposita en la cuenta corriente del cliente. Se requiere que el programa permita a una persona simular el manejo de sus productos bancarios, dándole las facilidades de: (1) hacer las operaciones necesarias sobre los productos que existen en las cuentas y (2) avanzar mes por mes para que el cliente pueda ver el resultado de sus movimientos bancarios. IV.1. Características del modelo orientado a objetos Una vez teniendo la definición del problema se deben establecer los requerimientos funcionales. Un requerimiento funcional es una operación que el programa debe de proveer al usuario y se describe a través de cuatro elementos: Nombre Operación Entradas Resultado Una de las primeras actividades es identificar las entidades que intervienen en el problema. Estas entidades pueden ser concretas como una persona o abstractas como un concepto.

Upload: panchoxman-urenda

Post on 14-Feb-2015

100 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Fundamentos de Programación Unidad 4

IV. Programación orientada a objetos y modelado.

Una de las actividades más comunes en el mundo financiero es la realización de

simulaciones que permitan a los clientes saber el rendimiento de sus productos a través

del tiempo, contemplando diferentes escenarios, así como las posibles situaciones que

pueden presentarse.

Se quiere crear un programa que haga la simulación de un modelo bancario. Un

cuentahabiente tiene nombre, domicilio, teléfono y número de cuenta. Una cuenta, por su

parte, está constituida por tres productos financieros básicos: (1) Una cuenta de ahorro,

(2) una cuenta corriente y (3) un certificado de depósito a plazo fijo (CDPF). Estos

productos son independientes y tienen comportamientos particulares.

El saldo total de la cuenta es la suma de lo que tiene el cliente en cada uno de dichos

productos. En la cuenta corriente el cliente puede depositar o retirar su dinero, este tipo

de cuenta no recibe ningún interés. En la cuenta de ahorros se paga un interés mensual

del 6% sobre el saldo. Cuando el cliente abre un CDPF, define la cantidad de depósito

que quiere invertir y negocia con el banco el interés mensual. A diferencia de la cuenta

corriente o la cuenta de ahorros en un CDPF no se puede realizar ningún retiro o

depósito, las únicas operaciones posibles son abrir o cerrar la cuenta. Si es abrir, el dinero

se toma de la cuenta corriente y si es cerrar, el dinero se deposita en la cuenta corriente

del cliente.

Se requiere que el programa permita a una persona simular el manejo de sus productos

bancarios, dándole las facilidades de: (1) hacer las operaciones necesarias sobre los

productos que existen en las cuentas y (2) avanzar mes por mes para que el cliente

pueda ver el resultado de sus movimientos bancarios.

IV.1. Características del modelo orientado a objetos

Una vez teniendo la definición del problema se deben establecer los requerimientos

funcionales. Un requerimiento funcional es una operación que el programa debe de

proveer al usuario y se describe a través de cuatro elementos:

Nombre

Operación

Entradas

Resultado

Una de las primeras actividades es identificar las entidades que intervienen en el

problema. Estas entidades pueden ser concretas como una persona o abstractas como un

concepto.

Page 2: Fundamentos de Programación Unidad 4

En la programación orientada a objetos las entidades se denominan clases y serán los

elementos básicos del diseño y posteriormente de la implementación.

Una vez identificadas las entidades, el siguiente paso es establecer las características de

cada entidad. Por cada característica se debe asignar la entidad a la que pertenece,

además se tiene que registrar el nombre de la característica, descripción y conjunto de

valores permitidos.

A las características en la programación orientada a objetos se les denomina atributos y al

igual que las clases son parte fundamental del diseño.

Del problema anterior realice:

Entidades:

Entidad Descripción

Características

Entidad Nombre Descripción Conjunto de Valores permitidos

Requerimientos Funcionales:

Requerimiento Funcional 1

Nombre

Operación

Entrada

Resultado

Requerimiento Funcional 2

Nombre

Operación

Entrada

Resultado

Requerimiento Funcional 3

Nombre

Operación

Entrada

Resultado

Requerimiento Funcional 4

Nombre

Operación

Entrada

Resultado

Page 3: Fundamentos de Programación Unidad 4

IV.2. Elementos primordiales en el modelo de objetos

Introducción:

Si se quiere construir una caseta para un perro se puede comenzar muy bien con un

montón de de madera, algunos clavos y unas cuantas herramientas (martillo, serrucho,

cinta métrica, etc.). En pocas horas y con poca planificación previa, es posible que

termine una caseta razonablemente funcional, y que probablemente la pueda realizar sin

ayuda de nadie. Si no sale bien, siempre se puede volver a empezar o buscar un perro

menos exigente.

Si se quiere construir una casa para una familia, se puede comenzar con un montón de

madera, algunos clavos, y unas cuantas herramientas básicas, pero va a llevar más

tiempo y con seguridad, la familia será más exigente que el perro. En este caso, a menos

que se haya hecho antes muchas veces, se obtendrá un resultado mejor haciendo una

planificación detallada antes de golpear el primer clavo o echar los cimientos. Como

mínimo, se debe realizar algunos bocetos del aspecto que se quiere que tenga la casa.

Aunque es humanamente posible que uno se construya su propia casa, será mucho más

eficiente trabajar con otros o comprar material pre-construido. Mientras se cumplan los

planes y se permanezca dentro de las limitaciones de tiempo y dinero, es muy probable

que la familia esté satisfecha. Si no sale bien, no se puede cambiar precisamente de

familia, así que es mejor establecer las expectativas al principio y controlar los cambios

cuidadosamente.

Programador

Actividades para el modelado de Clases

• Identificar entidades

• Modelar sus características

• Buscar relaciones entre las entidades

• Describir los requerimientos funcionales

• Documentar

Page 4: Fundamentos de Programación Unidad 4

Curiosamente, un montón de empresas de desarrollo de software comienza queriendo

construir rascacielos, pero enfocan el problema como si estuvieran enfrentándose a la

caseta de un perro. Dada la creciente demanda de desarrollo de software en la era de

Internet, los equipos de desarrollo a menudo recurren a la única cosa que realmente

saben hacer bien: toneladas de líneas de código. Si realmente se quiere construir el

software equivalente a una casa o un rascacielos, el problema es algo más que una

cuestión de escribir grandes cantidades de software. De hecho, el truco está en crear el

software apropiado y en imaginar cómo escribir menos software.

Los proyectos que fracasan lo hacen por circunstancias propias, pero todos los proyectos

con éxito se parecen en muchos aspectos. Hay muchos elementos que contribuyen a que

una empresa de software sea exitosa; uno de estos elementos es el modelado.

El Modelado es una técnica de ingeniería probada y bien aceptada. Construimos modelos

arquitectónicos de casa, rascacielos, puentes, carreteras, etc., para ayudar a sus usuarios

a visualizar el producto final. Incluso podemos construir modelos matemáticos para

analizar los efectos de vientos o terremotos sobre nuestros edificios.

¿Qué es un Modelo?

“Un Modelo es una simplificación de la realidad.”

¿Por qué Modelamos?

Construimos modelos para comprender mejor el sistema que estamos desarrollando.

El Modelado no es sólo para los grandes sistemas. Incluso el equivalente software de una

caseta de perro puede beneficiarse de algo de modelado. Sin embargo, es absolutamente

cierto que, cuanto más grande y complejo es el sistema, el modelado se hace más

importante, por una simple razón:

Construimos modelados de sistemas complejos porque no

podemos comprender el sistema en su totalidad

IV.3. Representación gráfica del diseño

Clases

Una clase es una descripción de un conjunto de objetos que comparten los mismos

atributos, operaciones, relaciones y semántica.

En el Lenguaje Unificado de Modelado (UML, Unifield Modeling Language), una clase es

representada por un rectángulo que posee tres divisiones:

Page 5: Fundamentos de Programación Unidad 4

En donde:

La parte superior: Contiene el nombre de la Clase

La intermedia: Contiene los atributos (o variables de instancia) que caracterizan a

la Clase (pueden ser private, protected o public).

La parte Inferior: Contiene los métodos u operaciones, los cuales son la forma

como interactúa el objeto con su entorno (dependiendo de la visibilidad: private,

protected o public).

Atributos y Métodos:

Atributos:

Los atributos o características de una Clase pueden ser de tres tipos, los que definen el

grado de comunicación y visibilidad de ellos con el entorno, estos son:

public (+, ): Indica que el atributo será visible tanto dentro como fuera de la

clase, es decir, es accsesible desde todos lados.

private (, ): Indica que el atributo sólo será accesible desde dentro de la

clase (sólo sus métodos lo pueden accesar).

protected (#, ): Indica que el atributo no será accesible desde fuera de la

clase, pero si podrá ser accesado por métodos de la clase

además de las subclases que se deriven (herencia).

acceso Cada variable tiene asociado un tipo que se utiliza para controlar el acceso.

Entre estos se encuentran:

public Esta variable se puede acceder desde cualquier clase.

private Esta variable solo es accesible desde la clase.

Nombre de la clase

Atributos

Comportamiento

Page 6: Fundamentos de Programación Unidad 4

protected Esta variable es accesible en todo el paquete y en clases

derivadas de otros paquetes.

defecto Si no especifica ningún tipo de acceso, se utiliza el acceso por

defecto, esto significa que la variable es accesible desde

cualquier clase del paquete.

Nota: Violar las normas de acceso da como resultado un error al compilar el

programa.

static Declara la variable como variable de las clase y no del objeto. Esto es que

solamente puede existir una variable en toda la clase.

Métodos:

Los métodos (también llamados funciones o procedimientos en otros lenguajes de

programación) son mini programas dentro de un programa. Por medio de los métodos se

pueden dividir tareas de un proyecto, lo cual lo hará más manejable.

Los métodos u operaciones de una clase son la forma en como ésta interactúa con su

entorno, éstos pueden tener las características:

public (+, ): Indica que el método será visible tanto dentro como fuera de

la clase, es decir, es accsesible desde todos lados.

private (, ): Indica que el método sólo será accesible desde dentro de la

clase (sólo otros métodos de la clase lo pueden accesar).

protected (#, ): Indica que el método no será accesible desde fuera de la

clase, pero si podrá ser accesado por métodos de la clase

además de métodos de las subclases que se deriven

(herencia).

acceso static tipo NombreDelMétodo (Lista de Argumentos) {

Declaración de variables del método

Sentencias del método

[return tipo;]

Donde:

acceso Cada método tiene asociado un tipo que se utiliza para controlar el acceso al

método. Entre estos se encuentran:

public Este método público se puede llamar de cualquier código que tenga

acceso a la clase.

Page 7: Fundamentos de Programación Unidad 4

private Este método privado solo puede ser llamada desde otro método de

la clase en que se definió el método privado.

protected Este método protegido se puede llamar desde otros métodos de la

clase en que el método esta definido y por cualquier otro método de

las clases que heredan de la clase en que está definido el método.

También está disponible en cualquier objeto de las clases

pertenecientes al mismo paquete que la clase en que está definido

el método.

defecto Si no especifica ningún tipo de acceso, se utiliza el acceso por

defecto, esto significa que el método es accesible a todas las clases

contenidas en le mismo paquete, pero no esta accesible fuera de

ese paquete.

static Declara el método como método de la clase y no como método del objeto (no

hereda el método).

Nota: Un método declarado como static solo puede ser llamado por otro método static

y hacer referencia a variables static.

Ejercicio:

Elabore un método que envíe el nombre de una persona y regrese el número de vocales

que contiene.

Diagrama de Objetos

Se usan para mostrar el estado del sistema en un momento concreto

Ejemplo: Se desea representar un triangulo, el cual está definido por tres puntos, cada

uno de los cuales tiene dos coordenadas X, Y. El triangulo tiene además color de línea y

un color de relleno, un color por su parte está definido por tres valores numéricos entre 0 y

255 (estándar RGB por RedGreenBlue). El primer valor numérico define la intensidad del

rojo, el segundo el verde y el tercero el azul. Además el triangulo tendrá las funciones de

calcular el perímetro del triangulo y calcular el área.

Triangulo

Punto1Punto2Punto3

ColorLineaColorRelleno

Calcula_Perimetro()Calcula_Area()

Punto

XY

Color

RojoVerdeAzul

13

12

Page 8: Fundamentos de Programación Unidad 4

El diagrama de objetos se estipula de la siguiente forma:

Ejercicio:

Del siguiente diseño, dibuje una instancia de objetos con su nombre, fecha de nacimiento

y fecha de ingreso al Tecnológico de Aguascalientes.

ColorRelleno : Color

Rojo = 5Verde= 170Azul = 47

Isósceles : Triangulo

Punto1 : Punto

X = 10Y = 10

Punto2 : Punto

X = 20Y = 20

Punto3 : Punto

X = 50Y = 70

ColorLínea : Color

Rojo = 105Verde= 100Azul = 240

Objeto : Clase

Atributo1 = Expresión…

Estudiante

NombreApellidoPApellidoM

FechaNFechaIngreso

Fecha

díamesaño

12

Page 9: Fundamentos de Programación Unidad 4

Constructores:

Un constructor es un método de propósito específico que se ejecuta automáticamente

cuando se crea un objeto de una clase. Un constructor sirve para inicializar las variables

de clase. Los constructores tienen el mismo nombre que la clase, además no tienen valor

de retorno (incluso ni void) y están clasificados en constructores por defecto y

alternativos/sobrecargados.

Constructores por defecto

Un constructor que no tiene parámetros se le llama constructor por defecto. Un

constructor por defecto normalmente inicializa las variables con un valor por default.

class Punto

{

private int x;

private int y;

Punto () { //constructor por defecto

x = 0;

y = 0;

}

Punto (int x, int y) {

this.x = x;

this.y = y;

}

}

Regla: Java crea automáticamente un constructor por defecto cuando no existe

otro constructor. Tal constructor inicializa las variables tipo int, float, double,

long con cero, las booleanas con false y las referencias con null.

Precaución: Tenga cuidado con la declaración de una clase que sólo tenga un

constructor con argumentos. En ese caso si se omite un constructor sin

parámetros no será posible utilizar el constructor por defecto.

class Punto {

private int x;

private int y;

….

}

….

Page 10: Fundamentos de Programación Unidad 4

Punto primerPunto = new Punto(); // no es posible utilizar este constructor

Constructores alternativos/sobrecargados

A un constructor con parámetros se le denomina constructor alternativo/sobrecargado

class Punto {

private int x;

private int y;

Punto () { // constructor por defecto

x = 0;

y = 0;

}

Punto (int x, int y) { // constructor alternativo

this.x = x;

this.y = y;

}

Destructores:

Un destructor es una función miembro con igual nombre que la clase, pero precedido por

el carácter ~. Una clase sólo tiene una función destructor que, no tiene argumentos y no

devuelve ningún tipo. Un destructor realiza la operación opuesta de un constructor,

limpiando el almacenamiento asignado a los objetos cuando se crean. Java no posee

destructores y para recuperar un objeto lo hace por medio del recolección de basuras.

Clase Abstracta:

Una clase abstracta es aquella clase que tiene por lo menos un método abstracto

(Declarado pero no definido) y se denota poniendo el nombre de la clase en letras

"itálicas". Una clase abstracta no puede ser instanciada pues posee métodos abstractos

(aún no han sido definidos, es decir, sin implementación). La única forma de utilizarlas es

declarar subclases que redefinan los métodos abstractos, es decir, que definan el cuerpo

de cada método abstracto.

Page 11: Fundamentos de Programación Unidad 4

Herencia:

Indica que una subclase hereda los métodos y atributos de una Súper Clase, por ende la

Subclase además de poseer sus propios métodos y atributos, poseerá las características

y atributos visibles de la Súper Clase (public y protected), ejemplo:

En la figura se especifica que Auto y Camión heredan de Vehículo, es decir, Auto posee

los atributos de Vehículo (dueño, puertas, ruedas) además posee algo particular que es

Descapotable, en cambio Camioneta también hereda los atributos de Vehículo (dueño,

puertas, rudas) pero posee como particularidad propia tara y carga.

Asociación:

La relación entre clases conocida como Asociación, permite asociar objetos que

colaboran entre sí. Cabe destacar que no es una relación fuerte, es decir, el tiempo de

vida de un objeto no depende del otro.

Ejemplo:

Page 12: Fundamentos de Programación Unidad 4

Un cliente puede tener asociadas muchas Órdenes de Compra, en cambio una orden de

compra solo puede tener asociado un cliente.

Dependencia o Instanciación (uso):

Representa un tipo de relación muy particular, en la que una clase es instanciada (su

instanciación es dependiente de otro objeto/clase). Se denota por una flecha punteada.

El uso más particular de este tipo de relación es para denotar la dependencia que tiene

una clase de otra, como por ejemplo una aplicación grafica que instancia una ventana (la

creación del Objeto Ventana esta condicionado a la instanciación proveniente desde el

objeto Aplicación):

Cabe destacar que el objeto creado (en este caso la Ventana gráfica) no se almacena

dentro del objeto que lo crea (en este caso la Aplicación).

Ejercicios:

1. Se tiene una tienda “La Económica” que vende 4 productos, cada uno de los cuales

maneja la siguiente información. (1) Nombre del producto (2) Tipo (puede ser

producto de papelería, supermercado o farmacia) (3) Cantidad actual (numero de

unidades disponibles en la tienda) (4) Stock mínimo (numero de productos que

como mínimo deben de existir en la tienda) (5) Precio base de venta. Para calcular

el precio final de cada producto se le tiene que sumar los impuestos que marca la

ley: los de papelería tienen un 16% de IVA, los de supermercado un 4% y los de

farmacia un 0%. Las operaciones que debe de manejar son 1) Venta de un producto

a un cliente, 2) realizar un pedido cuando el stock esta por debajo del mínimo, 3)

Mostrar algunas estadísticas. (a) Producto mas vendido (b) Producto menos vendido

(c) Total de dinero de las ventas y (d) Promedio de ventas de la tienda (Valor total

de las ventas entre el numero total de unidades vendidas)

Determine:

A. Diagrama de clases (Nombre, Atributos y Comportamiento)

B. Asociación

C. Dependencia o instanciación

D. Diagrama de Objetos, bajo los siguientes supuesto:

Suponga que la tienda tiene los siguientes productos:

a. Libreta de apuntes, papelería, $5.50

b. Litro de leche, supermercado, $12.00

c. Jabón en polvo, supermercado, 10.50

Page 13: Fundamentos de Programación Unidad 4

d. Aspirina, farmacia, $15.00

E. Los requerimientos funcionales

Además suponga que ya ha vendido 6 libretas, 25 litros de leche, 14 bolsas de

jabón, 7 cajas de aspirinas y en la caja de la tienda no hay dinero.

Por ultimo tenemos la siguiente tabla:

Producto Cantidad en existencia Stock mínimo

Libreta de apuntes 44 15

Leche 15 20

Jabón 36 8

Aspirina 13 11

2. Las universidades de la Laguna contienen un Nombre de Universidad y un Campus.

Por cada universidad tiene Trabajadores los cuales pueden ser Catedráticos o

Administrativos. Los catedráticos tienen una categoría y como actividades tiene

investigación y enseñanza. Los Administrativos contienen un departamento y como

actividades la Administración. También existe los estudiantes, que pueden ser de

Maestría o Doctorado. Los estudiantes de Maestría tiene las propiedades de titulado

y las características de colaborador, mientras que los estudiantes de Doctorado

tiene Programa al que pertenecen y como característica realiza tesis.

Determine:

A. Los requerimientos funcionales

B. Diagrama de clases (Nombre, Atributos y Comportamiento)

C. Asociación

D. Dependencia o instanciación

E. Diagrama de Objetos

Universidad de la Laguna

Universidad de Durango

Universidad de Lerdo

Producto de Aprendizaje 4.1: Elabore lo que se le solicita:

1. Del siguiente diseño describa los siguientes puntos:

a) Clases concretas

b) Clases abstractas

c) Herencia

d) Asociación

e) Dependencia o instanciación

Page 14: Fundamentos de Programación Unidad 4

2. La empresa de de publicidad Megáfono SA de CV tiene varios proyectos que

maneja varia información entre la que se encuentra descripción del proyecto, fecha

de inicio, fecha de fin y presupuesto, cada proyecto se asocia con varios procesos.

La información que maneja los procesos es: Descripción del proceso, costo y

objetivo. Cada proceso tiene asociada varias personas. Cada persona maneja la

información de nombre de la persona, RFC y correo electrónico. Cada persona se

asocia con varios roles. Cada rol maneja la información de descripción, evaluación y

grado de responsabilidad. De cada personal herede JefeProyecto, Analista y

Desarrollador. Cada clase tiene como comportamiento los constructores y los

destructores.

Determine:

A. Diagrama de clases (Nombre, Atributos y Comportamiento)

B. Asociación

C. Dependencia o instanciación

D. Los requerimientos funcionales

3. Investigar y entregar el siguiente punto:

Consorcio

NombreDomicilio

Teléfono

CreaProductoA()CreaProductoB()

Fabrica 1

ProductoA()ProductoB()

ProductoA

ProductoA2 ProductoA1

Cliente

Fabrica 2

ProductoA()ProductoB()

ProductoB

ProductoB2 ProductoB1

1

*

1

*

*

Page 15: Fundamentos de Programación Unidad 4

Producto de Aprendizaje 4.2: Investigue el siguiente tema

IV.4. Relación entre la programación orientada a objetos y la estructurada