Welcome!

Microsoft Cloud Authors: Janakiram MSV, Yeshim Deniz, David H Deans, Andreas Grabner, Stackify Blog

Related Topics: Microsoft Cloud

Microsoft Cloud: Article

Modeling Class Library Structure

Modeling Class Library Structure

This article, the third in a series of articles introducing the concepts of object-oriented design and the Unified Modeling Language (UML), continues the study of modeling class structures using UML notation and the class diagram. My focus here is on the modeling of class hierarchies, which are common to most class library applications. I will use Visio to create the UML class hierarchical structure. I will also examine Visio's code generation to verify the class model against the .NET code necessary to create the library.

Modeling Class Inheritance
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.

One of the most powerful features of object-oriented programming languages is the ability to create class hierarchal structures. Using class hierarchies and inheritance allows the programmer to create base classes that encapsulate common functionality. Classes that need to incorporate the functionality simply inherit from the base class. The derived classes can then implement the base functionality as is or augment it by overriding the base class methods.

The .NET Framework contains numerous examples of inheritance. For example, when creating controls, certain functionality is required for all controls hosted on a form. A base Control class encapsulates this functionality. For example, the Control class defines the BackColor property and the BringToFront method. A ButtonBase class inherits from the Control class and encapsulates functionality required by all types of button controls. The Button, CheckBox, and RadioButton inherit from the ButtonBase class and include specific functionality required for each control.

When modeling classes using UML, an arrow points from the derived class to the base class. Figure 1 demonstrates how the button control class hierarchy is represented in a UML class diagram. It is worth noting that .NET supports only single inheritance. This means that a class can inherit directly from only one base class. A single base class can, however, be inherited by multiple derived classes.

When constructing base classes, decisions have to be made as to how the class will be utilized in the class library. Will clients need to instantiate and work with a base class directly, or will its functionality be accessible only through derived classes (an abstract base class)? Are the properties and methods exposed to classes (public scope), derived classes (protected scope), or not exposed at all (private scope)? Do we force derived classes to utilize the implementation of the properties and methods or give them the ability to alter the body of a property or method (Overridable)? Should clients of the class library be able to derive classes from library classes, or should we limit the inheritance by sealing the derived class (NotInheritable)?

As you build larger and more complex libraries that programmers throughout your organization utilize, accurately modeling the structure of your libraries becomes crucial. Additionally, programmers need documentation outlining the structure and functionality of the class library to effectively utilize and incorporate it in their programs. This is where the UML class diagram fits in. It is an excellent tool for both modeling and documenting class libraries.

Using Visio to Model Inheritance in a Class Diagram
The following activities will introduce you to the process of modeling class hierarchies using a UML class diagram and Visio.
1.   Start up Visio. From the File menu, choose New ­> Software ­> UML Model Diagram.
2.   Locate the Shapes window on the left side of the screen. This window includes a tab for the common UML diagrams. Select the UML Static Structure tab (see Figure 2).
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 3). Change the name to "BaseClass". Add another class, named "DerivedClass", to your diagram.
4.   Right-click the BaseClass shape on the design surface and choose Properties. The three check boxes IsRoot, IsLeaf, and IsAbstract determine how the class functions in the class hierarchy. By checking the IsRoot check box, you are restricting the class from inheriting from other classes. Checking IsAbstract restricts the class from being instantiated, and forces clients to instantiate a derived class to access the functionality of the class. Checking IsLeaf indicates that the class is sealed. Sealed classes are noninheritable and help to limit the depth of an inheritance chain.
5.   Check the IsAbstract check box and select the Code Generation Options in the Categories list box located on the left side of the UML Class Properties window. Select Visual Basic in the Target Language dropdown. Select default in the Implementation dropdown. Click on the Preview code button at the bottom of the window. In the Code Preview window notice that the keyword MustInherit is contained in the class definition code. This restricts the class from being instantiated. Close the Code Preview window.
6.   In the UML Class Properties window, check the IsRoot check box. This restricts the base class from inheriting from other classes. Note: This does not correlate to a keyword for code generation and the restriction is only enforced in your Visio diagram.
7.   In the UML Class Properties window, select Attributes in the Categories list box. Click the New button to create a new attribute. Change the Type to VB::Integer and Visibility to private. Add another attribute of type VB::String and a visibility of protected. Private scope means it is accessible only from within the class. Protected scoping is accessible from derived classes. Public scoping is accessible from any class.
8.   In the UML Class Properties window, select Operations in the Categories list box. Click the New button to create a new operation. Change the ReturnType to VB::Boolean and the Visibility to protected. Mark the operation as overridable by checking the Polymorphic check box. Select the Code Generation Options in the Categories list box located on the left side of the UML Class Properties window. Select Visual Basic in the Target Language dropdown. Select default in the Implementation dropdown. Click on the Preview code button at the bottom of the window. In the Code Preview window notice that the keyword Overridable is contained in the operation's definition code. This allows inherited classes to alter the method implementation if needed. Close the Code Preview window.
9.   In the Shapes window, located on the left side of the screen, select the UML Static Structure tab (see Figure 2). Click and drag the Generalizes shape on the design surface. Attach the tail of the arrow (Generalizes shape) to the DerivedClass shape. Attach the head to the BaseClass shape (see Figure 4).
10.   Right-click the DerivedClass shape on the design surface and choose Properties. Select the Code Generation Options in the Categories list box located on the left side of the UML Class Properties window. Select Visual Basic in the Target Language dropdown. Select default in the Implementation dropdown. Click on the Preview code button at the bottom of the window. In the Code Preview window notice that the code includes an Inherits statement. Close the Code Preview window.
11.   Select Class in the Categories list box located on the left side of the UML Class Properties window. Check the IsLeaf check box. Click on the Code Generation Options and launch the Code Preview window. Notice that the keyword NotInheritable has been added to the class definition. This seals the class so that other classes cannot inherit from it. Close the Code Preview window.
12.   Select Operations in the Categories list box located on the left side of the UML Class Properties window. Click on the Methods button on the right side of the window. In the Operation name dropdown you can choose a base class operation to override. Choose BaseClass::operation1. To override the method implemented in the base class, click the Has Method check box. Click OK to close the UML Method Properties window. Preview the code for the class. A function is added to the code marked with the Overrides keyword. Close the Code Preview UML Class Properties windows.
13.   Open the UML Class Properties window for the BaseClass. Select Operations in the Categories list box located on the left side of the UML Class Properties window. Create a new operation and launch the properties for the operation. Select Method in the Categories list box. Uncheck the Has method check box to indicate the method is abstract. Click on the Code Generation Options and launch the Code Preview window. Notice that the operation is marked with the keyword MustOveride. Close the Code Preview window and the UML Class Properties window.
14.   Using the process outlined in Step 12, override the abstract operation you just created in the DerivedClass. Figure 5 shows the completed diagram.

