|By Dan Clark||
|April 28, 2003 12:00 AM EDT||
The class diagram is an excellent aid to model the attributes, operations, and associations of the classes in your applications. This article, the second in a series of articles that introduce the reader to the concepts of object-oriented design and the Unified Modeling Language, focuses on UML class diagrams. It reviews UML class diagramming notation and the use of Visio to construct a class diagram.
The Need for Modeling Classes
Class structures are fundamental to any object-oriented programming language. The class structure is a template for the objects that will implement the functionality of your applications. As a .NET developer, you need to become increasingly familiar with the classes available in the .NET Framework. As you gain experience developing .NET applications you will discover the need to develop your own class libraries. Good design of object-oriented applications dictates a clear separation of functionality between the user interface, business logic, and data access logic. Well-designed applications achieve this separation of functionality through the development of class libraries that encapsulate internal processing. By developing class libraries, your applications become more manageable, scalable, and extendable.
An all-too-common problem in many object-oriented applications is a lack of preplanning. Class libraries evolve haphazardly. As a result, the distinction of roles and responsibilities among the various classes in the library becomes muddled and convoluted. These class libraries are difficult to manage, revise, and employ. This is especially problematic when large teams of developers build an application. Employing a tool to model your class libraries is imperative to ensure that the application remains consistent, manageable, and clearly defined. A UML class diagram is an excellent tool for modeling the structure of your class libraries.
Modeling Class Structure Using UML
In a UML class diagram, a rectangle divided into three parts represents the class. The top section contains the name of the class, the middle section contains the attributes of the class, and the lower section contains the operations performed by the class. Operations may take the form of methods, constructors, destructors, properties, or events. Figure 1 illustrates a UML class diagram representing a loan class. This class is part of a library loan application that tracks loan, member, and inventory information for a small library.
Examining the class diagram reveals that along with the name of the attribute, it defines the attribute's accessibility. A minus sign (-) in front of the attribute name indicates it is private. A plus sign (+) indicates it is public, and a pound sign (#) indicates it is protected. A private element is only accessible from within the class. A public element is accessible from any code in the same project or any project with a reference to the project containing the class. A protected element is accessible from within the class and any class derived from the class.
Although the UML specifications do not define specific data types, when developing classes for use in .NET assemblies you can strongly type the attributes using the supported types of your implementation language. Visio allows the choice of either VB, C#, C++, or IDL supported data types. Data types can also be complex data types defined by your class library or the .NET class library. For example, a catalog class may have an item attribute that is of type System.Data.DataRow. Another possible scenario would be to create a catalog class as a collection class whose item attribute is an Item class type.
The lower section of the UML class shape defines the operations of the class. Typically, the class diagram will define the name of the operation, its accessibility, any parameters passed in to the operation, and any return value passed back when the operation executes. The loan class represented in Figure 1 contains two constructors (Sub New), a function (CalculateDueDate), an event procedure (OverDueNotice), and a property (LoanID). Unfortunately, the UML specifications do not define a way to identify the various operation types in the diagram. You can, however, add your own notation to indicate the various types depending on the modeling tool you use. Figure 2 shows the loan class shape with custom stereotypes added to identify the various operations defined in the diagram.
Modeling Class Associations
When a class refers to or uses another class, the classes form an association. For example, in the library loan application we have identified the need to construct a Loan class and a Book class. The responsibility of the Loan class is to maintain information about a book out on loan. This includes the member who has the book, the book, and the due date. The responsibility of the Book class is to maintain relevant information about the book. This includes ISBN, title, author, and publisher. Since the Loan class maintains a reference to the Book class, the book class is a collaborator of the Loan class. A line connecting the two classes represents this association in the class diagram. The association line often includes a label to describe the association.
Association lines can also indicate the direction of the association. In the previous case, the Loan class maintains a reference to the Book class, but the book class does not maintain a reference to the Loan class. To depict a one-way association, you add an arrow to the association line. The class diagram shown in Figure 3 documents the association between the loan class and the book class.
Sometimes a single instance of one class associates with multiple instances of another class. For example, a member may have multiple books out on loan. In this case, a single instance of a member class is associated with multiple instances of the Loan class. Multiplicity is included in the class diagram by placing the appropriate symbol on the association line. The class diagram in Figure 4 indicates that an instance of the Member class may be associated with multiple instances of the Loan class.
Using Visio to Construct a Class Diagram
Now that you're familiar with some of the notations used to construct a class diagram, you are ready to investigate the use of Visio to create class diagrams. If you do not have Visio installed, you can still benefit from following along and completing the diagram with paper and pencil.
1. Start up Visio. From the File menu choose New -> Software -> UML Model Diagram.
2. Locate the Shapes window along the left side of the screen. This window includes a tab for the common UML diagrams. Select the UML Static Structure tab (see Figure 5).
3. From the Shapes window click and drag the Class shape onto the design surface. Right-click the Class shape on the design surface and choose Properties. A UML Class Properties window becomes visible (see Figure 6). Change the name to "Book" and add the description "Responsible for maintaining book information" in the Documentation text box.
4. Select Attributes on the Categories list box in the left side of the window. Click on the New button on the right side of the window to add a new attribute to the class. Click on the Properties button to display the UML Attribute Properties window. Change the name of the attribute to "mISBN". Change the type to "VB::Char" and verify that the visibility is "private". Click the OK button to return to the UML Class Properties window.
5. Select Operations in the Categories list box on the left side of the window. Click on the New button on the right side of the window to add a new operation to the class. Click on the Properties button to display the UML Operation Properties window. Change the name of the operation to "ISBN". Change the return type to "VB::Char" and verify that the visibility is "public". Select "Code Generation Options" in the Categories list box on the left side of the window. Change the operation kind to "Property" and check the "Create Get Method" and "Create Set Method" check boxes to indicate it is a readable/writable property. Click the OK button to return to the UML Class Properties window.
6. Select Operations in the Categories list box on the left side of the window. Click on the New button on the left side of the window to add a new operation to the class. Click on the Properties button to display the UML Operation Properties window. Change the name of the operation to "CheckAvailability". Change the return type to "VB::Boolean" and verify that the visibility is "public". Select "Parameters" in the Categories list box on the left side of the window. Click on the New button on the right side of the window to add a new parameter to the operation. Click on the Properties button to display the UML Parameter Properties window. Change the name of the parameter to "ReservationDate" and the type to "VB::Date". Click the OK button to return to the UML Operation Properties window. Click the OK button to return to the UML Class Properties window. Click OK to close the UML Class Properties window. The Book class diagram should look similar to the one shown in Figure 7.
7. In order to demonstrate the creation of class associations, add a Member class and a Loan class to the class diagram. If you want some practice, add some attributes and operations to these classes.
8. From the Shapes window, click and drag the Binary Association shape onto the design surface. Attach end 1 of the Binary Association to the Member class and end 2 to the Loan class. The Binary Association line will turn red if it is not attached properly. Right-click the Binary Association shape on the design surface and choose Properties. The UML Association Properties window will display. Change the name of the association to "Takes Out". Change the Name Reading Direction to "forward". Change End 1's multiplicity to 1 and check the IsNavigable check box. When you are finished, click OK to close the window.
9. Right-click the "Takes Out" Binary Association shape on the design surface and choose Shape Display Options. The UML Shape Display Options window displays. Under the General section, click the Name check box. Under the Suppress section, click on the First end and Second end check boxes. When finished, click OK.
10. Figure 8 shows the completed diagram, including an association between the Loan class and the Book class. For additional practice, add this association to your diagram.
This article has introduced you to using the Unified Modeling Language to model the class structure of your application. The class diagram is a great aid for modeling the attributes and operations of the classes that make up your application. The class diagram also shows how the various classes in your application associate with each other. A CASE tool such as Visio, although not necessary, is beneficial in the creation of the class diagram.
A future article will continue the study of UML and class associations, focusing on modeling class inheritance hierarchies. In addition, you will be introduced to modeling interfaces, meta classes, and utility classes, which are all commonly used in class library applications. Finally, you will experience using Visio to generate a Visual Studio .NET class library from the UML model.
The web app is agile. The REST API is agile. The testing and planning are agile. But alas, data infrastructures certainly are not. Once an application matures, changing the shape or indexing scheme of data often forces at best a top down planning exercise and at worst includes schema changes that force downtime. The time has come for a new approach that fundamentally advances the agility of distributed data infrastructures. Come learn about a new solution to the problems faced by software organ...
Sep. 3, 2015 11:00 AM EDT Reads: 130
All major researchers estimate there will be tens of billions devices - computers, smartphones, tablets, and sensors - connected to the Internet by 2020. This number will continue to grow at a rapid pace for the next several decades. With major technology companies and startups seriously embracing IoT strategies, now is the perfect time to attend @ThingsExpo, November 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA. Learn what is going on, contribute to the discussions, and e...
Sep. 3, 2015 10:48 AM EDT
U.S. companies are desperately trying to recruit and hire skilled software engineers and developers, but there is simply not enough quality talent to go around. Tiempo Development is a nearshore software development company. Our headquarters are in AZ, but we are a pioneer and leader in outsourcing to Mexico, based on our three software development centers there. We have a proven process and we are experts at providing our customers with powerful solutions. We transform ideas into reality.
Sep. 3, 2015 10:45 AM EDT Reads: 569
Advances in technology and ubiquitous connectivity have made the utilization of a dispersed workforce more common. Whether that remote team is located across the street or country, management styles/ approaches will have to be adjusted to accommodate this new dynamic. In his session at 17th Cloud Expo, Sagi Brody, Chief Technology Officer at Webair Internet Development Inc., will focus on the challenges of managing remote teams, providing real-world examples that demonstrate what works and what...
Sep. 3, 2015 10:15 AM EDT Reads: 110
Any Ops team trying to support a company in today’s cloud-connected world knows that a new way of thinking is required – one just as dramatic than the shift from Ops to DevOps. The diversity of modern operations requires teams to focus their impact on breadth vs. depth. In his session at DevOps Summit, Adam Serediuk, Director of Operations at xMatters, Inc., will discuss the strategic requirements of evolving from Ops to DevOps, and why modern Operations has begun leveraging the “NoOps” approa...
Sep. 3, 2015 10:00 AM EDT Reads: 447
Containers are not new, but renewed commitments to performance, flexibility, and agility have propelled them to the top of the agenda today. By working without the need for virtualization and its overhead, containers are seen as the perfect way to deploy apps and services across multiple clouds. Containers can handle anything from file types to operating systems and services, including microservices. What are microservices? Unlike what the name implies, microservices are not necessarily small,...
Sep. 3, 2015 10:00 AM EDT Reads: 108
SYS-CON Events announced today that Micron Technology, Inc., a global leader in advanced semiconductor systems, will exhibit at the 17th International Cloud Expo®, which will take place on November 3–5, 2015, at the Santa Clara Convention Center in Santa Clara, CA. Micron’s broad portfolio of high-performance memory technologies – including DRAM, NAND and NOR Flash – is the basis for solid state drives, modules, multichip packages and other system solutions. Backed by more than 35 years of tech...
Sep. 3, 2015 10:00 AM EDT Reads: 277
17th Cloud Expo, taking place Nov 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA, will feature technical sessions from a rock star conference faculty and the leading industry players in the world. Cloud computing is now being embraced by a majority of enterprises of all sizes. Yesterday's debate about public vs. private has transformed into the reality of hybrid cloud: a recent survey shows that 74% of enterprises have a hybrid cloud strategy. Meanwhile, 94% of enterprises ar...
Sep. 3, 2015 10:00 AM EDT Reads: 1,596
SYS-CON Events announced today that the "Second Containers & Microservices Expo" will take place November 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA. Containers and microservices have become topics of intense interest throughout the cloud developer and enterprise IT communities.
Sep. 3, 2015 09:30 AM EDT Reads: 647
DevOps Summit, taking place Nov 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA, is co-located with 17th Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry players in the world. The widespread success of cloud computing is driving the DevOps revolution in enterprise IT. Now as never before, development teams must communicate and collaborate in a dynamic, 24/7/365 environment. There is no time to wait for long development...
Sep. 3, 2015 09:00 AM EDT Reads: 1,623
Mobile, social, Big Data, and cloud have fundamentally changed the way we live. “Anytime, anywhere” access to data and information is no longer a luxury; it’s a requirement, in both our personal and professional lives. For IT organizations, this means pressure has never been greater to deliver meaningful services to the business and customers.
Sep. 3, 2015 09:00 AM EDT Reads: 844
API-Driven Digital Healthcare Solution By @AkanaInc | @DevOpsSummit #API #IoT #DevOps #Microservices
Akana has announced the availability of the new Akana Healthcare Solution. The API-driven solution helps healthcare organizations accelerate their transition to being secure, digitally interoperable businesses. It leverages the Health Level Seven International Fast Healthcare Interoperability Resources (HL7 FHIR) standard to enable broader business use of medical data. Akana developed the Healthcare Solution in response to healthcare businesses that want to increase electronic, multi-device acce...
Sep. 3, 2015 08:30 AM EDT Reads: 314
Enterprises can achieve rigorous IT security as well as improved DevOps practices and Cloud economics by taking a new, cloud-native approach to application delivery. Because the attack surface for cloud applications is dramatically different than for highly controlled data centers, a disciplined and multi-layered approach that spans all of your processes, staff, vendors and technologies is required. This may sound expensive and time consuming to achieve as you plan how to move selected applicati...
Sep. 3, 2015 07:30 AM EDT Reads: 127
Red Hat is investing in Tesora, the number one contributor to OpenStack Trove Database as a Service (DBaaS) also ranked among the top 20 companies contributing to OpenStack overall. Tesora, the company bringing OpenStack Trove Database as a Service (DBaaS) to the enterprise, has announced that Red Hat and others have invested in the company as a part of Tesora's latest funding round. The funding agreement expands on the ongoing collaboration between Tesora and Red Hat, which dates back to Febr...
Sep. 3, 2015 07:30 AM EDT Reads: 417
In their Live Hack” presentation at 17th Cloud Expo, Stephen Coty and Paul Fletcher, Chief Security Evangelists at Alert Logic, will provide the audience with a chance to see a live demonstration of the common tools cyber attackers use to attack cloud and traditional IT systems. This “Live Hack” uses open source attack tools that are free and available for download by anybody. Attendees will learn where to find and how to operate these tools for the purpose of testing their own IT infrastructu...
Sep. 3, 2015 06:30 AM EDT Reads: 505
With major technology companies and startups seriously embracing IoT strategies, now is the perfect time to attend @ThingsExpo in Silicon Valley. Learn what is going on, contribute to the discussions, and ensure that your enterprise is as "IoT-Ready" as it can be! Internet of @ThingsExpo, taking place Nov 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA, is co-located with 17th Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading in...
Sep. 3, 2015 05:15 AM EDT Reads: 2,022
The 3rd International WebRTC Summit, to be held Nov. 4–6, 2014, at the Santa Clara Convention Center in Santa Clara, CA, announces that its Call for Papers is now open. Topics include all aspects of improving IT delivery by eliminating waste through automated business models leveraging cloud technologies. WebRTC Summit is co-located with 15th International Cloud Expo, 6th International Big Data Expo, 3rd International DevOps Summit and 2nd Internet of @ThingsExpo. WebRTC (Web-based Real-Time Com...
Sep. 3, 2015 05:00 AM EDT Reads: 1,594
Organizations from small to large are increasingly adopting cloud solutions to deliver essential business services at a much lower cost. According to cyber security experts, the frequency and severity of cyber-attacks are on the rise, causing alarm to businesses and customers across a variety of industries. To defend against exploits like these, a company must adopt a comprehensive security defense strategy that is designed for their business. In 2015, organizations such as United Airlines, Sony...
Sep. 3, 2015 04:45 AM EDT Reads: 526
Through WebRTC, audio and video communications are being embedded more easily than ever into applications, helping carriers, enterprises and independent software vendors deliver greater functionality to their end users. With today’s business world increasingly focused on outcomes, users’ growing calls for ease of use, and businesses craving smarter, tighter integration, what’s the next step in delivering a richer, more immersive experience? That richer, more fully integrated experience comes ab...
Sep. 3, 2015 04:00 AM EDT Reads: 735
The 17th International Cloud Expo has announced that its Call for Papers is open. 17th International Cloud Expo, to be held November 3-5, 2015, at the Santa Clara Convention Center in Santa Clara, CA, brings together Cloud Computing, APM, APIs, Microservices, Security, Big Data, Internet of Things, DevOps and WebRTC to one location. With cloud computing driving a higher percentage of enterprise IT budgets every year, it becomes increasingly important to plant your flag in this fast-expanding bu...
Sep. 3, 2015 02:30 AM EDT Reads: 1,688