Welcome!

Microsoft Cloud Authors: Yeshim Deniz, Janakiram MSV, Andreas Grabner, Stackify Blog, Liz McMillan

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
SYS-CON Events announced today that DXWorldExpo has been named “Global Sponsor” 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. Digital Transformation is the key issue driving the global enterprise IT business. Digital Transformation is most prominent among Global 2000 enterprises and government institutions.
SYS-CON Events announced today that Datera, that offers a radically new data management architecture, 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. Datera is transforming the traditional datacenter model through modern cloud simplicity. The technology industry is at another major inflection point. The rise of mobile, the Internet of Things, data storage and Big...
"We provide IoT solutions. We provide the most compatible solutions for many applications. Our solutions are industry agnostic and also protocol agnostic," explained Richard Han, Head of Sales and Marketing and Engineering at Systena America, in this SYS-CON.tv interview at @ThingsExpo, held June 6-8, 2017, at the Javits Center in New York City, NY.
"We've been engaging with a lot of customers including Panasonic, we've been involved with Cisco and now we're working with the U.S. government - the Department of Homeland Security," explained Peter Jung, Chief Product Officer at Pulzze Systems, in this SYS-CON.tv interview at @ThingsExpo, held June 6-8, 2017, at the Javits Center in New York City, NY.
SYS-CON Events announced today that Calligo, an innovative cloud service provider offering mid-sized companies the highest levels of data privacy and security, has been named "Bronze Sponsor" 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. Calligo offers unparalleled application performance guarantees, commercial flexibility and a personalised support service from its globally located cloud plat...
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...
"The Striim platform is a full end-to-end streaming integration and analytics platform that is middleware that covers a lot of different use cases," explained Steve Wilkes, Founder and CTO at Striim, in this SYS-CON.tv interview at 20th Cloud Expo, held June 6-8, 2017, at the Javits Center in New York City, NY.
"We are focused on SAP running in the clouds, to make this super easy because we believe in the tremendous value of those powerful worlds - SAP and the cloud," explained Frank Stienhans, CTO of Ocean9, Inc., in this SYS-CON.tv interview at 20th Cloud Expo, held June 6-8, 2017, at the Javits Center in New York City, NY.
DX World EXPO, LLC., a Lighthouse Point, Florida-based startup trade show producer and the creator of "DXWorldEXPO® - Digital Transformation Conference & Expo" has announced its executive management team. The team is headed by Levent Selamoglu, who has been named CEO. "Now is the time for a truly global DX event, to bring together the leading minds from the technology world in a conversation about Digital Transformation," he said in making the announcement.
"MobiDev is a Ukraine-based software development company. We do mobile development, and we're specialists in that. But we do full stack software development for entrepreneurs, for emerging companies, and for enterprise ventures," explained Alan Winters, U.S. Head of Business Development at MobiDev, in this SYS-CON.tv interview at 20th Cloud Expo, held June 6-8, 2017, at the Javits Center in New York City, NY.
While the focus and objectives of IoT initiatives are many and diverse, they all share a few common attributes, and one of those is the network. Commonly, that network includes the Internet, over which there isn't any real control for performance and availability. Or is there? The current state of the art for Big Data analytics, as applied to network telemetry, offers new opportunities for improving and assuring operational integrity. In his session at @ThingsExpo, Jim Frey, Vice President of S...
SYS-CON Events announced today that DXWorldExpo has been named “Global Sponsor” 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. Digital Transformation is the key issue driving the global enterprise IT business. Digital Transformation is most prominent among Global 2000 enterprises and government institutions.
In his opening keynote at 20th Cloud Expo, Michael Maximilien, Research Scientist, Architect, and Engineer at IBM, discussed the full potential of the cloud and social data requires artificial intelligence. By mixing Cloud Foundry and the rich set of Watson services, IBM's Bluemix is the best cloud operating system for enterprises today, providing rapid development and deployment of applications that can take advantage of the rich catalog of Watson services to help drive insights from the vast t...
SYS-CON Events announced today that EnterpriseTech has been named “Media Sponsor” 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. EnterpriseTech is a professional resource for news and intelligence covering the migration of high-end technologies into the enterprise and business-IT industry, with a special focus on high-tech solutions in new product development, workload management, increased effic...
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 Cloud Academy named "Bronze Sponsor" of 21st International Cloud Expo which will take place October 31 - November 2, 2017 at the Santa Clara Convention Center in Santa Clara, CA. Cloud Academy is the industry’s most innovative, vendor-neutral cloud technology training platform. Cloud Academy provides continuous learning solutions for individuals and enterprise teams for Amazon Web Services, Microsoft Azure, Google Cloud Platform, and the most popular cloud com...
SYS-CON Events announced today that Cloudistics, an on-premises cloud computing company, has been named “Bronze Sponsor” 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. Cloudistics delivers a complete public cloud experience with composable on-premises infrastructures to medium and large enterprises. Its software-defined technology natively converges network, storage, compute, virtualization, and ...
SYS-CON Events announced today that CHEETAH Training & Innovation 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. CHEETAH Training & Innovation is a cloud consulting and IT training firm specializing in improving clients cloud strategies and infrastructures for medium to large companies.
SYS-CON Events announced today that Datanami has been named “Media Sponsor” 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. Datanami is a communication channel dedicated to providing insight, analysis and up-to-the-minute information about emerging trends and solutions in Big Data. The publication sheds light on all cutting-edge technologies including networking, storage and applications, and thei...
The current age of digital transformation means that IT organizations must adapt their toolset to cover all digital experiences, beyond just the end users’. Today’s businesses can no longer focus solely on the digital interactions they manage with employees or customers; they must now contend with non-traditional factors. Whether it's the power of brand to make or break a company, the need to monitor across all locations 24/7, or the ability to proactively resolve issues, companies must adapt to...