Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 A Little OOP... C# Style
Index -> General Programming
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
rdrake




PostPosted: Tue Jan 30, 2007 2:18 pm   Post subject: A Little OOP... C# Style

Polymorphism
Everybody's favourite.
code:
using System;

public class Dog
{
        // Notice how both methods have the same name
        public void MakeNoise()
        {
                // No parameters?  Bark!
                Console.WriteLine("Bark!");
        }

        public void MakeNoise(string noise)
        {
                // Otherwise make the noise specified
                Console.WriteLine("{0}!", noise);
        }

        static void Main()
        {
                // Create a new instance of the Dog class
        Dog lassieTheRetriever = new Dog();

                // Sometimes Lassie may bark, sometimes she may
                // yip, it depends on the situation.
                lassieTheRetriever.MakeNoise();
                lassieTheRetriever.MakeNoise("Yip");
        }
}

Output:
code:
Bark!
Yip!

Inheritance
Unfortunately C# does not support multiple inheritance, just regular inheritance. Still very simple to accomplish via the use of a colon.
code:
using System;

public class Dog
{
        // Every healthy dog can walk, right?
        public void Walk(int distance)
        {
                Console.WriteLine("Walked {0}m", distance);
        }

        public static void Main()
        {
                // Create a new instance of GoldenRetriever named
                // lassie, then walk 10m
                GoldenRetriever lassie = new GoldenRetriever();

                lassie.Walk(10);
        }
}

// Empty class we will take advantage later
public class GoldenRetriever : Dog
{

}

Output:
code:
Walked 10m

Method Overriding
You may run into instances where you are required to override a method entirely instead of using polymorphism. Virtual methods come in very handy for this.
code:
using System;

public class Dog
{
        // Many dogs have their own tricks
        public virtual void PerformTrick()
        {
                // This method will be overwritten later :-)
        }

        public static void Main()
        {
                // Create a new instance of GoldenRetriever named lassie
                GoldenRetriever lassie = new GoldenRetriever();

                // Lassie needs to do a trick now
                lassie.PerformTrick();
        }
}

public class GoldenRetriever : Dog
{
        public override void PerformTrick()
        {
                Console.WriteLine("Fetch!");
        }
}

Output:
code:
Fetch!

Properties
Properties allow us to change certain features of an object while still controlling access, thereby allowing us to place restrictions on the way the information is accessed and changed.
code:
using System;

public class Dog
{
        // Every dog has some properties, they just vary
        // from dog to dog.

        // We don't want anybody but the setters and getters
        // touching our properties.  Otherwise they may touch them
        // in inappropriate ways.  By using this method we restrict
        // ways the values can be modified.
        private int    _numberOfLegs = 4;
        private string _furColour    = "Blonde";


        // Notice how these "methods" contain no parameters nor
        // parenthesis and their names match those of the property
        // variables, only they are in Pascal Case instead.
        public int NumberOfLegs
        {
                get {
                        // Also notice the prefix on property variables
                        return _numberOfLegs;
                } set {
                        // value is a special object that holds
                        // the new value passed to this block.
                        _numberOfLegs = value;
                }
        }

        public string FurColour
        {
                get { return _furColour; }
                set { _furColour = value; }
        }

        public static void Main()
        {
                // Create a new instance of GoldenRetriever named lassie
                GoldenRetriever lassie = new GoldenRetriever();

                Console.WriteLine("Lassie\'s coat is {0} in colour and she has {1} legs", lassie.FurColour, lassie.NumberOfLegs);

                // Create another GoldenRetriever object named rebelBailey
                GoldenRetriever rebelBailey = new GoldenRetriever();

                // Sadly he only has 3 legs, and a purple coat
                rebelBailey.NumberOfLegs = 3;
                rebelBailey.FurColour    = "Purple";

                // Now display Rebel Bailey's modified properties
                Console.WriteLine("Rebel Bailey\'s coat is {0} in colour and he has {1} legs.", rebelBailey.FurColour, rebelBailey.NumberOfLegs);
        }
}

// A breed or "subclass" of Dog
public class GoldenRetriever : Dog
{

}

Output:
code:

Lassie's coat is Blonde in colour and she has 4 legs
Rebel Bailey's coat is Purple in colour and he has 3 legs.
Sponsor
Sponsor
Sponsor
sponsor
wtd




PostPosted: Tue Jan 30, 2007 6:43 pm   Post subject: RE:A Little OOP... C# Style

Many would argue that "virtual" methods are integral to polymorphism.
neufelni




PostPosted: Thu Feb 01, 2007 12:27 am   Post subject: RE:A Little OOP... C# Style

Could you tell me what the difference is between polymorphism and function overloading. I've been taught that your first bit of code is function overloading.
rdrake




PostPosted: Thu Feb 01, 2007 12:41 am   Post subject: Re: RE:A Little OOP... C# Style

Nick @ Thu Feb 01, 2007 12:27 am wrote:
Could you tell me what the difference is between polymorphism and function overloading. I've been taught that your first bit of code is function overloading.
They really are one in the same. Sadly I cannot edit my post to reflect that.
Display posts from previous:   
   Index -> General Programming
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 4 Posts ]
Jump to:   


Style:  
Search: