ch4: software architecture and design. 1 how to choose objects and classes the first and most often...

21
Ch4: Software Architecture and Design

Post on 22-Dec-2015

219 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

Ch4: Software Architecture and Design

Page 2: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

2

How to choose objects and classes

The first and most often raised concern for newcomers to OO concepts

Typical answers:

Better answer:

Page 3: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

3

How to choose objects and classes (contd..)

Employee class Private data:

Public interface:

Based on an information perspective, focusing on the idea that to track Employees a set of standard data and operations are needed.

Page 4: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

4

How to choose objects and classes (contd..)

ATM_log class: Private data:

Public interface:

Embodies the functions that take place to authenticate an individual to an ATM session.

Even with a functional view, information is needed to capture user input for verifying status.

Page 5: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

5

How to choose objects and classes (contd..)

ATM_User:

Private data:

Public interface:

User interface by capturing the different interactions between the ATM and the user.

Page 6: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

6

How to choose objects and classes (contd..)

An appointments system that will allow telephone callers to book an appointment with a doctor. The caller will specify the day and the time when he wishes to be seen by a doctor.

Tentative classes could be:

Page 7: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

7

How to choose classes and objects (contd..)

Redundancy:

Discard nouns outside the system domain

Vagueness:

Attributes:

Page 8: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

8

How to choose classes and objects (contd..)

Operations:

Page 9: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

9

How to choose objects and classes (contd..)

Attributes are properties of individual objects Can be

Nouns followed by “of the” (E.g. day “of the” appointment) Adjectives - color, number, state (on/off)

May not be fully described Guidelines for identifying attributes:

Attributes that are directly relevant to the problem. Something can be an attribute in one context and an object in another e.g city.

Give them meaningful names. Avoid attributes that are purely involved in implementation e.g an

id number that is generated by the machine and has meaning only within the application.

Avoid attributes that can be derived from existing information e.g. age can be derived from date of birth

Different and unrelated attributes in a class may suggest that the class is a composite of a number of classes. Useful to divide such a class into a number of separate classes.

Page 10: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

10

How to choose objects and classes (contd..)

Identifying operations:

Attributes:

Events in the scenarios: A scenario consists of interactions (events exchanged) that

have to take place among the objects to achieve the functionality.

Identify common and rare scenarios. Events passed to and from the objects implies operation on

the object or message from it.

Page 11: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

11

How to choose objects and data (contd..)

Real world can also suggest the operations needed to support a class :

Operations should not overlap each other:

Number of operations that have access to the data should be reduced to a minimum.

Operations may refer to verbs in the problem description

Page 12: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

12

High-Tech Supermarket System (HTSS)

Automate the functions and actions: Cashiers and inventory updates User friendly grocery item locator Fast-track deli orderer Inventory control

User system interfaces Cash register/UPC scanner GUI for inventory control Shopper interfaces locator and orderer Deli interface for deli workers

Page 13: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

13

HTSS (contd..)

ICICICIC

CRCRCRCR

CRCR

CRCR

ILILILIL

ILILSDOSDO

SDO EDOEDO

EDOEDO

OrderOrder

PaymentPayment

ItemItemItemDBItemDBLocalLocalServerServer

Non-LocalClient Int.

InventoryInventoryControlControl

ItemDBItemDBGlobalGlobalServerServer

OrderDBOrderDB

SupplierDBSupplierDB

CreditCardDBCreditCardDB

ATM-BanKDBATM-BanKDB

IL: Item LocatorIL: Item LocatorCR: Cash RegisterCR: Cash RegisterIC: Invent. ControlDO: Deli Orderer forDO: Deli Orderer for Shopper/EmployeeShopper/Employee

Page 14: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

14

Classes in the HTSS

Nouns:

Noun extraction:

Do we need classes for customers/shoppers? Nouns such as aisle, shelf, UPC, etc. do not have any

independent existence, in fact, they represent attributes of item.

Page 15: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

15

Classes in HTSS

A class based on knowledge of the problem domain: Receipt

There are other kinds of classes, mostly in the solution domain (do not represent any physical entity or a concept in the problem domain), that noun extraction does not reveal. Classes to represent GUIs. Collection classes such as linked lists, queues, stacks

Attributes based on domain knowledge: Retail cost, whole sale cost, etc.

Page 16: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

16

Item class in HTSS

Item class Attributes:

Operations:

Page 17: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

17

Categories of classes

Data Managers:

class Item { private: // Private Data int UPC; char* Name; int InStock, OnShelf, ROLimit; float RetailCost; public: // Public Methods Item(int code, char* str, int st1, int st2, int st3, float cost); void CreateNewItem(); int GetUPC(); char* GetName(); int GetQuantity(); int CheckReorderStatus(); void PrintItem(); void UpdatePrice(float new_value); };

Page 18: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

18

Categories of classes (contd..)

class ItemDB {private: int Num_Items; int Curr_Item; Item* AllItems[Max_Items];

int FindFirstItem(); int FindNextItem(); int FindItemUPC(int code); int FindItemName(char* name); public: ItemDB(); // Constructor void InsertNewItem(Item* new_one); void DeleteExistingItem(int code); void FindDisplayItemUPC(int code); void FindDisplayItemName(char* name); void PrintAllItems(); };

Data sinks/data sources:

Page 19: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

19

Categories of classes (contd..)

I1“milk”

I2“peas”

I3“soda”

ItemDB

•Data Manager class

•Data Source/Sink class

•Data Source/Sink class is added for implementation.

Page 20: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

20

Categories of classes (contd..)

View/Observer: Provide an interface for user -

class InvControlGUI { private: int Curr_Option; // Current menu option public: InvControl(); // Constructor void PrintMenuSetOption(); void ActivateController(); void EnterNewItem(); void RemoveExistingItem(); void FindItem(); void InvSearchQuantity(); void InvSearchReorder(); void GenerateAnOrder();};

Page 21: Ch4: Software Architecture and Design. 1 How to choose objects and classes  The first and most often raised concern for newcomers to OO concepts  Typical

21

Categories of classes (contd..)

Facilitator/Helper – Used to support complex tasks

For HTSS, Facilitator/Helpers are as follows: