290 likes | 464 Views
11. Advanced Object-Oriented Programming Features. C# Programming: From Problem Analysis to Program Design 3rd Edition. Chapter Objectives. Learn the major features of object-oriented languages Design and develop multitier applications using component-based development methods
E N D
11 Advanced Object-Oriented Programming Features C# Programming: From Problem Analysis to Program Design 3rd Edition C# Programming: From Problem Analysis to Program Design
Chapter Objectives • Learn the major features of object-oriented languages • Design and develop multitier applications using component-based development methods • Use inheritance to extend the functionality of user-defined classes • Create abstract classes that include abstract methods C# Programming: From Problem Analysis to Program Design
Chapter Objectives (continued) • Distinguish the differences between sealed and abstract classes • Become aware of partial classes • Design and implement interfaces • Understand why polymorphic programming is a common goal in .NET • Explore generics and learn how to create generic classes and generic methods C# Programming: From Problem Analysis to Program Design
Chapter Objectives (continued) • Investigate static versus dynamic typing and become aware of when dynamic and var types are used • Work through a programming example that illustrates the chapter’s concepts C# Programming: From Problem Analysis to Program Design
Object-Oriented Language Features • Abstraction • Abstract or identify the objects involved in the problem • Encapsulation • Packaging data and behaviors into a single unit • Inheritance • Reuse of code through extending program units • Polymorphism • Multiple implementations of the same behaviors C# Programming: From Problem Analysis to Program Design
Component-Based Development Figure 11-1 Component-based development C# Programming: From Problem Analysis to Program Design
Component-Based Development (continued) • Multitier applications • Data access tier for accessing data from text files and databases • Graphical user interface tier for user interaction • Windows • Web • Components implemented through classes in C# • Class library files with a dynamic link library (DLL) extension C# Programming: From Problem Analysis to Program Design
Inheritance • Enables you to: • Create a general class and then define specialized classes that have access to the members of the general class • Associated with an "is a" relationship • Specialized class “is a” form of the general class • Classes can also have a "has a" relationship, not associated with inheritance • "has a" relationship is associated with containment or aggregation C# Programming: From Problem Analysis to Program Design
Inheriting from the Object Class • Every object inherits four methods as long as reference to the System namespace included Figure 11-2 Methods inherited from an object C# Programming: From Problem Analysis to Program Design
Inheriting from Other .NET FCL Classes • Add functionality to programs with minimal programming • Extend System.Windows.Forms.Form class to build GUIs (Button, Label, TextBox, ListBox) Base class Derived class Figure 11-3 Derived class C# Programming: From Problem Analysis to Program Design
Creating Base Classes for Inheritance • Can define your own classes from which other classes can inherit • Base class is called the super or parent class • Data members are defined with a private access modifier • Constructors are defined with public access modifiers • Properties offer public access to data fields C# Programming: From Problem Analysis to Program Design
Overriding Methods • Replace the method defined at a higher level • Keyword override included in derived class • Base method includes virtual, abstract, or override keyword • Overriding differs from overloading a method • Overridden methods have exactly the same signature • Overloaded methods each have a different signature Figure 11-4 ToString( ) signature C# Programming: From Problem Analysis to Program Design
Overriding Methods (continued) • Example of polymorphism • ToString( ) method can have many different definitions • ToString( ) uses the virtual modifier, implying that any class can override it • Derived classes inherit from a base class • Also called subclasses or child classes • Protected access modifiers • Access only to classes that derived from them • Access to change data in the base class C# Programming: From Problem Analysis to Program Design
Calling the Base Constructor • To call the constructor for the base class, add keyword :base between the constructor heading for the subclass and the opening curly brace public Student(string id, string fname, string lname, string maj, int sId) :base (id, lname, fname) // base constructor arguments { . . . • Base constructor must have a constructor with matching signature C# Programming: From Problem Analysis to Program Design
Using Members of the Base Class • Scope • Methods defined in subclass take precedence when named the same name as member of a parent class • Can call an overridden method of the base class • Use keyword base before the method name returnbase.GetSleepAmt( ) // Calls GetSleepAmt( ) in // parent class C# Programming: From Problem Analysis to Program Design
Relationship between the Person and Student Classes Figure 11-5 Inheritance class diagram C# Programming: From Problem Analysis to Program Design
Making Stand-Alone Components • Compile class and create an assembly • Assemblies are units configured and deployed in .NET • Classes can be compiled and stored as a dynamic link library (DLL) instead of into the EXE file type • Adds a reference to the DLL • That referenced file with the .dll extension becomes part of the application’s private assembly C# Programming: From Problem Analysis to Program Design
Using Visual Studio to Create DLL Files Figure 11-6 Creating a DLL component C# Programming: From Problem Analysis to Program Design
Build Instead of Run to Create DLL • Create the parent class first in order to use IntelliSense • Create the subclass class in the same way as usual, except Build instead of Run the project to create the DLL Figure 11-7 Attempting to run a class library file C# Programming: From Problem Analysis to Program Design
Add Reference to Base Class One of the first things to do is Add a Reference to the Parent DLL Figure 11-8 Adding a reference to a DLL C# Programming: From Problem Analysis to Program Design
Add Reference to Base Class (continued) Use Browse button to locate DLL Figure 11-9 Add Reference dialog box C# Programming: From Problem Analysis to Program Design
Add Reference to Base Class (continued) Figure 11-10 Locating the Person.dll component C# Programming: From Problem Analysis to Program Design
Adding a New Using Statement • In the subclass class, if you simply type the following, you receive an error message publicclass Student : Person Figure 11-11 Namespace reference error C# Programming: From Problem Analysis to Program Design
Adding a New Using Statement (continued) Notice fully qualified name • To avoid error, could type: publicclass Student : PersonNamespace.Person • Better option is to add a using directive using PersonNamespace; // Use whatever name you // typed for the namespace for Person • After typing program statements, build the DLL from the Build option under the Build menu bar C# Programming: From Problem Analysis to Program Design
Creating a Client Application to Use the DLL • DLL components can be reused with many different applications • Two steps • Add a reference to the DLL components • Include a using statement with the namespace • Then declare an object of the component type(s) • Use members of the derived, base, or referenced classes C# Programming: From Problem Analysis to Program Design
Creating a Client Application to Use the DLL (continued) Figure 11-12 DLLs referenced in the PresentationGUI class C# Programming: From Problem Analysis to Program Design
Creating a Client Application to Use the DLL (continued) Figure 11-13 PresentationGUI output referencing two DLLs C# Programming: From Problem Analysis to Program Design
Using ILDASM to View the Assembly • (ILDASM): Intermediate Language Disassembler tool • Assembly shows the signatures of all methods, data fields, and properties • One option– display the source code as a comment in the assembly • Can be run from the command line or from within the Visual Studio IDE • Must be added as an external tool in Visual Studio C# Programming: From Problem Analysis to Program Design
ILDASM to View the Assembly .ctors are constructors IL code for the method Data fields Properties converted to methods Figure 11-14 Student.dll assembly from ILDASM C# Programming: From Problem Analysis to Program Design