Está en la página 1de 78

Programación II

1: MODELADO ORIENTADO A OBJETOS: CLASES

Diagrama de Clases

El diagrama de Clases (diagrama de estructura estática)


describe gráficamente las especificaciones de las clases de
software y de las interfaces en una aplicación. Normalmente
contiene la siguiente información:

Clases, asociaciones, atributos.


Interfaces, con sus operaciones y constantes.
Métodos.
Información sobre los tipos de los atributos.
Navegabilidad.
Dependencias.
1: MODELADO ORIENTADO A OBJETOS: CLASES Indice de contenido

Diagrama de Clases
Elementos del diagrama: Tip: La diferencia entre
clase y objeto es que la
• Clase: Es una descripción de un conjunto de objetos que comparten
clase es el tipo de datos,
los mismos atributos, operaciones, relaciones y semántica. Una clase mientras que el objeto es la
implementa una o más interfaces. Gráficamente se representa como variable real, la instancia de
un rectángulo que incluye su nombre, sus atributos y sus la clase.
operaciones.

• Atributo: Es una característica de un objeto, que ayuda a definir la


estructura de la clase que representa al objeto y que lo hace
diferenciar de otros objetos.Una clase puede tener cualquier número
de atributos. En cualquier momento, un objeto de una clase tiene
valores específicos para cada uno de los atributos de su clase.

• Método: Es el comportamiento que un objeto presenta cuando le es


enviada una señal o un mensaje, al cual debe reaccionar. Es
necesario tener en cuenta cuáles son las responsabilidades que los
objetos de dicha clase deben tener, o sea qué funciones deben
realizar.
1: MODELADO ORIENTADO A OBJETOS: RELACIONES Indice de contenido

Relaciones del Diagrama de Clases


Relaciones entre clases:
Son la manera de representar las interacciones entre las clases. En si son las conexiones
entre las clases, similares a aquellas que se encuentran en los diagramas de interacción.

Es parte de Sharing:
Estructura:
Contención: New()

Comunicación: Asociación
Depende
Dependencia:

Generalización: Es un tipo

Realización: Realiza
1: MODELADO ORIENTADO A OBJETOS: REPRESENTACIÓN DE UNA CLASE

Ejemplo
Se desea crear una aplicación que almacene la información básica
(cédula, nombre, edad) de las personas que están relacionadas con una empresa.

{ cédula = 14893341; nombre = “Juan Pablo”; edad = 40 }

{ cédula = 7346349; nombre = “Camilo”; edad = 47 }

{ cédula = 94893341; nombre = “Ana Sofia”; edad = 35 }

Personas de la empresa

5
1: MODELADO ORIENTADO A OBJETOS: REPRESENTACIÓN DE UNA CLASE

Ejemplo
Se desea crear una aplicación que almacene la información básica
(cédula, nombre, edad) de las personas que están relacionadas con una empresa.

Representación 1: En la Representación 2:

Se presentan ejemplos concretos de Personas (instancias) Representa el tipo general de cualquier de las
o también llamados objetos. instancias de la primera representación, sin valores
específicos.
Cada instancia tiene sus propios valores para la
información básica (Estado) Esta representación es más abstracta y sin detalles

Nombre de la Clase
Instancia (UML - Unified Modeling
Estado (UML) Language)

6
1: MODELADO ORIENTADO A OBJETOS: REPRESENTACIÓN DE UNA CLASE

Ejemplo
Se desea crear una aplicación que almacene la información básica
(cédula, nombre, edad) de las personas que están relacionadas con una empresa.

Representación 3:
Similar en el nivel de detalle de abstracción de la segunda representación, pero con mayor detalles de la información
(estado) que cada instancia y su comportamiento (métodos)

Nombre
de la Clase

Atributos

Métodos
gets

Métodos
Métodos
sets 7
1: MODELADO ORIENTADO A OBJETOS: REPRESENTACIÓN DE UNA CLASE

Ejemplo
Se desea crear una aplicación que almacene la información básica
(cédula, nombre, edad) de las personas que están relacionadas con una empresa.

8
1: MODELADO ORIENTADO A OBJETOS: REPRESENTACIÓN DE UNA CLASE

Representaciones
:Persona
No se trata de
cédula = 14893341 Objeto
seleccionar siempre
nombre = “Juan Pablo”
edad = 40
la “mejor
representación” o la
con más detalle.
Persona Clase