Review
As you develop complex class structures and interactions in your class libraries, the importance of accurately modeling and documenting the class library structure becomes increasingly crucial. A CASE tool such as Visio makes this complex task more manageable. This article demonstrated the modeling of class hierarchies using UML and Visio. As you work with Visio to create your class models, take the time to explore some of the features that this article did not cover. In particular, you may want to investigate modeling shared classes, interfaces, and utility classes, all of which are common to object-oriented applications.

This concludes my series of articles on the modeling of the static (organizational) structure of an object-oriented application. Along with modeling the static structure of an application, it is equally important to model the dynamic (behavioral) aspects of your object-oriented applications. UML includes a robust set of notations and models for modeling the behavioral interactions between classes. These include the sequence diagram, collaboration diagram, and activity diagram. Look for a future series of articles that will introduce you to the issues involved in modeling the dynamic interactions that take place between the classes of an object-oriented application.

More Stories By Dan Clark

Dan is a Microsoft Certified Trainer, Microsoft Certified Solution Developer, and a Microsoft Certified Database Administrator. For the past seven years he has been developing applications and training others how to develop applications using Microsoft technologies. Dan has been developing and training Microsoft's .NET technologies since the early betas. He has recently authored the book "An Introduction to Object-Oriented Programming with Visual Basic .NET," published by Apress.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


