- Home
- Products
- Integration
- Tutorial
- Barcode FAQ
- Purchase
- Company
ESSENTIALS OF OBJECT-ORIENTED PROGRAMMING in Visual Basic .NET
CHAPTER 1 ESSENTIALS OF OBJECT-ORIENTED PROGRAMMING QR Code Drawer In Visual Basic .NET Using Barcode encoder for .NET framework Control to generate, create Denso QR Bar Code image in VS .NET applications. www.OnBarcode.comQuick Response Code Reader In Visual Basic .NET Using Barcode reader for .NET framework Control to read, scan read, scan image in VS .NET applications. www.OnBarcode.comprivate static Animal CreateCurrentDogInstance() { DebugMgr.start( 10, "TestInheritance.CreateCurrentDogInstance"); DebugMgr.end( 10); return new EnglishBulldog(); // return new Dog(); Original version } private static void TimeProofPolymorphicInheritance() { DebugMgr.start( 10, "TestInheritance.TimeProofPolymorphicInheritance"); Animal animal = CreateCurrentDogInstance(); animal.WhatAmI(); DebugMgr.end( 10); } This time, when the method CreateCurrentDogInstance is called, the method implementation from EnglishBulldog is called, not Dog as in previous examples. This is a desired behavior, but consider the ramifications of this context. You re writing some code, and your code intends to describe all animals on the planet. But then time passes, and it s realized that the application is used mostly with dogs. At this point, the developers of the application have decided to add more functionality for dog breeds. New functionality is added, and old functionality needs to keep working as is. The implementation needs to support two functionalities, the old and the new, which share the same interface. The newly defined Dog type is called EnglishBulldog, and the new users of the application like the update. Now comes the question: do the old users who generally aren t interested in dogs get the update as well In the previous code example, the method CreateCurrentDogInstance would force all old users to get the new update, and that isn t necessarily the best result. In a software-engineering context, old features and bugs that are suddenly fixed could cause more difficulties and anomalies than the fix itself. C# solves this problem by using the new keyword. In the example in the Simple Inheritance section, the new keyword was used to indicate that a method is overriding another method. But you can also use the new keyword if you re defining new functionalities while using old methods. Using the new keyword, you could redefine the Bulldog type as follows: class EnglishBulldog : Dog { public new virtual void WhatAmI() { DebugMgr.output( 10, "I am an English Bulldog"); } } By adding the new virtual keywords, users of the Animal type get the old functionality of the Dog type. If the method CreateCurrentDogInstance is called and the Animal type is executed, the following output is generated: start (TestInheritance.TimeProofPolymorphicInheritance) start (TestInheritance.CreateCurrentDogInstance) end (TestInheritance.CreateCurrentDogInstance) I am a dog end (TestInheritance.TimeProofPolymorphicInheritance) Encode Barcode In Visual Basic .NET Using Barcode printer for VS .NET Control to generate, create Barcode image in .NET framework applications. www.OnBarcode.comPDF 417 Maker In VB.NET Using Barcode generator for Visual Studio .NET Control to generate, create PDF417 image in Visual Studio .NET applications. www.OnBarcode.comCHAPTER 1 ESSENTIALS OF OBJECT-ORIENTED PROGRAMMING
Make QR Code 2d Barcode In Visual Basic .NET Using Barcode printer for Visual Studio .NET Control to generate, create Denso QR Bar Code image in Visual Studio .NET applications. www.OnBarcode.comPrint Linear In Visual Basic .NET Using Barcode drawer for VS .NET Control to generate, create Linear Barcode image in Visual Studio .NET applications. www.OnBarcode.comThis is interesting, in that even though the EnglishBulldog type is instantiated, the method WhatAmI of EnglishBulldog isn t called. This means users of the old type get the old functionality, and users of the new type get the new functionality. You can use the new keyword to define new functionality. You can convert a virtual method into a nonvirtual method, and vice versa. Drawing UPC-A In Visual Basic .NET Using Barcode creation for VS .NET Control to generate, create UPC-A Supplement 2 image in VS .NET applications. www.OnBarcode.comEAN-8 Maker In Visual Basic .NET Using Barcode maker for Visual Studio .NET Control to generate, create GTIN - 8 image in .NET framework applications. www.OnBarcode.comWriting Generic Code
Recognize QR Code In Java Using Barcode recognizer for Java Control to read, scan read, scan image in Java applications. www.OnBarcode.comMaking QR-Code In Java Using Barcode drawer for Android Control to generate, create QR Code ISO/IEC18004 image in Android applications. www.OnBarcode.comWriting generic code means writing libraries in a general reusable sense. The word Generics with a capital G means something entirely different. In a nutshell, Generics is the writing of libraries that can be generally reused using a specific notation. The new definition and the old definition sound similar, but the notation makes a world of difference. Scan ECC200 In Visual C#.NET Using Barcode reader for .NET framework Control to read, scan read, scan image in .NET framework applications. www.OnBarcode.comPainting EAN-13 Supplement 5 In Visual Studio .NET Using Barcode drawer for ASP.NET Control to generate, create EAN13 image in ASP.NET applications. www.OnBarcode.comThe Case for Generics
USS Code 128 Printer In Objective-C Using Barcode encoder for iPhone Control to generate, create ANSI/AIM Code 128 image in iPhone applications. www.OnBarcode.comRead Barcode In C# Using Barcode reader for VS .NET Control to read, scan read, scan image in .NET framework applications. www.OnBarcode.comLet s imagine writing a reusable class that manages a reference to another type, which is illustrated as follows: class OldContainer { private Object _contained; public Object MyProperty { get { return _contained; } set { _contained = value; } } } The type OldContainer has a private data member _contained, which is of the type Object. In .NET speak, referencing the Object type means referencing the instance of any type (object). All objects in .NET eventually subclass the Object type, even if it isn t written as it s implied. Following is an example code piece that uses the type OldContainer: OldContainer container = new OldContainer(); container.MyProperty = 2; int value = (int)container.MyProperty; The property MyProperty is assigned the value of 2, even though MyProperty expects an assignment of type Object. Some readers might expect a type conflict, but the number 2 is being boxed by .NET and downcast to the type Object. The code becomes problematic when the value is retrieved from the property MyProperty. Because MyProperty is of type Object, and the variable value is of type int, a typecast has to be performed. The typecast is tedious and introduces a potential runtime error. The problem with using the Object type as a basis reference type is that any type can be referenced. For example, the type OldContainer could reference the type Foo, and when a cast to int is performed a runtime type exception is generated. UPC Symbol Creator In None Using Barcode maker for Font Control to generate, create GS1 - 12 image in Font applications. www.OnBarcode.comPaint Matrix Barcode In VS .NET Using Barcode generator for .NET Control to generate, create Matrix Barcode image in Visual Studio .NET applications. www.OnBarcode.comQR Code Creation In None Using Barcode creation for Online Control to generate, create QR Code image in Online applications. www.OnBarcode.comCreate Code-39 In None Using Barcode generation for Office Word Control to generate, create USS Code 39 image in Office Word applications. www.OnBarcode.comPDF 417 Maker In .NET Using Barcode drawer for Reporting Service Control to generate, create PDF-417 2d barcode image in Reporting Service applications. www.OnBarcode.comDataMatrix Generation In Java Using Barcode encoder for Java Control to generate, create Data Matrix image in Java applications. www.OnBarcode.com |
|