Lo importante es:
Persona seleccionar la
- cedula: int representación que
- nombre: String
- edad : int mejor expresarse el
concepto que se
+ getCedula (): int
+ getnombre (): String desea transmitir en
+ getEdad (): int
cierto momento del
+ setCedula ( cedula: int )
+ setNombre ( nombre: String ) Código Fuente
proyecto.
+ setEdad ( edad : int )
9
2. HERENCIA

• Todas las clases son descendientes de la clase Object


• La cláusula extends especifica el ancestro inmediato de la clase
• Una subclase o clase derivada hereda todos los campos y métodos de
la superclase o clase base
• Java soporta herencia simple (sólo una clase base)

ancestro
superclase
clase base

"hereda de"
"extiende"
"is a" descendientes
subclases
clases derivadas

10
2. HERENCIA

Ejemplo (variante 1)

Se desea poder diferenciar entre las Personas, quienes son


Empleados y quienes son Clientes de la empresa.

¿Qué hacer?

11
2. HERENCIA

Posibilidad 1
Ejemplo (variante 1)

Se desea poder diferenciar entre las Personas, quienes son


Empleados y quienes son Clientes de la empresa.

Persona
- cedula : int Posibilidad 1:
- nombre : String
- edad : int Agregar un atributo boolean que indique
- esCliente : boolean

+ getCedula (): int


si la persona es, por ejemplo, un cliente,
+ getNombre (): String
+ getEdad (): int de no serlo, entonces es un empleado.
+ esCliente (): boolean

+ setCedula ( cedula : int )


+ setNombre ( nombre : String )
+ setEdad ( edad : int )
+ setEsCliente( esCliente : boolean)
12
2. HERENCIA

Posibilidad 1
Ejemplo (variante 1)

Se desea poder diferenciar entre las Personas, quienes son


Empleados y quienes son Clientes de la empresa.

La Posibilidad 1:

Es válida sólo si se tienen dos posibilidades excluyentes (Una persona es Cliente o Empleado) y una de las dos es
obligatoria. Además requiere que ambos tengan la misma información (si no se desea subutilizar campos).
2. HERENCIA

Posibilidad 2
Ejemplo (variante 1)

Se desea poder diferenciar entre las Personas, quienes son


Empleados y quienes son Clientes de la empresa.
<<enumeration>>
Persona
TipoPersona
- cedula : int
- nombre : String Observe que no se limita sólo a dos
- edad : int CLIENTE posibilidades
- tipo : TipoPersona EMPLEADO (en Java se usan mayúsculas)
...
+ getCedula (): int
+ getNombre (): String
+ getEdad (): int
Posibilidad 2:
+ getTipo (): TipoPersona
Agregar un atributo TipoPersona que
+ setCedula ( cedula : int )
+
+
setNombre
setEdad
(
(
nombre
edad
: String
: int
)
)
indique que tipo de persona es: Cliente,
+ setTipo ( tipo : TipoPersona ) 14
Empleado, o ...
2. HERENCIA

Posibilidad 2

Ejemplo (variante 1)

Se desea poder diferenciar entre las Personas, quienes son


Empleados y quienes son Clientes de la empresa.

La Posibilidad 2:

Es válida sólo si se tienen más de dos posibilidades (en la enumeración pueden haber cuantas alternativas se desee).
Pero también requiere que ambos tengan la misma información (si no se desea subutilizar campos).
2. HERENCIA

Ejemplo (variante 2)

Pero resulta que el gerente de la empresa desea que se almacene


el sueldo de cada empleado y el email de cada cliente.

¿Qué hacer en este caso?

16
2. HERENCIA

“La herencia es una forma de reutilización de software


en la que se crea una nueva clase
al absorber los miembros de una existente,
y se mejoran con nuevas capacidades,
o con modificaciones en las capacidades ya existentes”.
Deitel

17
2. HERENCIA

Ejemplo (variante 2)

Pero resulta que el gerente de Persona


la empresa desea que se
almacene el sueldo de cada
empleado y el email de cada
Cliente Empleado
cliente.
La herencia se entiende como una relación de
Especialización / Generalización y
se lee “Es un” o “Es una”

¿Dónde está el sueldo y el email?

Observación:
En Java, una clase (subclase) sólo puede heredar de un sola superclase.
18
2. HERENCIA