@ThingsExpo Stories
DevOps at Cloud Expo – being held October 31 - November 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA – announces that its Call for Papers is open. Born out of proven success in agile development, cloud computing, and process automation, DevOps is a macro trend you cannot afford to miss. From showcase success stories from early adopters and web-scale businesses, DevOps is expanding to organizations of all sizes, including the world's largest enterprises – and delivering real r...
While some developers care passionately about how data centers and clouds are architected, for most, it is only the end result that matters. To the majority of companies, technology exists to solve a business problem, and only delivers value when it is solving that problem. 2017 brings the mainstream adoption of containers for production workloads. In his session at 21st Cloud Expo, Ben McCormack, VP of Operations at Evernote, will discuss how data centers of the future will be managed, how th...
SYS-CON Events announced today that Massive Networks, that helps your business operate seamlessly with fast, reliable, and secure internet and network solutions, has been named "Exhibitor" of SYS-CON's 21st International Cloud Expo ®, which will take place on Oct 31 - Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. As a premier telecommunications provider, Massive Networks is headquartered out of Louisville, Colorado. With years of experience under their belt, their team of...
SYS-CON Events announced today that Mobile Create USA will exhibit at the Japan External Trade Organization (JETRO) Pavilion at SYS-CON's 21st International Cloud Expo®, which will take place on Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. Mobile Create USA Inc. is an MVNO-based business model that uses portable communication devices and cellular-based infrastructure in the development, sales, operation and mobile communications systems incorporating GPS capabi...
SYS-CON Events announced today that MIRAI Inc. will exhibit at the Japan External Trade Organization (JETRO) Pavilion at SYS-CON's 21st International Cloud Expo®, which will take place on Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. MIRAI Inc. are IT consultants from the public sector whose mission is to solve social issues by technology and innovation and to create a meaningful future for people.
SYS-CON Events announced today that Keisoku Research Consultant Co. will exhibit at the Japan External Trade Organization (JETRO) Pavilion at SYS-CON's 21st International Cloud Expo®, which will take place on Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. Keisoku Research Consultant, Co. offers research and consulting in a wide range of civil engineering-related fields from information construction to preservation of cultural properties. For more information, vi...
SYS-CON Events announced today that Interface Corporation will exhibit at the Japan External Trade Organization (JETRO) Pavilion at SYS-CON's 21st International Cloud Expo®, which will take place on Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. Interface Corporation is a company developing, manufacturing and marketing high quality and wide variety of industrial computers and interface modules such as PCIs and PCI express. For more information, visit http://www.i...
SYS-CON Events announced today that Fusic will exhibit at the Japan External Trade Organization (JETRO) Pavilion at SYS-CON's 21st International Cloud Expo®, which will take place on Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. Fusic Co. provides mocks as virtual IoT devices. You can customize mocks, and get any amount of data at any time in your test. For more information, visit https://fusic.co.jp/english/.
SYS-CON Events announced today that TMC has been named “Media Sponsor” of SYS-CON's 21st International Cloud Expo and Big Data at Cloud Expo, which will take place on Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. Global buyers rely on TMC’s content-driven marketplaces to make purchase decisions and navigate markets. Learn how we can help you reach your marketing goals.
SYS-CON Events announced today that Enroute Lab will exhibit at the Japan External Trade Organization (JETRO) Pavilion at SYS-CON's 21st International Cloud Expo®, which will take place on Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. Enroute Lab is an industrial design, research and development company of unmanned robotic vehicle system. For more information, please visit http://elab.co.jp/.
There is huge complexity in implementing a successful digital business that requires efficient on-premise and cloud back-end infrastructure, IT and Internet of Things (IoT) data, analytics, Machine Learning, Artificial Intelligence (AI) and Digital Applications. In the data center alone, there are physical and virtual infrastructures, multiple operating systems, multiple applications and new and emerging business and technological paradigms such as cloud computing and XaaS. And then there are pe...
SYS-CON Events announced today that Daiya Industry will exhibit at the Japan External Trade Organization (JETRO) Pavilion at SYS-CON's 21st International Cloud Expo®, which will take place on Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. Daiya Industry specializes in orthotic support systems and assistive devices with pneumatic artificial muscles in order to contribute to an extended healthy life expectancy. For more information, please visit https://www.daiyak...
Real IoT production deployments running at scale are collecting sensor data from hundreds / thousands / millions of devices. The goal is to take business-critical actions on the real-time data and find insights from stored datasets. In his session at @ThingsExpo, John Walicki, Watson IoT Developer Advocate at IBM Cloud, will provide a fast-paced developer journey that follows the IoT sensor data from generation, to edge gateway, to edge analytics, to encryption, to the IBM Bluemix cloud, to Wa...
In his session at @ThingsExpo, Greg Gorman is the Director, IoT Developer Ecosystem, Watson IoT, will provide a short tutorial on Node-RED, a Node.js-based programming tool for wiring together hardware devices, APIs and online services in new and interesting ways. It provides a browser-based editor that makes it easy to wire together flows using a wide range of nodes in the palette that can be deployed to its runtime in a single-click. There is a large library of contributed nodes that help so...
With major technology companies and startups seriously embracing Cloud strategies, now is the perfect time to attend 21st Cloud Expo October 31 - November 2, 2017, at the Santa Clara Convention Center, CA, and June 12-14, 2018, at the Javits Center in New York City, NY, and learn what is going on, contribute to the discussions, and ensure that your enterprise is on the right path to Digital Transformation.
SYS-CON Events announced today that App2Cloud will exhibit at SYS-CON's 21st International Cloud Expo®, which will take place on Oct. 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. App2Cloud is an online Platform, specializing in migrating legacy applications to any Cloud Providers (AWS, Azure, Google Cloud).
Agile has finally jumped the technology shark, expanding outside the software world. Enterprises are now increasingly adopting Agile practices across their organizations in order to successfully navigate the disruptive waters that threaten to drown them. In our quest for establishing change as a core competency in our organizations, this business-centric notion of Agile is an essential component of Agile Digital Transformation. In the years since the publication of the Agile Manifesto, the conn...
WebRTC is great technology to build your own communication tools. It will be even more exciting experience it with advanced devices, such as a 360 Camera, 360 microphone, and a depth sensor camera. In his session at @ThingsExpo, Masashi Ganeko, a manager at INFOCOM Corporation, will introduce two experimental projects from his team and what they learned from them. "Shotoku Tamago" uses the robot audition software HARK to track speakers in 360 video of a remote party. "Virtual Teleport" uses a mu...
Internet of @ThingsExpo, taking place October 31 - November 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA, is co-located with 21st Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry players in the world. The Internet of Things (IoT) is the most profound change in personal and enterprise IT since the creation of the Worldwide Web more than 20 years ago. All major researchers estimate there will be tens of billions devic...
Mobile device usage has increased exponentially during the past several years, as consumers rely on handhelds for everything from news and weather to banking and purchases. What can we expect in the next few years? The way in which we interact with our devices will fundamentally change, as businesses leverage Artificial Intelligence. We already see this taking shape as businesses leverage AI for cost savings and customer responsiveness. This trend will continue, as AI is used for more sophistica...