Document

advertisement
11
Advanced
Object-Oriented
Programming
Features
C# Programming: From Problem Analysis to Program Design
3rd Edition
C# Programming: From Problem Analysis to Program Design
1
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 userdefined classes
• Create abstract classes that include abstract
methods
C# Programming: From Problem Analysis to Program Design
2
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
3
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
4
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
5
Component-Based Development
Figure 11-1 Component-based development
C# Programming: From Problem Analysis to Program Design
6
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
7
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
8
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
9
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)
Derived
class
Base
class
Figure 11-3 Derived class
C# Programming: From Problem Analysis to Program Design
10
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
11
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
12
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
13
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
14
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
return base.GetSleepAmt( )
// Calls GetSleepAmt( ) in
// parent class
C# Programming: From Problem Analysis to Program Design
15
Relationship
between the
Person and
Student
Classes
Figure 11-5 Inheritance class diagram
C# Programming: From Problem Analysis to Program Design
16
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
17
Using Visual Studio to Create DLL Files
Figure 11-6 Creating a DLL component
C# Programming: From Problem Analysis to Program Design
18
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
19
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
20
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
21
Add Reference to Base Class
(continued)
Figure 11-10 Locating the Person.dll component
C# Programming: From Problem Analysis to Program Design
22
Adding a New Using Statement
• In the subclass class, if you simply type the
following, you receive an error message
public class Student : Person
Figure 11-11 Namespace reference error
C# Programming: From Problem Analysis to Program Design
23
Adding a New Using Statement
(continued)
Notice
• To avoid error, could type:
public class Student : PersonNamespace.Person
fully
qualified
name
• 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
24
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
25
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
26
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
27
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
28
ILDASM to View the Assembly
Data
fields
.ctors are
constructors
IL code for
the method
Properties converted
to methods
Figure 11-14 Student.dll assembly from ILDASM
C# Programming: From Problem Analysis to Program Design
29
Download