Ejemplo (variante 2)
Persona
- cedula: int
- nombre: String
- edad : int
Pero resulta que el gerente de
la empresa desea que se + getCedula (): int
+ getNombre (): String
almacene el sueldo de cada + getEdad (): int

empleado y el email de cada + setCedula ( cedula: int )


+ setNombre ( nombre: String )
cliente. + setEdad ( edad : int )

o es un tipo de persona
Cliente es un tipo de p

Empleado Cliente
¿Puede existir una
- sueldo: long Persona (instancia) - eMail: String

+ getSueldo (): long


que no sea Empleado
+ geteMail (): String
+ setSueldo ( sueldo: long ) o Cliente? + seteMail ( eMail: String )
19
2. HERENCIA

Ejemplo (variante 2)

Pero resulta que el gerente de


la empresa desea que se
almacene el sueldo de cada
empleado y el email de cada
cliente.

¿Cómo impedir en java


que una clase pueda
20
tener subclases?
3. RELACIÓN DE AGREGACIÓN

Relación de Agregación o Sharing entre clases


La Agregación representa una relación
todo / parte y se lee
“es parte de” o “está compuesto por”

Para el primer ejemplo se dice que:

El Libro es parte de la Biblioteca


La Revista es parte de la Biblioteca


O también se puede decir que:

La Biblioteca está compuesta por Libros y


Revistas

¿Cómo se entiende
este nuevo ejemplo?

21
3. RELACIÓN DE AGREGACIÓN

En muchos casos es necesario indicar:


El número de PARTES que componen el TODO

(cardinalidad)
1..* “1 o muchos”, también se representa como 1..n
0..* “0 o muchos”, también se representa como 0..n

● Sí la navegación es en un sentido
ó es bidireccional.
En otras palabras, es posible desde la parte conocer el todo, o sólo el todo
conoce las partes.

A B

22
3. RELACIÓN DE AGREGACIÓN: COMPOSICIÓN Y AGREGACIÓN

Relación de Composición o Contención entre


clases
La Composición es otra relación
todo / parte y se lee
“es parte de” o “está compuesto por”

La principal diferencia con la agregación está


elacionada con la existencia o no de la parte sin el todo.

En este diseño, una CuentaAhorro no puede existir


sin la existencia del Banco (Composición - Rombo
Negro), mientras que la existencia de una Persona no
depende de la del banco (Agregación - Rombo Blanco). Juan hace parte
de
Otra diferencia es que las partes por Composición no
pueden ser compartidas con otros objetos, mientras que
as de Asociación sí pueden ser compartidas.

Pedro hace parte


de

23
3. RELACIÓN DE AGREGACIÓN: COMPOSICIÓN Y AGREGACIÓN

Propia Propia

Propia B Prestada Propia


C Propia

Pared 1 Propia
Salon
Pared 1 Prestada
Atributos 1 salon
Prestada
A Propia D Propia
Propia

metodos Propia Propia

* listaSalones * listaParedesPropias

Pared

Atributos

* listaParedesPrestadas

metodos
3. RELACIÓN DE AGREGACIÓN: COMPOSICIÓN Y AGREGACIÓN

Propia Propia

Salon@1 Salon@2 Propia B Prestada Propia C P

nombre: SalonA nombre: SalonB Propia Propia

Prestada Prestad

dictarClases dictarClases
Prestada A Propia D
Propia

Propia Propia

Pared@5 Pared@6 Pared@6

color: blanca color: blanca color: blanca


groso: 20 cm groso: 20 cm groso: 20 cm
numero: 1 numero: 2 numero: 4

dictarClases dictarClases dictarClases

25
4. RELACIÓN DE ASOCIACIÓN

Relación de Asociación entre clases


La Asociación es otra relación entre clases
que permite tener objetos que colaboran
sin ser una relación todo/parte

La existencia de los objetos no está interrelacionada.


Puede ser una relación


○ Unidireccional
○ Bidireccional

En el ejemplo, un Camion esta asociado a un Conductor


y un Conductor puede o no tener asociado a un Camion

26
4. RELACIÓN DE DEPENDENCIA

Relación de Dependencia (instanciación)


entre clases
La Dependencia es otra relación entre clases
que permite tener objetos que
necesita de otro (uso) para realizar una operación.

Triangulo
Es una relación unidireccional, y

La referencia al objeto que se requiere (ej: Math) no hace parte del


estado del objeto principal (ej: Triangulo)

