C# Programming: From Problem Analysis to Program Design1 10 Advanced Object-Oriented Programming Features C# Programming: From Problem Analysis to Program.

Slides:



Advertisements
Similar presentations
OO Programming in Java Objectives for today: Overriding the toString() method Polymorphism & Dynamic Binding Interfaces Packages and Class Path.
Advertisements

Module 8 “Polymorphism and Inheritance”. Outline Understanding Inheritance Inheritance Diagrams Constructors in Derived Classes Type Compatibility Polymorphism.
Inheritance Inheritance Reserved word protected Reserved word super
Programming Based on Events
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
C# Programming: From Problem Analysis to Program Design1 Creating Your Own Classes C# Programming: From Problem Analysis to Program Design 3rd Edition.
1 Chapter 6 Inheritance, Interfaces, and Abstract Classes.
Advanced Object-Oriented Programming Features
Aalborg Media Lab 23-Jun-15 Inheritance Lecture 10 Chapter 8.
C# Programming: From Problem Analysis to Program Design1 2 Your First C# Program C# Programming: From Problem Analysis to Program Design 2 nd Edition.
C# Programming: From Problem Analysis to Program Design1 Advanced Object-Oriented Programming Features C# Programming: From Problem Analysis to Program.
Introduction to Computing and Programming
C# Programming: From Problem Analysis to Program Design1 2 Your First C# Program.
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
ASP.NET Programming with C# and SQL Server First Edition
Chapter 13: Object-Oriented Programming
Chapter 10 Classes Continued
OOP in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
1 An Introduction to Visual Basic Objectives Explain the history of programming languages Define the terminology used in object-oriented programming.
DT265-2 Object Oriented Software Development 2 Lecture 3 : Windows Programming Lecturer Pat Browne
1 Chapter One A First Program Using C#. 2 Objectives Learn about programming tasks Learn object-oriented programming concepts Learn about the C# programming.
A First Program Using C#
Chapter 12: Adding Functionality to Your Classes.
C++ Object Oriented 1. Class and Object The main purpose of C++ programming is to add object orientation to the C programming language and classes are.
Microsoft Visual Basic 2005: Reloaded Second Edition
An Object-Oriented Approach to Programming Logic and Design
Introduction to Object Oriented Programming. Object Oriented Programming Technique used to develop programs revolving around the real world entities In.
Programming Languages and Paradigms Object-Oriented Programming (Part II)
Chapter 6 OOP: Creating Object-Oriented Programs Programming in C#.NET © 2003 by The McGraw-Hill Companies, Inc. All rights reserved.
Inheritance in the Java programming language J. W. Rider.
Tuc Goodwin  Object and Component-Oriented Programming  Classes in C#  Scope and Accessibility  Methods and Properties  Nested.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 13 Introduction to Classes.
More on Hierarchies 1. When an object of a subclass is instantiated, is memory allocated for only the data members of the subclass or also for the members.
Data Structures Using C++ 2E1 Inheritance An “is-a” relationship –Example: “every employee is a person” Allows new class creation from existing classes.
1 Chapter Nine Using GUI Objects and the Visual Studio IDE.
Object Oriented Software Development
11/23/2015Assoc. Prof. Stoyan Bonev1 COS240 O-O Languages AUBG, COS dept Lecture 35 Title: C# vs. Java Inheritance & Polymorphism Reference: COS240 Syllabus.
C# Programming: From Problem Analysis to Program Design1 10 Advanced Object-Oriented Programming Features C# Programming: From Problem Analysis to Program.
Microsoft Visual Basic 2008 CHAPTER ELEVEN Multiple Classes and Inheritance.
8. Inheritance “Is-a” Relationship. Topics Creating Subclasses Overriding Methods Class Hierarchies Abstract Class Inheritance and GUIs The Timer Class.
Inheritance. Inheritance is a fundamental object-oriented design technique used to create and organize reusable classes Chapter 8 focuses on: deriving.
1.
Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.
Object Oriented Programming
Chapter 10: Introduction to Inheritance. Objectives Learn about the concept of inheritance Extend classes Override superclass methods Call constructors.
Introduction to Object-Oriented Programming Lesson 2.
Inheritance and Class Hierarchies Chapter 3. Chapter 3: Inheritance and Class Hierarchies2 Chapter Objectives To understand inheritance and how it facilitates.
Java Programming, Second Edition Chapter Twelve Advanced Inheritance Concepts.
Chapter 11: Advanced Inheritance Concepts. Objectives Create and use abstract classes Use dynamic method binding Create arrays of subclass objects Use.
Classes, Interfaces and Packages
Object orientation and Packaging in Java Object Orientation and Packaging Introduction: After completing this chapter, you will be able to identify.
1 C# - Inheritance and Polymorphism. 2 1.Inheritance 2.Implementing Inheritance in C# 3.Constructor calls in Inheritance 4.Protected Access Modifier 5.The.
Author: DoanNX Time: 45’.  OOP concepts  OOP in Java.
POLYMORPHISM Chapter 6. Chapter Polymorphism  Polymorphism concept  Abstract classes and methods  Method overriding  Concrete sub classes and.
 Description of Inheritance  Base Class Object  Subclass, Subtype, and Substitutability  Forms of Inheritance  Modifiers and Inheritance  The Benefits.
