Introduction to UML (Unified Modelling Language) Part one Classes and instances Written by: Robin Beaumont e-mail: robin@organplayers.co.uk Date last updated: Saturday, 09 July 2011 Version: 1 Introduction to UML part 1 - classes and instances How th is d ocu m en t sh o u ld b e u s ed : This document has been designed to be suitable for web based and face-to-face teaching. The text has been made to be as interactive as possible with exercises, Multiple Choice Questions (MCQs) and web based exercises. If you are using this document as part of a web-based course you are urged to use the online discussion board to discuss the issues raised in this document and share your solutions with other students. Wh o m th i s d o cu m en t i s ai m ed at: This document is aimed at three types of people: Those who wish to become involved in systems development but are not interested in the nuts and bolts of programming. Such people are commonly called domain experts and act as bridges between a professional group (e.g. medics, Solicitors etc) to which they belong and IT experts. Those just beginning professional computer science courses. Those who wish to become involved in some form of analysis activity. This might be Process re-engineering or Data flow analysis etc. I hope you enjoy working through this document. Robin Beaumont Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 2 of 27 Introduction to UML part 1 - classes and instances Contents 1 BEFORE YOU START ............................................................................................................................................ 4 2 LEARNING OUTCOMES -UML CLASSES/INSTANCES ............................................................................................ 5 3 BACKGROUND .................................................................................................................................................... 6 3.1 WHY LEARN ABOUT UML CLASS DIAGRAMS? ............................................................................................................... 6 EXERCISE 1. MCQS.............................................................................................................................................................. 7 4 INTRODUCTION................................................................................................................................................... 7 5 OBJECT ORIENTED APPROACHES AND UML ........................................................................................................ 8 6 CLASS INSTANCES ............................................................................................................................................... 9 7 CLASSES ............................................................................................................................................................ 10 7.1 DEFINED BY CONTEXT ............................................................................................................................................. 11 7.2 PRESENTATION IN UML .......................................................................................................................................... 12 EXERCISE 2. MCQS............................................................................................................................................................ 13 EXERCISE 3. CLASSES AND INSTANCES .................................................................................................................................... 15 EXERCISE 4. UML CLASSES AND INSTANCES ............................................................................................................................ 15 EXERCISE 5. MCQS............................................................................................................................................................ 16 7.3 IDENTIFYING CLASSES ............................................................................................................................................. 17 7.3.1 Analyzing a Narrative Description to identify candidate classes .............................................................. 17 EXERCISE 6. MARKING NOUNS............................................................................................................................................. 17 7.3.2 Developing candidate Classes ................................................................................................................... 19 EXERCISE 7. IDENTIFYING CLASSES FROM A NARRATIVE ............................................................................................................. 20 7.3.3 Applying naming standards to Classes ..................................................................................................... 20 EXERCISE 8. APPLYING STANDARDS TO CLASSES ....................................................................................................................... 20 7.3.4 Workshops ................................................................................................................................................ 21 7.4 DRAWING UML CLASS DIAGRAMS - CASE TOOLS.......................................................................................................... 21 7.5 CLASS DIAGRAMS AND AMOUNT OF DETAIL SHOWN .................................................................................................... 21 7.6 VIEWS ................................................................................................................................................................. 21 EXERCISE 9. MCQS............................................................................................................................................................ 22 EXERCISE 10. DIFFERENT VIEWPOINTS ................................................................................................................................... 22 7.7 WARNING ABOUT THE ‘IS A KIND OF’ MISUNDERSTANDING ............................................................................................ 22 7.8 TIGHT COUPLING ................................................................................................................................................... 23 EXERCISE 11. INAPPROPRIATE ATTRIBUTES.............................................................................................................................. 23 7.9 CLASS DIAGRAMS AND DATABASES ............................................................................................................................ 23 7.9.1 The Relationship between Classes/Instances to Databases...................................................................... 23 EXERCISE 12. LINKING CLASSES AND INSTANCES TO DATABASES.................................................................................................. 24 7.9.2 Specifying data types ................................................................................................................................ 24 7.9.3 Derived Attributes and Default values ...................................................................................................... 24 7.9.4 Enumerated types ..................................................................................................................................... 24 7.10 OPERATIONS ......................................................................................................................................................... 25 7.11 SUMMARY ............................................................................................................................................................ 25 EXERCISE 13. MCQS.......................................................................................................................................................... 26 8 REFERENCES ...................................................................................................................................................... 26 9 WEB LINKS ........................................................................................................................................................ 27 10 APPENDIX - OMT ........................................................................................................................................... 27 You can see Youtube videos of www.youtube.com/theoldorganplayer the concepts Robin Beaumont robin@organplayers.co.uk discussed 18/03/2016 Document1 in Page 3 of 27 this document at Introduction to UML part 1 - classes and instances 1 Before you start This document assumes that you have the following knowledge and skills: Skills/ knowledge: You should be able to explain and provide examples of the following database concepts: table, record, index, foreign key, relations specifically: one to one, one to many, many to many If you are unsure of what these terms mean and are unable to provide examples, read through: http://www.robin-beaumont.co.uk/virtualclassroom/chap7/s2/dbcon1.pdf - provides details of what a table, record and index are. http://office.microsoft.com/en-us/access-help/database-design-basics-HA001224247.aspx - Microsofts Database design basics page, goes further than you need but provides a good section on relations and how they work. Required Resources You need the following resources to work through this document: The “Scenarios for practicing modelling techniques” handout available from http://www.robin-beaumont.co.uk/virtualclassroom/contents.htm and follow the links A UML case tool - Many of the concepts introduced in this document are difficult to grasp at first and are helped by experimenting with a Case Tool in addition to carrying out the exercises with pen and paper. Two such tools are Visual UML and MagicDraw. You can download a community version of MagicDraw at http://www.magicdraw.com/. In addition if you are reading this document as part of a course you are undertaking with the Royal college of Surgeons (Edin) or Edinburgh University you are registered as part of the academic programme for Magicdraw which means you are entitled to use the full personal edition of MagicDraw. To be able to use the full personal edition you need to contact your course administrator who has the codes to unlock MagicDraw. You can see Youtube videos of www.youtube.com/theoldorganplayer the concepts Robin Beaumont robin@organplayers.co.uk discussed 18/03/2016 Document1 in Page 4 of 27 this document at Introduction to UML part 1 - classes and instances 2 Learning Outcomes -UML Classes/Instances This section aims to provide you with the following skills and information. After you have completed it you should come back to these points, ticking off those you feel happy with. Tick box Learning outcome Be able to describe the main characteristics of object oriented modelling Be able to provide brief details of the relationship between OMT and UML Be able to describe briefly the history of UML Be able to describe what an instance is, as used in object oriented (OO) modelling Be able to describe the three parts of a UML class Be able to describe the two parts of a class instance (often called an object) Be able to explain the difference between a UML class instance and a UML class Be able to describe misunderstanding between UML classes/instances and the 'is a type of' concept Be able to discuss the importance of context in identifying UML classes Be able to produce a list of candidate classes from a narrative description Be able to use Rumbaughs criteria to help refine an initial list candidate classes Be able to use the Reingruber & Gregory criteria to standardise class names Be aware of the use of workshops and informal class diagrams to develop UML class diagrams in a group setting Be able to identify and draw classes and instances using the UML notation Be able to explain the relationship between models, classes, attributes, instances, and schemas, tables, fields and records. Be able to explain data types, enumerated types and default values are additional characteristics of attributes Be able to describe the varying amount of detail that can be displayed in a class diagram Be able to discuss the concept of “view” as it relates to class diagrams Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 5 of 27 Introduction to UML part 1 - classes and instances 3 Background In the past 30 years the profession of systems analyst (modeller) has come into being and developed rapidly. The first modelling techniques focused on designing databases, and for an enthralling description of the development of the first computer system, along with its database for Lyons teashops in the 1950's see Georgina Ferry's excellent book, A computer called Leo. In the 1970's Peter Chen, who is very much still alive and continues to produce important research, (http://www.csc.lsu.edu/~chen/chen.html) developed a diagrammatic description of certain aspects of the data requirements for a database. The diagram was called an Entity Relationship Diagram (ERD) and is still used today, you may have come across it when using Microsoft Access. The example below shows an example from a database to collect research data from those who suffer from diabetes and are also pregnant. It represents the data at a high level of abstraction meaning that it is not necessary to show details of the various fields or indexes, just the table names (i.e. entity types) and optionally the field names. Table name= entity type Field names Relation A database structure consists of one or more Tables each or which have one of more fields. The tables are linked to together by relations. The database is populated with records (i.e the data), each record has the same structure as a particular table (not shown). For more information about ERDs see: www.robin-beaumont.co.uk/virtualclassroom/chap11/s9/erds_1.pdf While ERDs are useful they are limited and a more modern approach is to use Class diagrams, this more modern approach is what we will concentrate on in the rest of this chapter. 3.1 Why learn about UML Class Diagrams? This chapter, along with and several subsequent ones, focus on getting you to learn what class diagrams are and how to produce them. You may ask why, so here are a few reasons I believe it is important for you to do so: These diagrams form the basis of most database design methods. If you ever are involved in database design (i.e. data modelling) you will therefore need to understand them because if they are wrong (i.e. the blueprint), the database that is built from them will also be wrong! These diagrams can be transformed to the more traditional ERD to create databases. These diagrams provide a method of analysing a situation that forces you to adopt a stance of a typical database modeller. By using them you begin to realise how their minds work and also begin to appreciate why some databases are so problematic. These are only a few of the reasons that I personally believe this skill is so important. Even if you do not intend to become a programmer or systems analyst/modeller you may want to become the type of person who is able to provide a bridge between your professional group – such as doctor, vet or solicitor – and those who develop or manage information systems. Such people are vitally important in developing usable information systems and there is a great shortage of them. Such a person is often referred to as a ‘Domain Expert’ or subject matter expert (SME) Before you start to learn what class diagrams are and how to create them yourself there are some Multiple Choice Questions (MCQs) on the next page to see how much you have taken in so far. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 6 of 27 Introduction to UML part 1 - classes and instances Exercise 1. MCQs 1. From the list below choose two reasons why it is important for a ‘domain expert’/subject matter expert (SME) such as you to learn about the Class diagramming method: a. Provides insight into the mindset of database developers b. Is the only method available to describe the data requirements c. Provides credibility to IT personnel d. Forms the basis of most data modelling techniques e. Has been proved to be the most cost effective method of specifying data requirements 2. From the list below choose the one option that describes the most desirable ‘domain expert’ from the medical profession: a. Someone who has developed several databases but knows little of database modelling or current issues in medicine b. Someone who has little interest in how information may help the department c. Someone who has problems working in a collaborative environment d. Someone who has previously managed IT projects e. Someone who has knowledge of data modelling techniques and currently works in the appropriate situation 1. ERDs provide a description of (one correct answer): a. The processes that occur in the model b. The various entity types and their relationships in the model c. The entity types in the model d. The processes and data requirements of a model e. The User Interface aspects of the model 2. ERDs provide a (one correct answer): a. A detailed description of the data within a data model b. A detailed description of the proposed uses of a database c. A guide to the training costs d. A high level description of the data within a data model e. A graphical picture that is of little use in developing a database 4 Introduction The process of designing any system, whether it be computer, paper or person based or a mixture of all three, consists of specifying two important aspects, the what (data - structure) and the how (what it does - behaviour). Considering the How aspect, a system is worse than useless if it either is difficult to use (e.g. for entering or retrieving information) or hinders rather than facilitates working practices. For example, if a system is planned to be used in a medical consultation it should be easier rather than more difficult to prescribe and allow the users to collect data in the way they would find natural. While this How aspect is as important as the data side of things, we will concentrate on the 'what' side of things in this document. You may be familiar with ERDs, a graphical technique for specifying the what. However in this document we will be looking at a more advanced diagramming technique to produce diagrams explaining the What, namely UML Class diagrams. These diagrams are one aspect of ‘object oriented’ modelling techniques that have developed over the last few decades. Basically the Object oriented approach allows more complex models to be developed than previously possible. Before we consider the UML Class diagram in detail we will take a quick look at object oriented modelling techniques in general and UML. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 7 of 27 Introduction to UML part 1 - classes and instances 5 Object Oriented Approaches and UML In the early 1990s Rumbaugh as well as M Blaha et al developed a modelling process called OMT (Object Modelling Technique) which was documented in a book by them called Object-Oriented Modelling and Design, Prentice Hall 1991. This book has taken on the status of a classic and is still available although they have published what can be considered to be an update to this in 2005 – Object Oriented Modelling with UML . So what are Object Oriented Modelling techniques and how do they relate to this thing called UML? Object oriented modelling relies heavily upon the following five ideas (concepts), which allow us to model aspects of the world in a logically consistent manner. Notice this is much wider than just database modelling: Classes and Objects Association Inheritance Encapsulation Polymorphism Object Oriented Techniques OMT -> UML In this chapter we will concentrate on the first aspect, although we will have a glance at the others in passing. So how does UML relate to Object Oriented Modelling? The answer is basically historical. In 1998, Rumbaugh joined forces with Grady Booch and Ivar Jacobson, who also have their own Object Oriented Modelling languages, to create a Unified Modelling Language (UML). That year saw a burst of activity with several books being published describing UML (Fowler & Scott 1998, Blaha & Premerlani 1998), UML not only subsuming Rumbaugh's OMT but also expanding it with new diagrams. Since this time UML has gone through a number of revisions with the most recent being version 2.4 (Around May 2011). I have therefore decided not to discuss OMT and the earlier versions of UML. The specification of the latest version of UML can be found at http://www.omg.org/. UML is definitely the "in thing" and if you look in any computing/ modelling/system development section of most large bookshops you will find a row of books about UML. Three that I would recommend are: Simon Bennett, John Skelton, Ken Lunn, 2005 UML: Schaum’s outlines. ISBN 0-07-710741-1 £10.99 [A much improved second edition – no cd but what can you expect at this price] Thomas A Pender: 2002 UML Weekend crash course. ISBN 0-7645-4910-3 [Also contains a CD with a pdf version of the book and a 15 day demo version of System Architect version 8.5 Costs about £15 – 20] Class These diagrams focus on specifying the structure (WHAT) of the model Diagram Component Diagram Composite Structure Diagram Structure Diagram * Deployment Diagram Object Diagram Package Diagram Diagram Activity These diagrams focus on specifying the Behaviour (HOW) of the model Diagram Sequence Use Case Diagram Diagram Communication Behaviour Diagram State Machine Diagram Diagram Interaction Overview Interaction Diagram * Diagram Timing Diagram * You can get second hand copies of the above books for far less by looking on www.addall.com, www.Amazon.com and www.amazon.co.uk Only the Bennett books talks about uml2 in detail. UML provides a standard set of tools (most of us would call these diagrams – but the UML people get upset if you reduce them to such things!) for analysing and developing a model using an Object Oriented Approach. UML is not a method, you are free to use which tools (diagrams) you feel are appropriate and at the appropriate points you decide during the process. However this does not mean there is no relationship between the various diagrams; one of the most important aspects of a CASE TOOL is how it manages the relationships that exist between them as specified in the UML. Few if any modellers use all the diagrams; it depends upon the specific project and the personal preferences of the modeller. Fowler 2004, p.12 has a nice diagram showing the various diagrams in UML (version 2) taken from the formal UML specification document; the greyed out boxes represent the classification of the diagrams. In UML version 2 there was 13 different diagrams, and now in UML2.4 14 diagrams: In this and the following chapter we will focus on the Class diagram, probably the most important diagram in UML. But to help you understand what classes are we will look briefly at class instances (Objects) first. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 8 of 27 Introduction to UML part 1 - classes and instances If you want a quick overview of UML and the various diagrams see: http://www3.software.ibm.com/ibmdl/pub/software/rational/web/whitepapers/2003/intro_rdn.pdf or http://www128.ibm.com/developerworks/rational/library/769.html Please note that both these sites by providing a very superficial overview make many technical errors - but they do provide a starting point. 6 Class instances So what is a class instance in the context of 'object oriented modelling'? A class instance (often called an object in UML but I avoid this term) is best thought of as a definable thing with a number of facets that results in us perceiving it as something that is distinct. What are these facets? well in biology people often talk about something having form and function, we can think of the 'descriptive' side of things as being data (e.g. a person having a name, age, hair colour and address etc) and the 'function' side of things as being activities (e.g. washing hair, giving birth, going shopping etc). Moreover, the data (structure) and activities (behaviour) are inextricably linked in our conceptualisation of the instance. If the instance should change either its activities or characteristics it exhibits, we feel distinctly uneasy. In other words, when we conceptualise an instance in the world, we do not naturally divide it out into these two aspects. To do this requires skill. For example, when we see something we like, we tend to think of both actions as well as its characteristics (data), when one thinks of a banana or a bowl of soup, not only do both have pleasant characteristics such as colour and smell but they also have pleasant actions associated with them such as the soup being made (created, the default operation all instances possess) and eaten, and the banana growing and ripening, thinking of something more complex such as a Person, instances of this would be far more complex.. Class instances - Objects - UML 2.4 Attribute names typically begin with a lowercase letter. Multiword names are often formed by concatenating the words, each subsequent word starting upper case instance name:class name In uml v1.4 onwards you do not show the operations compartment in class instance diagrams (see Pender 2002 p142) Attributes=value No spaces & underlined Examples: mySoup:Soup id:84739 mary:Person Class name capitalised instance name lower case country of origin=uk age=20yrs hair=grey washing hair=yes shopping=no eating=No flavour=good john:Person myBanana:Banana decomposing=no age=34yrs hair=Brown washing hair=No shopping=No eating=yes age =21 days variety=Costa rican yellow flowering=no growing= no moving= no Each of these characteristics has a value = therefore this is an instance each attribute+value is called a slot From the above we can say that we have two instances of class, Person and one each of class banana and soup. So we can have any number of instances for a particular class. In the context of 'instance modelling' a class instance is therefore something in the investigator's mind that usually possesses a recognisable number of both characteristics (data consisting of data items) and actions. As in all areas of computer science, one word is never enough; and UML uses the word 'attribute' instead of data or characteristic. The diagram above shows how class instances are drawn in UML. Each class instance is divided into two sections: The top box gives the name of the class instance along with its class name (more about that below). The bottom section lists each attribute along with its value, where each line is called a slot. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 9 of 27 Introduction to UML part 1 - classes and instances All the above examples of class instances indicate that the attributes have values suggesting that the class instance exists in some way and because of this it often means class instances are called ‘real world things’ but this can be misleading. If you know about ERD diagrams you may be thinking that the concept of a class instance is very similar to that of an Entity Instance. In fact you would not be far from wrong; however, the class instance concept also has the concept of Operations within it, they are just not shown in the instance diagram. In the above section we have discussed instances of Classes now we will investigate the actual Class concept.. 7 Classes The best way to think of a class is to think of the blueprint idea. A class is often called a concept, although philosophers argue about the differences. Many theorists have provided complex definitions of a class or entity type, which is a similar idea, but none are complete or infallible. Hopefully by Banana the end of this section you will be able to conceptualise what a A Class class is in this context even if you still won't be able to provide a age definition for it. variety flowering Chen, one of the early writers (circa 1970), felt that the task of class identification (he growing was talking about 'entity types' at the time, as instance modelling had not been moving developed) was best left to the individual who was within, and who knew most about, flower() grow() move() the system to be modelled. This suggests that classes are partially dependent upon the person who is identifying them, and this will become clear as you work through this section. The domain expert / subject matter expert (SME) plays a vital function between the end user and IT/ programmers defining and correctly modelling classes. What then is a class? A class can be thought of as an abstraction from the instance. Notice that in the examples concerning instances a single banana was described. The instance 'mybanana' is said to be an instance of class banana. Similarly John is said to be an instance of class Person and “mysoup” an instance of class soup. Notice that while the class person could exist without any instances, the reverse is not true. We say that an 'instance' is an 'instantiation' of a class. This may appear rather pedantic but it is very useful in modelling as it provides a method of classifying groups of things often in very useful ways. Basically: Class = Template Instance = Example of a particular class All instances of a particular class must have the same structure as the class The rest of this section will be concerned with identifying and organising Classes. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 10 of 27 Introduction to UML part 1 - classes and instances 7.1 Defined by context Below are some examples of classes and instances for three different contexts: A typical general practitioner planning on collecting information about patients: Class Some possible instance(s): Doctor Name=Angus Wallace. Residence= living in the UK Patient Name=Joe Bloggs, Town=Newcastle , Name=Alan Smith, Town= London Visit Time=12/06/2001/4pm location+Prospect House Newcastle Prescription Drug=Valium, dosage=5mg. Frequency= eight times a day Advice leaflet Title=Chronic back pain leaflet Title=UTI self management The university administrator thinking about developing a course database: Class Some possible instance(s): Module Coordinator Name=Robin Beaumont, Name=Joe Brand Student Name=Paul Whatling Name=Mary Brown Name=Anne Smith Tutor Name=Ruth Brown Module Title=Introduction to Informatics, year=2003 A garage collecting detailed information about car components: Some possible instance(s): Class Spark Plug Make=Rover, model=49532 Engine Escription=122 Brake Horsepower Cooling system Capacity=17 pints Gearbox Second gear ratio= 7.55:1 Propeller shaft Type=Hardy Spicer Are the above examples correct? While the above examples probably list a selection of the important classes for each of the contexts, there is no absolute way of being able to say they are correct. Rumbaugh et al (1991, p21) makes this important point when discussing class identification: “We define a class as a concept, abstraction, or thing with crisp boundaries and meaning for the problem at hand. Classes serve two purposes: they promote understanding of the real world and provide a practical basis for computer implementation. Decomposition of a problem into classes depends on judgment and the nature of the problem. There is no one correct presentation.” [edited slightly] This is clear from considering the last example concerning car component details. Assume that another garage owner who was less concerned with collecting detailed information about each component only wanted one item of information recorded for each component. In this instance we would probably have CAR as the class and each of the classes listed above relegated to attributes of the CAR class. There is no definitive correct answer; we only know by talking to the actual garage owner. Classes are largely defined by the context. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 11 of 27 Introduction to UML part 1 - classes and instances 7.2 Presentation in UML Computer scientists, whenever possible, use diagrams or symbols rather than words. This is because words are considered to be the most ambiguous form of communication or more probably because most computer scientists are notoriously poor at English. The diagram below shows how UML would possibly represent several of the classes described previously: In the diagram each box represents a class. The box is divided into three sections. The top section of the box provides the name of the class, usually a noun. The next section down provides details of the data (attributes or data items) in the class while the last and final section provides names of the activities (methods) that make up the class. While the first two examples -- Person and Banana -- are relatively easy to define in this way, the third is more difficult. This is probably because Soup has a large number of attributes but has very few activities. The only one l could think of, besides the generic ‘create’ which all classes have, how else would you create instances? is the process of decomposing when it's left too long, possibly ‘heat up’ might be another. Not all classes have actions (other than the generic ‘create’ and 'destroy'), but all must have a name and something that uniquely distinguishes them from another class. Because instances are just instances of a particular class, these rules apply to them as well. In this chapter we will concentrate on class diagrams rather than instance diagrams; these being more general, they tend to be more useful. However, instance diagrams are useful if you want to investigate a particular situation. Classes (UML 2.0) characteristics Class name Class name capitalised Not underlined Attributes: (data items) Operations behaviour Examples: Person Banana Soup age hair washingHair shopping eating age variety flowering growing moving id country of origin flavour decomposing washHair() shop() eat() flower() grow() move() decompose() Attribute names typically begin with a lowercase letter. Multiword names are often formed by concatenating the words, each subsequent word starting upper case UML2.0 infrastructure specification p.121 adapted If you know about ERD diagrams you may be thinking that classes and Instances (instances) are the same as Entity Types and Entity Instances however Classes and instances are far more complex because they possess operations as well as attributes. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 12 of 27 Introduction to UML part 1 - classes and instances We will now take a specific example, assume that we have decided to propose that a valid class would be one named Doctor firstly we need to consider if this is a valid class, again context comes into play if we were creating a model for a general purpose employment agency we would probably have a more generic class such as client, with thewre profession as an attribute in the class, however if we were modelling a GP practice or hospital we would have Doctor as a specific class. Assuming we have the latter situation: Doctor Why is this a class? surname forename dob GMC_no salary gender examine question diagnose request_test Because it as a name Because it has a set of unique attributes i.e. surname, forename, date of birth, GMC number, salary, gender etc. And a unique set of operations i.e. examine, question, diagnose, request test etc. Why is this a class rather than an instance? Because it possesses these attributes and operations but they do not have specific values 'Unique' here means different from any other class in the model Sarah_smith:Doctor Why is this an instance of the Doctor Class? surname=smith forename=sarah dob=19/12/1956 GMC_no=39200456 salary=89K gender=m Because it has the same set of attributes as the doctor class i.e. surname, forename, date of birth, GMC number, salary, age etc. And each attribute has a specific value Because it has the same set of operations as the doctor class (not shown in instance/object diagram) Another way of thinking about the bond between a class and instance is to think of the class as being the column headings (= attributes + operation names) for a number of rows each of which is an instance of the class. For example Doctor surname forename date of birth GMC number salary gender examine Request test smith Dow 19/12/1956 39200456 89K male yes Blood for culture Coates Jill 03/05/1966 5748337 67K female no Knee x ray Worsley Alan 11/07/1970 578493 80K male no Barium enema Six attributes shown Two operations shown Exercise 2. MCQs 1. Which one of the following is an example of a class: a. b. c. d. e. Robin Beaumont Carrot Date's book An Introduction to Database Systems on my shelf at home Spike from the TV series "Buffy the Vampire Slayer" My backup disk (in the second drawer of my desk) 2. Which one of the following is an example of an instance of a class: a. b. c. d. e. Course Manager Health Informatics courses Women Tony Blair Religion Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 13 of 27 Doctor class with 3 instances Introduction to UML part 1 - classes and instances This is how I arrived at the answers for the exercise on the previous page 1. Which one of the following is an example of a class: a. Robin Beaumont could be: First_name robin Tony b. Class / instances. Possible Class name: carrot Germination_date Seeding_position manufacturer 04/09/2011 Plot4 thomsons 04/09/2011 Plot2 thomsons Instances taste Honey sweat sharp etc ... Spike from the TV series "Buffy the Vampire Slayer" Class / instances. Possible Class name: buffy character name character First appearance James Marsters spike 1997 Seth Benjamin Gesshel-Green Seth Benjamin Gesshel-Green 1998 e. etc ... Date's book An Introduction to Database Systems on my shelf at home Class / instances. Possible Class name: Book name author publisher date UML for beginners beaumont Brewester_brown 01/02/2016 An intro to databases date wiley ?? d. etc ... Carrot could be: Variety Old_red Tonys_special c. Attribute names Class / instances. Possible Class name: person surname dob Mobile_1 email beaumont 12/05/87 0798675664 you@me.com Milner 05/09/1967 0978675 tony@me.com Last appearance 2003 2001 etc ... My backup disk (in the second drawer of my desk) Class / instances. Possible Class name: name size manufacturer Backup1 5.25 imac My_backup_disk 3.25 dozik Backup3 5.25 imac Backup4 3.25 dozik backup_disk date 02/09/2010 10/09/2006 02/09/2010 10/09/2006 etc ... So from the above only the carrot is at the class rather than instance level, the relevant entries are shaded yellow. A similar approach can be taken to the second exercise 2. Which one of the following is an example of an instance of a class: a. b. c. d. e. Course Manager - This is probably a class with a name attribute. Health Informatics courses - This is probably a class with attributes such as title, start_date etc Women - This is probably a class with attributes such as gender, surname dob etc Tony Blair - This is probably an instance of Human or Prime minister Religion - This is probably a class with attributes such as name, leader, estimated number of followers etc While the table format is nothing to do with UML it does help to understand the link between the class and its zero or more instances All instances of a particular class must have the same structure as the class Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 14 of 27 Introduction to UML part 1 - classes and instances Exercise 3. Classes and Instances Spend five minutes filling in the tables below. List some possible classes along with examples of their instances. Some of your classes may have no or several instances. The important thing is that each instance possesses the same set of attributes as the entity type. Class name: Attributes names: Attributes values: Class name: Attributes names: Attributes values: Class name: Attributes names: Attributes values: Exercise 4. UML Classes and Instances Part A Consider your job to be a class. If you do not have a paid job, you may be a student for example, then use that instead. List two of your (clinical) activities along with the information about them which you feel would be useful to collect. If it helps, consider it in the context of a learning log book of some sort. Part B Draw a diagram that represents the following classes: community nurse, GP, clinical manager in a hospital, day care coordinator, director of finance in an acute trust (hospital outside the UK), patient, yourself and your boss. Part C Draw an instance diagram that represents an instance of some of the classes you described in the above tasks. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 15 of 27 Introduction to UML part 1 - classes and instances Exercise 5. MCQs 1. Which of the following provides the best description of a Class (select one)? a. A specific concrete object with a defined set of processes (e.g. John Brown with diabetes) b. A value given to a particular attribute (e.g. height - 230 cm) c. A thing that we wish to collect data about where one or more, real world examples of it exist d. A template for a group of things with the same set of characteristics that may exist in the real world e. An undefined concept that needs further clarification 2. Which of the following provides the best description of a class instance (select one)? a. A specific concrete object with a defined set of processes (e.g. John Brown with diabetes) b. A value given to a particular attribute (e.g. height - 230 cm) c. A thing that we wish to collect data about where one or more, real world examples of it exist d. A template for a group of things with the same set of characteristics that may exist in the real world e. An undefined concept that needs further clarification 3. From the following list, select two class instances: a. Steinway piano model D design template b. McGill type forceps as used in surgical operations c. Tony Blair ( British prime minister) d. PIII type chip that is found in many modern PCs e. An advice leaflet for chronic back pain issued to Mrs Smith on 02/10/2002 4. Which one of the following statements is true (select one)? a. A UML class diagram can only display class names. b. Attributes are a rarely considered aspect of classes. c. Attributes must always be displayed in UML class diagrams. d. Attributes equate to table names in a database. e. Attributes can optionally be displayed in UML class diagrams. 5. Select from the following the best list of attributes for the class SHOE for someone working in a shoe shop (select one answer): a. 1, 2, 6 b. 1, 2, 6, 3 c. 1, 2 d. 1, 6 e. 1, 2, 3, 4, 5, 6 6. Select from the following the best list of attributes for the class RECIPE for someone following a recipe at home (select one): a. 4, 5, 7, 8 b. 4, 5 c. 4, 5, 6 d. 4, 5, 8 e. 4, 5, 6, 8 Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 1=size 2=number of lace holes 3=propulsion 4=cooking time 5=number of portions 6=material colour 7=volume (loudness) 8=cooking temperature Page 16 of 27 Introduction to UML part 1 - classes and instances 7.3 Identifying Classes While there is much written concerning UML and Class diagramming theory, far less has been written about actually developing the models. Two of the most common ways of identifying classes for developing UML class diagrams are: Narrative descriptions of requirements Workshops Both of the above methods rely to some extent on expert domain knowledge to identify and classify classes. We will now look at the first method, using a narrative description of the system requirements on which to base the development of a UML class diagram. Rather than give a brief description of each stage and then visit each in turn, I will just take you on a journey and then reflect upon what we will have done in a summary at the end. So now let’s start with the narrative description. 7.3.1 Analyzing a Narrative Description to identify candidate classes Frequently the first thing to be produced when someone has the idea of developing a model (also called "the system" or "database" below) is a paper document describing what he or she wants. This often includes something like the following: We wish to develop an information system for our hospital in which: “Patients are treated in a single ward by the doctors assigned to them. Usually each patient will be assigned a single doctor, but in rare cases they will have two. Patients either pay for their treatment directly or through an insurance company. Healthcare assistants also attend to the patients, and a number of these are associated with each ward. Initially the system will be concerned solely with drug treatment. Each patient is required to take a variety of drugs a certain number of times per day and for varying lengths of time. The system must record details concerning patient treatment and staff payment. Some staff are paid part time, and doctors and care assistants work varying amounts of overtime at varying rates (subject to grade). The system will also need to track what treatments are required for which patients and when, and it should be capable of calculating the cost of treatment per week for each patient. When users use the system they will be able to print out as well as view on screen the results. (Although it is currently unclear to what use this information will be put.) “ (taken from http://www.umsl.edu/~sauter/analysis/er/er_intro.html and expanded) The first stage is to pick out all the nouns (names) in the above passage; this provides a good baseline from which to consider possible entity types. Exercise 6. Marking Nouns Mark in the above narrative all the nouns (names) you see. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 17 of 27 Introduction to UML part 1 - classes and instances You can see in bold below the possible set of nouns (names) that I have come up with: “Patients are treated in a single ward by the doctors assigned to them. Usually each patient will be assigned a single doctor, but in rare cases they will have two. Patients either pay for their treatment directly or through an insurance company. Healthcare assistants also attend to the patients, a number of these are associated with each ward. Initially the system will be concerned solely with drug treatment. Each patient is required to take a variety of drugs a certain number of times per day and for varying lengths of time. The system must record details concerning patient treatment and staff payment. Some staff are paid part time and doctors and care assistants work varying amounts of overtime at varying rates (subject to grade). The system will also need to track what treatments are required for which patients and when and it should be capable of calculating the cost of treatment per week for each patient. When the users use the system they will be able to print out as well as view on screen the results. (Although it is currently unclear to what use this information will be put.)” (taken from http://www.umsl.edu/~sauter/analysis/er/er_intro.html and expanded) Gathering together all the above nouns produces the following list, not in any specific order: Candidate classes Patients System Doctors Users Healthcare assistants Cost Care assistants Time Ward Day Drug treatment Lengths Drugs Details Patient treatment Overtime Treatment Rates Staff payment Grade Staff Week Insurance company Results Screen Use Information Each of the above nouns can be considered to be a 'candidate class'. The next stage is to consider which of these are appropriate classes to include in the UML class diagram. To do this we consider Rumbaugh et al (1991 p152-3, repeated in Blaha & Rumbaugh 2005 p 185 -6) criteria. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 18 of 27 Introduction to UML part 1 - classes and instances 7.3.2 Developing candidate Classes Rumbaugh et al (1991 p152-3, repeated in Blaha & Rumbaugh 2005 p 185 -6) provides some guidance as to how to identify appropriate classes. He suggests that you consider the following issues: Redundant class types Two class types may express the same information (i.e. two names for the same concept, or synonyms). In the above example DOCTORS and HEALTHCARE ASSISTANTS (HCA) might be considered to be just class instances of the class called STAFF; however, this is unlikely in the above example because we know from our own expert domain knowledge that doctors are concerned with prescribing whereas healthcare assistants are not, they therefore have different activities, furthermore some of the attributes will be different, doctors possess a GMC number whereas HCA's do not. In addition the information we plan to collect is specifically concerned with prescribing. We therefore consider the class type STAFF to be redundant, at least for the time being; possibly when the system is developed further such considerations can be re-visited. Irrelevant class types If an class type has little or nothing to do with the problem, it should possibly be left out. In the above example one would need to clarify with the person requesting the system if they need information stored about INSURANCE COMPANIES. Also if the system is initially only concerned with drug treatments, is there any point collecting information about other treatments? Vague class types In a narrative description, often words are used indiscriminately. In the above example the description states that “Initially the system will be concerned solely with drug treatment” yet the following paragraphs refer to PATIENT TREATMENT and also TREATMENT. Are these three different class types or not? Again we can only find out by discussing this issue with the person who requested the database. We would probably suggest that we have two class types called DRUG_TREATMENT and NON_DRUG_TREATMENT where NON_DRUG_TREATMENT is concerned with information about any non-drug intervention and probably not included in the initial class diagram. Class types that are really attributes Often an initial class type is an attribute. In the above, COST has been classified as a possible class yet it is probably an attribute of NON_DRUG_TREATMENT or DRUG_TREATMENT or PATIENT (renaming it BILL). Multiple roles become class types "The name of a class type should reflect its intrinsic nature and not a role that it plays. For example, OWNER would be a poor name for a class type in a car manufacturer's database. What if a list of drivers is added latter? What about persons who lease cars? The proper class is PERSON (or possibly CUSTOMER), which assumes various different roles, such as owner, driver, lessee." (Blaha & Rumbaugh 2005 p 186). Similarly a doctor is not just a prescriber but a treatment giver and a reviewer of results. Implementation information The Class diagram is concerned with defining the data that needs to be stored. It is not concerned with the hardware or processing of the data. Therefore, in the above example SYSTEM, SCREEN and USER can be ignored. Similarly RESULTS are an outcome of processing data. Perhaps from your knowledge of Access or other databases, you will realise that such things as RESULTS and reports are just a process of using a query or report tool to interrogate the model. Another type of problem results from the existence of homonyms. This is where the same noun in the narrative actually means different things in different places. For example the phrases "take a variety of drugs" and “Initially the system will be concerned solely with drug treatment” both contain the word DRUG but when you think about this where the word appears in the first phrase it is probably referring to the actual bottle of pills (i.e. 29 Ampicillin capsules prescribed to Mr smith on 29/05/2014) or a specific bag of intravenous fluid that is given to a specific patient however in the second phrase it is probably referring to all Ampicillin given to all patients or even possibly all the ampicillin allocated to a specific hospital ward but not necessarily consumed. The word DRUG_TREATMENT seems to describe the first situation and DRUG the second, but this would need further investigation. Similarly as we have discussed above TREATMENT has several meanings and it may be necessary to add one or more additional classes to express the different concepts more clearly (e.g. DRUG_TREATMENT, DIETARY_PRESCRIPTION and ART_THERAPY etc). So what have we ended up with after all the above deliberations? The following is the revised list of classes, for a very simple first attempt which we will obviously expand: PATIENT, DOCTOR, DRUG_TREATMENT, DRUG By concentrating on the drug aspect of treatment and considering each of Rumbaugh’s guidelines we have reduced the list from 27 to 4 for a possible initial UML class diagram. However I'm sure that in future developments a large number of other classes with be added or reinstated! Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 19 of 27 Introduction to UML part 1 - classes and instances Exercise 7. Identifying Classes from a Narrative Time: 60 minutes Look through the Radio station scenario, found in the scenarios handout, and: 1. Mark all the nouns and produce a list of them. 2. Using Rumbaugh’s guidelines revise your list to identify candidate classes. 7.3.3 Applying naming standards to Classes While the previous page was concerned with identifying classes, we will now look at one of the many informal naming standards suggested, this one is by Reingruber & Gregory 1994 (p65-77). Class names: Should be unique for the particular model. (This does not usually apply to attribute names which only need to be unique to a particular class) Should be a singular noun (e.g. PATIENT not PATIENTS). Should be self-explanatory to those reading the UML class diagram. Should follow any naming conventions locally defined by the modellers. For example, two common constraints are that: They should be written in UPPER CASE. Possible spaces should be represented by the _ character (eg DRUG_TREATMENT rather than DRUG TREATMENT). Should not be a name of an individual instance (e.g. Freeman Hospital Newcastle upon Tyne). Should not express more than one concept (e.g. EQUIPMENT/BED). Should be documented in addition to the diagram The description for each class should be clear, unambiguous and supplemented with examples of instances. When carrying out this process it is a good idea to draw up a table similar to the one below to make sure you carry out the process, the initial proposed class type name on the left and the final class type name on the right. Initial class type name: Unique Singular noun Selfexplanatory UPPER CASE The _ character Not a individual object Not more than one concept Documented Final class type name Patients Doctors Drug treatment Drugs Exercise 8. Applying standards to Classes Time: 60 minutes 1. Looking back at the hospital example, consider the following four possible classes. Use the above guidelines to edit them appropriately: Patients Doctors Drug treatment Drugs 2. Revisit the initial set of classes you defined for the Radio station scenario and edit them accordingly. It may help to draw up a table similar to the one above. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 20 of 27 Introduction to UML part 1 - classes and instances 7.3.4 Workshops The alternative to using a paper document to partially derive a set of classes is to hold a series of interactive workshops. This requires commitment, including the willingness to learn, from the person(s) who have requested the system (i.e. database). They need to understand to a limited extent what you are learning now! Often a mixed approach can be taken, using a paper document as the starting point, to a workshop. Running workshops requires good group working skills, and must be carried out in a non-threatening manner. Often the modellers need to show considerable tact when people get hung up on what the modellers themselves know to be irrelevant issues (e.g. font size/colour, type of screen or computer etc) for the particular task at hand. Now that we have looked at how to create an initial list of classes we will consider the actual mechanics of drawing UML class diagrams 7.4 Drawing UML class diagrams - Case tools It must be remembered that systems modelling, of which UML is one particular aspect, is a discipline that has only been in existence for about a quarter of a century. I was recently looking at a book on systems analysis written in 1984 (Daniels & Yeates) and only 2 of the 300 pages was dedicated to a similar topic of databases, and within those two pages no mention was made of diagramming. To begin with learning to draw UML class diagrams is usually a pen and paper exercise and I would strongly encourage you to practice using this simple technique at the start - be warned you'll also need a large rubber! Drawing informal UML class diagrams and discussing them is a very good way of developing them in a measured and appropriate manner, flip charts, or electronic white boards are excellent in this respect. Other documents on my web site provide detailed tutorials on how to use specialised software (called case tools) to draw UML class diagrams. http://www.robin-beaumont.co.uk/virtualclassroom/contents.htm 7.5 Class Diagrams and Amount of Detail Shown In a uml class diagram, varying degrees of detail of a class can be shown. Sometimes all that is shown is the class name. Alternatively the class name and attributes are shown, or alternatively both the attributes and operations are shown. Class name Attributes Operations Can be dispayed as: Class name or 7.6 Views Class name Attributes or Class name Attributes At the beginning of this document it was stated that the identification and description of Classes/instances was Operations partly a matter of individual interpretation. This is clear when one considers the examples given above. Now considering the NHS, a patient as perceived by a hospital chaplain is a very different instance from that perceived by a director of finance. If you asked each to draw a Class diagram like those given on the previous pages, each would come up with a different set of data and activities. A model is always context specific. It is never purely a reflection of reality - whatever that is! It is interesting to note that a large amount of effort in the modelling process is directed towards getting these differing views consolidated in some way. The potential problem is tackled in different ways depending upon the particular software development lifecycle chosen. Frequently a stakeholder or cultural/political analysis is carried out to see how important each of the views are, thus allowing a way to prioritise one view over another. Another method is used during the actual software development phase of the lifecycle where different views, or user interfaces, to the data can be developed for different user types. These are just two of a whole host of techniques available to tackle this problem. This concept of a view is similar to that of a 'semantic purpose’, which is described on page 22 of Rumbaugh (both editions same page). The importance of being aware of potential problems with differing views in the healthcare sector is discussed in: Willcocks P L. Mark A L. (1989) IT systems implementation: Research findings from the [health care] public sector. J I T [June] 92 – 103 Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 21 of 27 Introduction to UML part 1 - classes and instances Exercise 9. MCQs 1. Which of the following types of software (applications) is most suitable for developing UML class diagrams? a. Desktop drawing package (e.g. Smartdraw) b. Desktop publishing application to ease the use of textual explanations c. Anything with drawing capabilities (e.g. Microsoft Word) d. A CASE tool e. A spreadsheet Exercise 10. Different viewpoints Describe what might be the main differences in viewpoints between some of the following: community nurse GP clinical manager in a hospital anaesthetist day care coordinator paediatrician psychiatrist microbiologist director of finance in an acute trust patient You may want to devise some type of table to help you organise your thoughts. 7.7 Warning about the ‘is a Kind of’ misunderstanding To start with, people are often confused about the connection between classes and instances thinking that an instance “is a kind of” class. An example will help to make this clearer. Someone might say that for the class ANIMAL instances in this case might be BIRD or HUMAN. This is not usually the case. The reason for this is because thinking about the structure, that is what attributes and behaviour you might want to collect about BIRDs and HUMANs would probably be different in several respects for each of them. Would you really want to collect information about the size of wingspan for a HUMAN or the IQ of a particular bird? In other words the set of attributes and operations for each is different. Unfortunately it is not always as simple as this. Here is the argument for keeping BIRD and HUMAN as instances of HUMAN. Suppose you were an antique dealer and just wished to collect information about the instances of ANIMAL statue you had. In this case you would probably just want to record the number of ANIMAL statues you had rather than be animal specific, information in which the amount and type would vary for each. In this situation you are happy about keeping the same type of information about each of the statues regardless of what they represent, probably just species name would do for your attribute name. The context dictates what class types you will find. Lest consider another example. This time assume we have a class called ??? with the following 5 instances with some of the attributes shown. You will notice that you can divide up the instances into two groups based upon the empty attributes. It look like we need actually two classes Class = ??? here one for men and one for women? However First_name Bra size Dress size Inside leg Date of birth Waist size we do have a certain level of commonality between Mary aa 2 01/02/45 60 them with the First_name, Date_of_birth and waist_size attributes. John 90 23/12/67 89 Dave 86 10/10/68 103 Philip 110 14/08/98 98 26/04/78 70 Anne d 14 We will learn latter that this 'is a kind of' situation can be very effectively modelled by using a concept called inheritance in UML class diagrams. Much more about this latter. For now the take home message is each class in a UML diagram: Has a DIFFERENT STRUCTURE (i.e. Different attributes and operations) Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 22 of 27 Introduction to UML part 1 - classes and instances 7.8 Tight coupling From the above sections you will realise that each class has a distinct set of attributes and operations, not only it is vitally important that each class is distinct from others in the model but the class must be a closely knit structure for example a patient class should not have leakage from other classes in the model such as GP or APPOINTMENT in the model below. Exercise 11. Inappropriate attributes Consider the following classes and mark the attributes you feel are inappropriate in each class. Remember that the attributes in a class are those that define the class not aspects that may relate to it. Model 1 - GP surgery Model 2 Travel agency 7.9 Class diagrams and Databases UML is often, BUT NOT ALWAYS used to develop computer systems and frequently these are databases. When people first start developing databases they always make two fundamental errors. Firstly, they rush to a computer to play with the DBMS (e.g. Access). Secondly, they believe they can create a perfect database by Technical Class Diagram terminology: specifying a model without creating a prototype of some sort. = Design Blueprint Specify (Data dictionary database Implement It is vitally important to get the design right, but this involves many revisions resulting partly from feedback from people using the actual database. For each iteration the Class diagram(s) allow you to create a blueprint (model, specify, design, etc) of the database structure, and the DBMS allows you to create (implement, develop, etc) the actual database structure. In the diagram to the left, the data dictionary is shown as a half-way house between the 'high level' class model(s) and the actual database. Depending upon your inclination it is often not necessary to produce a data dictionary as a detailed description of each attribute is adequate; it is basically up to you and whomever you may be working with. (See Blaha & Premerlani 1998 for more detail.) Again I must reiterate Class diagrams are not only used to develop databases! 7.9.1 The Relationship between Classes/Instances to Databases If we accept the object oriented view of the world, databases themselves are also simply a collection of classes/instances. More specifically a table is simply a way of allowing the computer, via a piece of software called a DBMS (Database Management System, e.g. Access), to Class: Database table store these classes/instances. This all sounds rather Table name = Patient: Patient Class name abstract, so I will now provide a example. ID First name Surname DOB Etc. Attributes Patient ID First name Surname DOB Sex Address Operations See doctor The diagram opposite demonstrates the relationship between the class Patient and a DBMS table structure. mypatient2:Patient Class name becomes table name (not always) Attributes in class model = fields in database Patient instances: The attributes in the class diagram become fields in a table where the table name is the same as the class name. Taking this one step further, a class instance is equivalent to a record in a table in the database. Also at the top most levle the complete ERD is called a schema which is comparable to the complete UML class model. Robin Beaumont robin@organplayers.co.uk Id=214 fname=john surname=smith dob=01/01/55 gender=male address=20 station st. Doctorref=12345 … … mypatient1:Patient Id=023 fname=Mary surname=Allan dob=21/11/65 gender=female address=23 pink lane. Doctorref=12345 … … 18/03/2016 Document1 Page 23 of 27 Database table Table name = Patient: ID 214 023 First name John Mary Surname Smith Allan DOB 01/01/55 21/11/65 Class Instances become table records attribute values = data items in database Etc. Introduction to UML part 1 - classes and instances Exercise 12. Linking Classes and Instances to Databases Spend a few minutes taking some of the classes / instances you have identified in the previous exercises indicate how they might relate to tables, fields and records. It might help to create a picture similar to the ones on the previous page. 7.9.2 Specifying data types Fields in databases besides having a name also specify what type of data they store, for example it might be a number of characters (called a string), a whole number (called an integer) or a true/false value (called a Boolean) similarly in a uml class diagram you can specify the data type of individual attributes providing an even greater degree of linkage between the UML class diagram and a database structure. 7.9.3 Derived Attributes and Default values Often in databases field (attribute) values are derived from other field (attribute) values and you can show this in UML classes by using the forward slash(/) before the name, for example say we have a derived attribute in the Patient class called bmi (Body Mass Index) which is derived from two other attributes in the class height and weight, the situation opposite. Optionally you can add a note to the UML class diagram to provide additional details, but I personally prefer to add the detail to the narrative accompanying the diagram as the diagram gets very cluttered with lots of notes. The derived attribute does not necessarily use attributes from within the class but can make use of attributes from others. When a new record (instance) is created the actual value for each of the attributes is empty, however it is often useful to set a default value for some of the attributes. In the example below we have two more attributes in the patient class called dateRegistered data type date, and isHypertensive with data type Boolean, for the former attribute the default value is the date the instance was created i.e. today and for the latter attribute it is given the value, False indicating that they are not hypertensive. Obviously the default values can be overwritten, and reasons for a default value should always be considered carefully, for example in the above, is it sensible for all new registered patients to be considered to be normotensive, probably a better value would be empty or not known. 7.9.4 Enumerated types From the above example it appears that what we need is really a isHypertensive field/attribute that can take one of three values {yes, no, not known} you can achieve this by defining what is known as an enumerated type. An enumerated type allows us to specify a limited number of options that particular attribute/field can take and you can think of it as a pick list. In the example opposite I have defined a new enumerated type called hyp_options, and given it a default value of 'unknown'. The valid options for this new enumerated type are either specified within the documentation accompanying the diagram or alternatively using a special enumerate class with the name hyp_options in this example, personally I prefer the first option as often you have a large number of enumerated types in a class diagram and it can get very messy. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 24 of 27 Introduction to UML part 1 - classes and instances 7.10 Operations So far we have not discussed the third section in each class in UML class diagrams which specifies the behaviour of the class, its dynamic aspects. An example is given opposite. Although clearly this aspect is very important, discussion of it will be deferred to the chapters concerned with dynamic modelling. However there is nothing stopping a modeller directly adding operations (i.e. behaviours) when considering classes. 7.11 Summary In this chapter we have focused on one particular aspect of UML class diagrams, the classes by considering: historical aspects considering ERD's - the forerunner to UML class diagrams, + the development of the Object Oriented Modelling approach accumulating in the creation of UML. various stages one can go through to create a list of initial (candidate) classes, then applying various criteria and naming standardisation. Consideration was also given to common problems related to class identification along with the 'type of class' misunderstanding. How classes and instances are inextricably linked How classes relate to database structure. and the further specification of attributes in UML I have reproduced the class identification/development method below for easy reference.: 1. Identifying nouns and drawing up a list 2. Removing: 3. a. Redundant classes (e.g. synonyms) b. Irrelevant classes c. Vague classes d. Classes that are really attributes e. Multiple Roles amalgamated into a single class f. Implementation information Adding classes due to homonyms 4. Considering Reingruber & Gregory 1994’s guidelines creating a table with the following columns: a. b. c. d. e. f. g. h. i. j. Initial class type name Unique Singular noun Self-explanatory UPPER CASE The _ character Not an individual object (Not more than one concept) Documented Final class type name We could have also used a more interactive approach with clients in a workshop environment, and developed UML class diagrams with them. After a few MCQs we will move onto the second aspect of UML class diagrams, the relationships. If you feel like one this would be a good time to take a break. We have now completed our investigations into UML classes, however clearly these classes must relate to one another is a way analogous to the way tables do in a database structure, which will be investigated in the next chapter. For now go back to the start, look at the mind map on the front page and also the list of learning outcomes, see how much you have managed to learnt. Also remember there are my Youtube videos and practical Case tool tutorials to reinforce this knowledge. Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 25 of 27 Introduction to UML part 1 - classes and instances Exercise 13. MCQs 1. Which one of the following best describes the technique used to identify classes in a narrative? a. Identification of verbs, the application of various criteria and standards (eg naming conventions etc) to refine the list and then the creation of a list of appropriately named classes b. Identification of nouns then the application of ISO standards to create a list of appropriately named classes c. Identification of verbs then the application of standards (eg naming conventions etc) to create a list of appropriately named classes d. Identification of nouns, the application of various criteria (e.g. Reingruber & Gregory 1994’s) and standards (e.g. naming conventions etc) to refine the list and then the creation of a list of appropriately named classes e. Identification of a few important nouns then the application of standards (e.g. naming conventions etc) to create a list of appropriately named classes 2. Which of the following criteria are true (choose three)? a. Attribute names must always be unique for a particular model. b. Class names must be unique for a particular model. c. Attribute names must be unique for a particular class within a model. d. A class should only express one concept. e. Class names should be either singular or plural nouns. 8 References Alavi M Wetherbe J C 1991 Mixed prototyping and data modelling for information system design. IEEE software May 87 – 91. One of very few articles which uses an experimental design in place of the purely non experimental case study, to assess various methodologies. Bennett S, Skelton J, Lunn K, 2005 UML: Schaum’s outlines. ISBN 0-07-710741-1 £10.99 [A much improved second edition – no CD but what can you expect at this price] Blaha M Premerlani W 1998 Instance-oriented Modelling and design for Database applications; Includes UML. Prentice Hall Blaha M, Rumbaugh J, 2005 Instance-Oriented Modelling and Design with UML (International Edition ISBN: 0131968599) Prentice Hall An e-book version is available (at: http://www.safarix.com/ ISBN: 013132894-8 You can see quite a lot of the book from the free review sections. Checkland P 1981 Systems thinking: systems practice. John Wiley An excellent introduction to the history of systems analysis as well as introducing Checkland's own 'soft systems' methodology. Checkland P Scholes J 1990 Soft Systems Methodology in action John Wiley. This book includes a case study from the NHS. Date C J. 1995 (6th ed.) An introduction to database systems Fowler M Scott K 1998 UML distilled: Applying the standard instance language. Addison Wesley Newman M. Rosenberg D. 1985 Systems analysts and the politics of organisational control OMEGA int. j. of mgmt sci., 13 (5) 393 - 406 Open University 1993 Relational Database Systems M866 (Five books; Introduction to database technology, The Relational Modal, Normalisation, Using SQL, SQL database management) [These are excellent resources with many exercises and clear concise explanations]. Pender A Thomas 2002 UML weekend crash course. Wiley publishing inc. Reingruber Michael C. Gregory William W 1994 The Data Modelling Handbook John Wiley & Sons Chichester Rumbaugh J, Blaha M, Premerlani W et al 1991 Instance-Oriented Modelling and Design. Prentice Hall. See Blaha, Rumbaugh J, 2005 Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 26 of 27 Introduction to UML part 1 - classes and instances Schmuller Joseph 2004 Sams Teach Yourself UML in 24 hrs ISBN 0-672-3260-40 Third edition. [This new edition has a CD containing a pdf version of the book and a Case Tool called Poseidon (no time limit). Costs around £20] Tsang C H K, Lau C S W, Leung Y K, 2005 Instance-Oriented Technology ISBN: 0071240462 McGraw-Hill Education [rather overly concerned with programming for this course however it does come with a CD of the case tool VP-UML but the book is not on the disk] Joubert M The Use of Conceptual Graphs for Knowledge Bases, Customisation and Actual Data Organisation, Unpublished project working paper (AIM NUCLEUS) 9 Web Links Past student's recommendations: Class and sequence diagram guidelines and more: http://www.agilemodeling.com/style/classDiagram.htm http://www.agilemodeling.com/artifacts/sequenceDiagram.htm 10 Appendix - OMT Types of Association Based on Fowler & Scott 1997 p59 UML OMT 1 A B Exactly one A B An A is always associated with one B 0..1 A B Zero or one (optional) A B An A is always associated with zero or one B * A B Zero or more (many) B A An A is always associated with zero or more B 1..* B A Not in UML 2.0 A One or more 1+ A B An A is always associated with one or more B 2..4,6..8 2..4,6..8 B Numerical range(s) B A An A is always associated with 2 to 4 or 6 to 8 B A {ordered} B ordered A {ordered} B An A is always associated with ordered B A B Aggregation (is made up of) B A An A is made up of B Robin Beaumont robin@organplayers.co.uk 18/03/2016 Document1 Page 27 of 27