En el ejemplo, un Triangulo requiere de Math para poder calcular,


Math
por ejemplo, la hipotenusa (Math.sqrt). Ninguno de los atributos de
Triangulo almacena la referencia a un objeto tipo Math.

27
Indice de contenido

2: HERENCIA DE LA CLASE OBJECT

28
2: HERENCIA DE LA CLASE OBJECT Indice de contenido

Clase Object en Java


En Java todas las clases (directa o indirectamente -jerarquía de clases-)
heredan de la clase Object.

Esta característica permite hacer, por ejemplo, una lista (o arreglo) de objetos sin
importar el tipo particular de cada uno.

Ejemplo:

Una lista de Personas, y en ella pueden haber Empleados y Clientes.

29
2: HERENCIA DE LA CLASE OBJECT Indice de contenido

Clase Object en Java


Algunos de los comportamientos (métodos) que son soportados por los objetos en Java son:

Método Utilidad

Crea una copia “superficial” del objeto.

Sí se crea la copia del objeto, pero los atributos tipo referencia seguirán referenciando a
clone los mismos objetos que el objeto original.

Una copia “profunda” se puede hacer usando por la Serialización de objetos.

equals Compara la igualdad de dos objetos


(la forma de comparar los objetos puede ser personalizada por el programador)

getClass Permite determinar la clase a la que pertenece un objeto

toString Permite convertir el estado de un objeto en una cadena de caracteres


(la forma de la cadena puede ser personalizada por el programador)
Indice de contenido

3: HERENCIA ENTRE CLASES

31
3: HERENCIA ENTRE CLASES: POLIMORFISMO

Polimorfismo
Es la capacidad que tienen objetos de diferentes tipos (clases) a reaccionar a un conjunto
común de operaciones (mensajes), por ejemplo, todo tipo de vehículo debe poder encenderse,
así cada tipo de vehículo lo haga de forma diferente.

Para lograr el polimorfismo, es necesario el uso de la herencia, ya que las operaciones


comunes deben ser especificadas en la superclase, y cada subclase debe definir o redefinir
estas operaciones según sea el caso.

Vehiculo

Carro Avion
+ encender()

+ encender() + encender()
32
3: HERENCIA ENTRE CLASES: POLIMORFISMO

Polimorfismo

SALID
A 33
3: HERENCIA ENTRE CLASES: POLIMORFISMO

Polimorfismo y Sobrecarga
La sobrecarga y el polimorfismo son conceptos diferentes, Identificador
en la sobrecarga un objeto responde de diversas formas a
un mismo mensaje, dependiendo de los parámetros del
mensaje. + identifique( a: int ): String
+ identifique( b: float ): String
En la sobrecarga no es necesario usar la herencia. + identifique( c: String ): String

SALIDA

34
3: HERENCIA ENTRE CLASES: ABSTRACTA

Clase Abstracta
Retomando el ejemplo de polimorfismo, podemos recordar que instanciamos cinco objetos, 3
Carros, 1 Avión y 1 objeto tipo Vehiculo.

Observe como es instanciado un


objeto tipo Vehiculo y referenciado
en la posición 4 del arreglo.

¿Pero tiene sentido instanciar un


objeto tipo Vehiculo?
Vehiculo

Carro Avion
Recordemos la salida + encener()
En UML
los método o clases
abstractas se escriben en letra
¿Cuál tipo + encener()
itálica
+ encener()
35
vehículo?
3: HERENCIA ENTRE CLASES: ABSTRACTA

Clase Abstracta
Para resolver este problema (impedir que sea instanciado un objeto de una clase) porque no tiene
sentido para el modelo, debemos entonces definir la clase con el modificador abstract.

Sin embargo, aunque la clase sea


abstract, es posible usarla para,
por ejemplo, crear un arreglo.

Por otro lado, si lo que no tiene


sentido, es la implementación de una
cierta operación (método) en una
clase, el método debe ser abstract
y la clase en donde se encuentra
obligatoriamente será abstract. 36
3: HERENCIA ENTRE CLASES: ABSTRACTA

Clase Abstracta
Es posible tener clases abstractas sin métodos abstractos, pero, si existe por lo menos un
método abstracto, la clase tiene que ser abstracta.

Un ejemplo del primer caso es:


Persona

Cliente Empleado

Aquí, una persona es: o un Cliente, o un Empleado, pero no puede ser sólo una Persona
(porque no se puede instanciar la clase Persona por ser abstracta).