C# Programming: From Problem Analysis to Program Design1 Creating Your Own Classes C# Programming: From Problem Analysis to Program Design 4th Edition.
Java Programming: Guided Learning with Early Objects Chapter 9 Inheritance and Polymorphism.
Creating Your Own Classes
INF230 Basics in C# Programming
Advanced Object-Oriented Programming Features
Inheritance and Polymorphism
Inheritance & Polymorphism Reference: COS240 Syllabus
Advanced Object-Oriented Programming Features
Object-Oriented Programming
Advanced Object-Oriented Programming Features
C# Programming: From Problem Analysis to Program Design
Java Inheritance.
How to organize and document your classes
CIS 199 Final Review.
Presentation transcript:

C# Programming: From Problem Analysis to Program Design1 10 Advanced Object-Oriented Programming Features C# Programming: From Problem Analysis to Program Design 2 nd Edition

C# Programming: From Problem Analysis to Program Design2 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 Design3 Chapter Objectives ( continued ) 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 Work through a programming example that illustrates the chapter’s concepts

C# Programming: From Problem Analysis to Program Design4 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 Design5 Component-Based Development Figure 10-1 Component-based development

C# Programming: From Problem Analysis to Program Design6 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 Design7 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 associated with containment or aggregation

C# Programming: From Problem Analysis to Program Design8 Inheriting from the Object Class Every object inherits four methods as long as reference to the System namespace included Figure 10-2 Methods inherited from an object

C# Programming: From Problem Analysis to Program Design9 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 10-3 Derived class

C# Programming: From Problem Analysis to Program Design10 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 Design11 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 10-4 ToString( ) signature

C# Programming: From Problem Analysis to Program Design12 Overriding Methods ( continued ) Example of polymorphism –ToString( ) method can have many different definitions –ToString( ) uses the virtual modifier implying 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 Design13 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 Design14 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 Design15 Relationship Between the Person and Student Classes Figure 10-5 Inheritance class diagram

C# Programming: From Problem Analysis to Program Design16 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 Design17 Using Visual Studio to Create DLL Files Figure 10-6 Creating a DLL component

C# Programming: From Problem Analysis to Program Design18 Build Instead of Run to Create DLL Create the parent class first in order to use IntelliSense Create the subclass class in same way as usual, except Build instead of Run the project to create the DLL Figure 10-7 Attempting to run a class library file

C# Programming: From Problem Analysis to Program Design19 Add Reference to Base Class Figure 10-8 Adding a reference to a DLL One of the first things to do is Add a Reference to the Parent DLL

