Clase 7

Anuncio
Dpto. de Computación y T.I.
Taller de Ingeniería de
Software
Clase 7
Agenda
1. Traducción Clases a Implementación
2. Asignación próxima semana
3. Exposición por equipos
Definir clases con métodos y
atributos simples
public class SalesLineItem
{
private int quantity;
private ProductDescription description;
public SalesLineItem(ProductDescription desc, int qty) { ... }
public Money getSubtotal() { ... }
}
ProductDescription
SalesLineItem
quantity : Integer
description description : Text
price : Money
1 itemID : ItemID
getSubtotal() : Money
...
Atributos Referencia
Creación de Métodos
Los diagramas de comunicación muestran
los mensajes que son enviados en
respuesta a la invocación de un método
La secuencia de estos mensajes se
corresponde con una serie de sentencias
en la definición de un método
Diagrama de Comunicación
enterItem(id, qty)
:Register
2: makeLineItem(desc, qty)
1: desc = getProductDesc(id)
:Sale
2.1: create(desc, qty)
:Product
Catalog
sl: SalesLineItem
1.1: desc = get(id)
2.2: add(sl)
: Map<ProductDescription>
lineItems :
List<SalesLineItem>
Métodos
public class Register
{
private ProductCatalog catalog;
private Sale currentSale;
ProductCatalog
public Register(ProductCatalog pc) {...}
public void endSale() {...}
public void enterItem(ItemID id, int qty) {...}
public void makeNewSale() {...}
public void makePayment(Money cashTendered) {...}
}
catalog
1
...
getProductDesc(...)
Sale
Register
...
endSale()
enterItem(id: ItemID, qty : Integer)
makeNewSale()
makePayment(cashTendered : Money)
currentSale
1
isComplete : Boolean
time : DateTime
becomeComplete()
makeLineItem(...)
makePayment(...)
getTotal()
Métodos
{
ProductDescription desc = catalog.ProductDescription(id);
currentSale.makeLineItem(desc, qty);
}
enterItem(id, qty)
2: makeLineItem(desc, qty)
:Register
1: desc := getProductDescription(id)
:Product
Catalog
:Sale
Métodos
{
lineItems.add( new SalesLineItem(desc, qty) );
}
enterItem(id, qty)
2: makeLineItem(desc, qty)
:Register
:Sale
2.2: add(sl)
lineItems :
List<SalesLineItem>
2.1: create(desc, qty)
sl: SalesLineItem
Clases Colectoras
public class Sale
{
...
Sale
isComplete : Boolean
time : DateTime
SalesLineItem
lineItems
private List lineItems = new ArrayList();
}
becomeComplete()
makeLineItem()
makePayment()
getTtotal()
A collection class is necessary to
maintain attribute visibility to all the
SalesLineItems.
1..*
quantity : Integer
getSubtotal()
Orden de Implementación
Store
7
address : Address
name : Text
1
ProductCatalog
addSale(...)
1
2
ProductDescription
3
...
1..*
getProductDesc(...)
description : Text
price : Money
itemID : ItemID
...
1
1
Register
Sale
6
isComplete : Boolean
time : DateTime
...
endSale()
enterItem(...)
makeNewSale()
makePayment(...)
5
1
4
SalesLineItem
becomeComplete()
makeLineItem(...)
makePayment(...)
getTotal()
...
1..*
quantity : Integer
getSubtotal()
*
Payment
1
amount : Money
...
1
Entrega Semana 8
Exposición
Exposición:: Diagramas de Secuencia y
Comunicación
Exposición: Traducción de Clases a
Implementación
Recursos
Bernd Bruegge
Bruegge,, and Allen H. Dutoit
Dutoit.. ObjectObjectOriented Software Engineering
Engineering:: Using UML,
Patterns and Java. Prentice Hall. 3rd Edition
Edition,,
2009
Craig Larman
Larman:: Applying UML and Patterns: An
Introduction to ObjectObject-Oriented Analysis and
Design and Iterative Development. 2005.
http://www.craiglarman.com/book_applying/applying.htm
Descargar