Si la clase Persona no fuera abstract, entonce, pueden haber: Personas, Clientes y


Empleados.

¿De qué depende entonces el dejar o no abstract la superclase?


37
3: HERENCIA ENTRE CLASES: ABSTRACTA

Clase Abstracta
Persona

Persona

- nombre : String

+ geNombre() : String
+ setNombre( nombre String )
+ toString( ) : String

La clase no tiene métodos abstractos y es abstracta.


38
Indice de contenido

4: MANEJO DE INTERFACES

39
4: MANEJO DE INTERFACES

Concepto de Clase tipo interface

Un interfaz es una lista de acciones que puede llevar a


cabo un determinado objeto. Sorpresa, ¿eso no eran
los métodos que se definen en una clase? Casi, en
una clase además de aparecer los métodos aparecía
el código para dichos métodos, en cambio en un
interfaz sólo existe el prototipo de una función, no su
código.

40
4: MANEJO DE INTERFACES

Concepto de Clase tipo interface

• Una interface puede también contener datos miembro, pero estos son
siempre static y final (Constantes).
• Todos los métodos de una interface se declaran implícitamente como
abstractos y públicos.
• Para indicar que una clase implementa los métodos de una interface se
utiliza la palabra clave implements.
• Una clase puede implementar más de una interface.
• Es posible crear referencias a interfaces, pero las interfaces no pueden
ser instanciadas. Una referencia a una interface puede ser asignada a
cualquier objeto que implemente la interface.
• Las interfaces pueden extender otras interfaces y, a diferencia de las
clases, una interface puede extender más de una interface. 41
4: MANEJO DE INTERFACES

Concepto de Clase tipo interface

¿Las carcasas solas sirven


para hacer cálculos?

¿Qué sucede
cuando usamos la
calculadora con algunas de
las dos carcasas?
Carcasa No. 1 Carcasa No. 2
(Interface) (Interface)
Calculadora sólo para + y - Calculadora sólo para * y /

¿Las carcasas sirven para


cualquier tipo de Calculadora Casio SL-315TV-W
calculadora? implements
ambas interfaces
42
¿Por qué?
4: MANEJO DE INTERFACES

Clase tipo interface


En Java existe un tipo especial de clase, la clase interface.

En una clase interface, todos los métodos son abstractos y todos sus atributos (si lo hay)
son constantes.

<<Interface>>
ICliente

<<Interface>>
ICliente

+ MAX_COMPRAS_DIARIAS : int = 4

+ getMaxComprasDiarias() : int
+ getEMail() : double
Todos los métodos son abstractos,
pero no se escribe abstract.
43
4: MANEJO DE INTERFACES

Clase tipo interface - implements

Persona

<<Interface>>
Cliente
ICliente

Cliente

- email : String

+ getMaxComprasDiarias() : int
+ getEMail() : String
+ setEmail( email String )

+ toString( ) : String

La clase que implementa la interface,


está obligada a declarar o implementar los métodos
de la interface. 44
4: MANEJO DE INTERFACES

Clase tipo interface


En Java existe un tipo especial de clase, la clase interface.

En una clase interface, todos los métodos son abstractos y todos sus atributos (si lo hay)
son constantes.

<<Interface>>
IEmpleado

<<Interface>>
IEmpleado

+ getSalario() : double
Esta interfaz no tiene atributos.
(no es obligatorio)

45
4: MANEJO DE INTERFACES Indice de contenido

Clase tipo interface - implements


Persona

<<Interface>>
Empleado
IEmpleado

Empleado

- salario : double

+ getSalario() : double
+ setSalario( salario: double )

+ toString( ) : String

Por implementar la interface, está obligado a


declarar abstract los métodos de la interface,
o declararlos e implementarlos. 46
4: MANEJO DE INTERFACES Indice de contenido

Uso de las Cliente y Empleado

47
4: MANEJO DE INTERFACES Indice de contenido

Interface & “Herencia Múltiple”


En Java:

●Una Clase no puede heredar de dos superclases al mismo tiempo (Herencia Múltiples),
como sí sucede en otros lenguajes como C++.

●Una clase puede implementar todas las interfaces que requiera,


simulando un poco la herencia múltiple.

Persona

<<Interface>> <<Interface>>
ICliente Cliente Empleado IEmpleado

