Difference between revisions of "OOP Class11"

esse quam videri
Jump to: navigation, search
(Problems with inheritance)
(Problems with inheritance)
Line 115: Line 115:
  
 
{|
 
{|
|<syntaxhighlight lang="csharp">public string DuckSound;
+
|<syntaxhighlight lang="csharp">public class Duck
 +
    {
 +
        public string DuckSound;
 
        
 
        
  
Line 127: Line 129:
 
             return this.DuckSound;
 
             return this.DuckSound;
 
         }
 
         }
 +
    }
 
</syntaxhighlight>
 
</syntaxhighlight>
 
|<syntaxhighlight lang="csharp">public class Rocket
 
|<syntaxhighlight lang="csharp">public class Rocket

Revision as of 17:59, 7 April 2016


Duck Study

Private instance data members - accessors

Microsoft has stared calling private variables with accessors Properties

Private class memebers the use get and set keyword to set and retrieve data. Get and set are known as accessor methods private members are helpful when you want to also do other things when a data member is changed or change the rutern value under certain conditions. C# Programmer's Reference - Accessors http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfaccessorspg.asp. Lastly accessor also make read only and write only variables possible

//private string color read/write
private string color;

public string Color
{
  get
  {
   return color;
  }
  set
  {
   color = value;
  }
}

//private string color read only
private string color;

public string Color
{
  get
  {
   return color;
  }
}


Another property that is a good candidate for a private instance data member is the dogs age

private string age;

public int Age
{
  //age can only be accessed with get there is no set accessor
  //age must be set with HappyBirthday()
  get
  {
   return age;
  }
}

public int HappyBirthday()
{
  age++;
  return age;
}


Interfaces

IFlyable

interface IFlyable
    {
        int CurrentAltitude { get; set; }
        void FlyUP();
        void FlyDown();
        
    }

Implementation

class Helicopter : IFlyable
    {

        protected int currentAltitude;

        public Helicopter()
        {
            this.CurrentAltitude = 0;
        }

        public int CurrentAltitude
        {
            get
            {
                return currentAltitude;
            }
            set
            {
                currentAltitude = value;
            }
        }

        public void FlyUP()
        {
            this.CurrentAltitude++;
        }

        public void FlyDown()
        {
            this.CurrentAltitude--;
        }
    }

Problems with inheritance

Rocket Ducks!!!!

RocketDuckCapture1.PNG

public class Duck
    {
        public string DuckSound;
       

        public string Fly()
        {
            return string.Format("(0) us flying", this);
        }

        public string Quack()
        {
            return this.DuckSound;
        }
    }
public class Rocket
    {
        public bool IsIgnited;
    
        public string Fly()
        {
            return string.Format("(0) us flying", this);
        }

        public void Launch()
        {
            this.IsIgnited = true;
        }
    }

Controls is an example of good inhertance

http://iam.colum.edu/oop/classsource/class11/controls.aspx

see

 Hierarchy

Object ---> Control---> WebControl---> BaseDataBoundControl ---> DataBoundControl --->ListControl ---> DropDownList

Strategy Pattern

http://www.dofactory.com/Patterns/PatternStrategy.aspx

Strategy Pattern

Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.

Ducks From Book

http://iam.colum.edu/oop/browser/browser.aspx?f=/classsource/class11/Duck

http://www.dofactory.com/Patterns/PatternStrategy.aspx

Pretty good example of the strategey method in action.

Characters

Phones

http://iam.colum.edu/oop/classsource/class12/ConsoleApplicationPhoneNoInterface.zip

Review Homework

Problems

Phone interface

Look as phone project. Discuss polymorphic phones interchangeability. Look for possible interfaces to extract.

Homework

Extract interfaces for phone class. Make a web interface for the phone classes.

You should be able to choose an phone type and then dial it and send messages if it is ITxtable.

http://iam.colum.edu/oop/classsource/class12/ConsoleApplicationPhoneNoInterface.zip