C# Programming: From Problem Analysis to Program Design20 Add Reference to Base Class ( continued ) Figure 10-9 Add Reference dialog box Use Browse button to locate DLL

C# Programming: From Problem Analysis to Program Design21 Add Reference to Base Class ( continued ) Figure Locating the Person.dll component

C# Programming: From Problem Analysis to Program Design22 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 Namespace reference error

C# Programming: From Problem Analysis to Program Design23 Adding a New Using Statement ( continued ) To avoid error, could type: public class 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 Notice fully qualified name

C# Programming: From Problem Analysis to Program Design24 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 objects of the component type(s) Use members of the derived, base, or referenced classes

C# Programming: From Problem Analysis to Program Design25 Creating a Client Application To Use the DLL ( continued ) Figure DLLs referenced in the PresentationGUI class

C# Programming: From Problem Analysis to Program Design26 Creating a Client Application To Use the DLL ( continued ) Figure PresentationGUI output referencing two DLLs

C# Programming: From Problem Analysis to Program Design27 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 Design28 ILDASM to View the Assembly Figure Student.dll assembly from ILDASM Data fields.ctors are constructors Properties converted to methods IL code for the method

C# Programming: From Problem Analysis to Program Design29 Abstract Classes Used to prohibit other classes from instantiating objects of the base class Still inherit characteristics from base class in subclasses Base class can have data and method members [access modifier] abstract class ClassIdentifier { } // Base class

C# Programming: From Problem Analysis to Program Design30 Abstract Methods Only permitted in abstract classes Method has no body –Implementation details of the method are left up to classes derived from the base abstract class [access modifier] abstract returnType MethodIdentifier([parameter list]) ; // No { } included Declaration for abstract method ends with semicolon; NO method body or curly braces

C# Programming: From Problem Analysis to Program Design31 Abstract Methods ( continued ) Every class that derives from the abstract class must provide implementation details –Sign a contract that details how to implement its abstract methods –Syntax error if you use the keyword static or virtual when defining an abstract method No additional special keywords are used when a new class is defined to inherit from the abstract base class

C# Programming: From Problem Analysis to Program Design32 Partial Classes Break class up into two or more files –Each file uses partial class designation New features of C# 2.0 Used by Visual Studio for Windows applications –Code to initialize controls and set properties is placed in a somewhat hidden file in a region labeled “Windows Form Designer generated code” –File is created following a naming convention of “FormName.Designer.cs” or “xxx.Designer.cs” –Second file stores programmer code

C# Programming: From Problem Analysis to Program Design33 Interfaces All.NET languages only support single inheritance Think of an interface as a class that is totally abstract; all methods are abstract –Abstract classes can have abstract and regular methods –Implementing interface agrees to define details for all of the interface’s methods Classes can implement any number of interfaces –Only inherit from one class, abstract or nonabstract

C# Programming: From Problem Analysis to Program Design34 Interfaces ( continued ) General form [modifier] interface InterfaceIdentifier { // members - no access modifiers are used } Members can be methods, properties, or events –No implementations details are provided for any of its members

C# Programming: From Problem Analysis to Program Design35 Defining an Interface Can be defined as members of a namespace or class or by compiling to a DLL Easy approach is to put the interface in a separate project –Use the Class Library template Unlike abstract classes, it is not necessary to use the abstract keyword with methods –Because all methods are abstract

C# Programming: From Problem Analysis to Program Design36 Defining an Interface ( continued ) Build the interface DLL using Build option from Build menu bar

C# Programming: From Problem Analysis to Program Design37 Implement the Interface Follow the same steps as with the Person and Student DLLs –Add a reference to the file ending in.dll –Type a using statement Heading for the class definition specifies base class and one or more interfaces following the colon (:) [modifier] class ClassIdentifier : identifier [, identifier] Base class comes first

C# Programming: From Problem Analysis to Program Design38 Implement the Interface: PresentationGUI Application Figure PresentationGUI output using interface methods