ClienteEmple 48
¿Qué es un
ado
ClienteEmpleado?
4: MANEJO DE INTERFACES Indice de contenido

Interface & “Herencia Múltiple”

¿Qué significa y qué


implicación tiene? 49
4: MANEJO DE INTERFACES Indice de contenido

Interface & “Herencia Múltiple”

¿Cuáles operaciones (métodos)


se pueden acceder
usando la variable cliente y empleado?

¿Qué muestra en pantalla? ¿Está Seguro?


50
ICliente cliente = new Cliente();
A A a = new B();
A a = new C();
A a = new D();

C c = new B();
C c = new D();
B b = new A();

B C

D E
Indice de contenido

Centro de Impresión

52
Indice de contenido

Centro de Impresión

53
Indice de contenido

Laboratorio
Indice de contenido

Modelar con UML (sólo la herencia) e


Implementar en Java
cada uno de los siguientes Ejercicios.
(sin lectura de datos, sólo datos de prueba)

Ejercicios para el Laboratorio


• El programa de Ingeniería de Sistemas y Computación de la Universidad del Quindío
desea crear una aplicación para almacenar y consultar la información de un solo
estudiante. Del estudiante se conoce: la cédula, y el nombre. Si el estudiante es de
pregrado se requiere el puntaje de ingreso, y si es un estudiante de posgrado, se requiere
la fecha de graduación.

• La dependencia de Gestión Humana de la Universidad del Quindío requiere tener


una aplicación que calcule el sueldo de un docente (de planto o de contrato). Si el
docente es de planta, se requiere la cantidad de puntos (cada punto cuesta $12120),
mientras que si es un docente de contrato, se requiere su categoría (Auxiliar 55
$2’418.460, Asistente $2’671.350, Asociado $2’989.580 y Titular $3’434.420).
Indice de contenido

Modelar con UML (sólo la herencia) e


Implementar en Java
cada uno de los siguientes Ejercicios.
(sin lectura de datos, sólo datos de prueba)

Ejercicios para el Laboratorio


• La Hemeroteca de la Universidad del Quindío, requiere una aplicación para
almacenar la información de una de sus revistas. De la revista se conoce el nombre,
fecha de publicación y el número ISSN (Ej: 1144-875X), sólo si la revista es
importada se requiere el país de origen, mientras que si la revista es nacional, se
requiere el nombre de la institución que la publicó.

• El diseñador de parques de recreación, arquitecto Juan Pablo G., desea tener una
aplicación que le permita calcular el área de una de las secciones de los parques que está
diseñando. El arquitecto siempre diseña las secciones de sus parques en forma de figura
geométrica, ya sea: un triángulo, un rectángulo, un Rombo o un Círculo. 56
Indice de contenido

Ejemplo

El arquitecto Juan Pablo G., desea tener otra aplicación que le permita conocer la
longitud de los muros de una de las secciones de sus parques (los perímetros).
Recordemos que Juan Pablo, siempre diseña las secciones de los parques en forma de
figura geométrica, ya sea: un Triángulo, un Rectángulo, o un Círculo.

57
Indice de contenido

Ejemplo: Modelo general en UML (sólo la herencia)

FiguraGeometrica

Triangulo Rectangulo Circulo

58
Indice de contenido

Ejemplo: Modelo detallado en UML (sólo la herencia)

FiguraGeometrica
- nombreFigura: String

+ FiguraGeometrica( nombre: String)


+ getNombre(): String
+ setNombre( nombre : String )
+ calcularPerimetro():double

Triangulo Rectangulo Circulo


- ladoA: double - ladoA: double - radio: double
- ladoB: double - ladoB: double
- ladoC: double
+ Circulo( radio: double )
+ Rectangulo(a:double, b:double )
+ Triangulo(a:double, b:double, c:double) + calcularPerimetro(): double
+ calcularPerimetro(): double
+ calcularPerimetro(): double + toString(): String
+ toString(): String
+ toString(): String
59
Indice de contenido

Ejemplo: Implementación en Java (sin lectura de datos, sólo


datos de prueba)

FiguraGeometrica
- nombreFigura: String

+ FiguraGeometrica( nombre: String)


+ getNombre(): String
+ setNombre( nombre : String )
+ calcularPerimetro():double

60
Indice de contenido

Ejemplo: Implementación en Java (sin lectura


de datos, sólo datos de prueba)

Triangulo
- ladoA: double
- ladoB: double
- ladoC: double

+ Triangulo(a:double, b:double, c:double)


+ calcularPerimetro(): double
+ toString(): String

61
Indice de contenido

Ejemplo: Implementación en Java (sin lectura


de datos, sólo datos de prueba)

Circulo
- radio: double

+ Circulo( radio: double )


+ calcularPerimetro(): double
+ toString(): String

62
Indice de contenido

Ejemplo: Implementación en Java (sin lectura


de datos, sólo datos de prueba)

¿Cómo calcular el perímetro total?


¿Qué hacer si son muchas
63
secciones?
Indice de contenido

Ejemplo: Implementación
2 (sin lectura de datos, sólo datos de prueba)

64
EJEMPLOS

Ejemplo (Modelar e Implementar)


La Universidad del Quindío, específicamente en
sus programas académicos, requiere de una
aplicación para almacenar la información de su
personal (estudiantes y profesores) y al mismo
tiempo, llevar un control de los cursos que
ofrece, registrando el profesor responsable y
sus estudiantes. El sistema permite almacenar
las notas de cada uno de los estudiantes.

De todo el personal se conoce (nombre y


cédula); de los estudiante se almacena su
puntaje de ingreso y de los profesores su
categoría (Auxiliar, Asistente, Asociado y
Titular).

65
EJEMPLOS

Ejemplo (Modelar e Implementar)


La Universidad del Quindío, específicamente en sus programas académicos,
requiere de una aplicación para almacenar la información de su personal (sólo
estudiantes y profesores) y al mismo tiempo, llevar un control de los cursos que
ofrece (sólo el nombre), registrando el profesor responsable y sus estudiantes. El
sistema permite almacenar la nota definitiva del curso por cada uno de los
estudiantes, sin considerar la fecha.

De todo el personal se conoce (nombre y cédula); de los estudiante se almacena su


puntaje de ingreso y de los profesores su categoría (Auxiliar, Asistente, Asociado y
Titular). ● Universidad del
Quindío ● Profesor responsable
● Programa Académico ● Estudiantes de un curso
● Aplicación ● Sistema
● Información ● Nota definitiva
● Personal (Persona) ● Nombre
● Estudiante ● Cédula
● Profesores ● Punteje de ingreso
● Curso ● Categoría (Auxiliar, Asistente, Asociado, y Titular)

66
EJEMPLOS

Ejemplo (Modelar e Implementar)

La Universidad del Quindío, específicamente en sus programas académicos,


requiere de una aplicación para almacenar la información de su personal
(sólo estudiantes y profesores) y al mismo tiempo, llevar un control de los
cursos que ofrece (sólo el nombre), registrando el profesor responsable y sus
estudiantes. El sistema permite almacenar la nota definitiva del curso por
cada uno de los estudiantes, sin considerar la fecha.

De todo el personal se conoce (nombre y cédula); de los estudiante se


almacena su puntaje de ingreso y de los profesores su categoría (Auxiliar,
Asistente, Asociado y Titular).

● Universidad del Quindío ● Profesor responsable


● Programa Académico ● Estudiantes de un curso
● Aplicación ● Sistema
● Información ● Nota definitiva
● Personal (Persona) ● Nombre
● Estudiante ● Cédula
● Profesores ● Punteje de ingreso
● Curso ● Categoría (Auxiliar, Asistente, Asociado, y Titular)

67
EJEMPLOS

Ejemplo (Modelar e Implementar)

● Programa Académico ● Curso


● Personal (Persona) ● Estudiantes de un curso
● Estudiante ● Notas de curso
● Profesor ● Categoría

Estudiantes
ProgramaAcademico TIENE Cursos
Profesores

NotasCurso RELACIONA Estudiantes con Curso

Estudiante ES UNA Persona


Docente

Profesor TIENE Categoria

68
EJEMPLOS

Ejemplo (Modelar e Implementar)

ProgramaAcademico
1 1

0..*

0..* Curso

0..*
0..* 0..* NotaCurso String 1

<<enumeration>>
Estudiante Profesor Categoria

Persona
69
EJEMPLOS

70
EJEMPLOS

71
EJEMPLOS

72
EJEMPLOS

73
EJEMPLOS

Ejemplo (Modelar e Implementar)

74
EJEMPLOS

75
EJEMPLOS

76
EJEMPLOS

77

También podría gustarte