C# Programming: From Problem Analysis to Program Design39.NET Framework Interfaces Play an important role in the.NET Framework –Collection classes such as Array class and HashTable class implement a number of interfaces

C# Programming: From Problem Analysis to Program Design40.NET Framework Interfaces ( continued ).NET Array class is an abstract class –Implements several interfaces (ICloneable; IList; ICollection; and IEnumerable) –Includes methods for manipulating arrays, such as: Iterating through the elements Searching by adding elements to the array Copying, cloning, clearing, and removing elements from the array Reversing elements Sorting

C# Programming: From Problem Analysis to Program Design41 NET Framework Interfaces ( continued ) HashTable is not abstract –Implements a number of interfaces public class Hashtable : IDictionary, ICollection, IEnumerable, ISerializable, IDeserializationCallback, ICloneable Implements the IDeserializationCallback interface Explore the documentation for these classes and interfaces

C# Programming: From Problem Analysis to Program Design42 Polymorphism Ability for classes to provide different implementations of methods called by the same name –ToString( ) method Dynamic binding –Determines which method to call at run time based on which object calls the method

C# Programming: From Problem Analysis to Program Design43 Polymorphic Programming in.NET Multiple classes can implement the same interface, each providing different implementation details for its abstract methods –“Black box” concept Abstract classes, classes that derive from them, are forced to include implementation details for any abstract method

C# Programming: From Problem Analysis to Program Design44 Generics Reduce the need to rewrite algorithms for each data type Create generic classes, delegates, interfaces, and methods Identify where data will change in the code segment by putting a placeholder in the code for the type parameters

C# Programming: From Problem Analysis to Program Design45 Generic Classes Defined by inserting an identifier between left and right brackets on the class definition line Example public class GenericClass { public T dataMember; } – //To instantiate an object, replace the T with data type GenericClass anIdentifer = new GenericClass ( );

C# Programming: From Problem Analysis to Program Design46 Generic Methods Similar to defining a generic class Insert identifier between left and right brackets on the method definition line to indicate it is a generic method Example public void SwapData (ref T first, ref T second) { T temp; temp = first; first = second; second = temp; } //To call the method, specify the type following method name SwapData (ref firstValue, ref secondValue);

C# Programming: From Problem Analysis to Program Design47 StudentGov Application Example Figure Problem specification for StudentGov example

C# Programming: From Problem Analysis to Program Design48 StudentGov Application Example ( continued )

C# Programming: From Problem Analysis to Program Design49 StudentGov Application Example ( continued ) Figure Prototype for StudentGov example

C# Programming: From Problem Analysis to Program Design50 StudentGov Application Example ( continued ) Figure Class diagrams for StudentGov example

C# Programming: From Problem Analysis to Program Design51 StudentGov Application Example ( continued ) Figure References added to StudentGov example

C# Programming: From Problem Analysis to Program Design52 Properties: StudentGov Application

C# Programming: From Problem Analysis to Program Design53 Properties: StudentGov Application ( continued )

C# Programming: From Problem Analysis to Program Design54 StudentGov Application Example ( continued ) Figure Setting the StartUp Project

C# Programming: From Problem Analysis to Program Design55 StudentGov Application Example ( continued ) Figure Part of the PresentationGUI assembly

C# Programming: From Problem Analysis to Program Design56 StudentGov Application Example ( continued ) Figure Output from StudentGov example

C# Programming: From Problem Analysis to Program Design57 Chapter Summary Major features of object-oriented languages –Abstraction –Encapsulation –Inheritance –Polymorphism Multitier applications using component-based development methods

C# Programming: From Problem Analysis to Program Design58 Chapter Summary ( continued ) Use inheritance to extend the functionality of user- defined classes Abstract classes –Abstract methods Partial classes Interfaces

C# Programming: From Problem Analysis to Program Design59 Chapter Summary ( continued ) Why polymorphic programming? Generics –Generic Classes –Generic Methods