Object-Oriented Programming and Polymorphism

Lesson1

Objects


Members


Object Model


Encapsulation


Polymorphism


Lesson 2

Overloading Members


Overloading Methods


public void DisplayMessage(int i)

{

MessageBox.Show(i.ToString());

}


public void DisplayMessage(string s)

{

MessageBox.show(s);

}

Overloading Operators


public struct HoursWorked

{

float RegularHours;

float OvertimeHours;

}



public static type operator op (Arg1[, Arg 2])

{

}



public struct HoursWorked

{

float RegularHours;

float OvertimeHours;


public static HoursWorked operator + (HoursWorked a, HoursWorked b)

{

HoursWorked Result = new HoursWorked();

Result.RegularHours = a.RegularHours + b.RegularHours;

Result.OvertimeHours = a.OvertimeHours + b.OvertimeHours;

return Result;

}


public static HoursWorked operator + (HoursWorked a, int b)

{

HoursWorked Result = new HoursWorked();

Result.RegularHours = a.RegularHours + b;

return Result;

}

}



HoursWorked tot = new HoursWorked();

tot = Sunday + Monday;


Lesson 3

Interface Polymorphism


public interface IDrivable

{

void GoForward();

void Halt();

int DistanceTravelled();


int FuelLevel

{

get:

}

event System.EventHandler OutOfFuel;

}



public void GoSomewhere(IDrivable v)

{

}



Implement Interface


public class Truck : IDrivable, IFuelBurning

{

public void GoForward(int Speed)

{

}

}



public class Truck : IDrivable, IFuelBurning

{

void IDrivable.GoForward(int Speed)

{

}

}


Inheritance Polymorphism


public class FourWheelDrivePickupTruck : PickupTruck, IFourWheelDrive

{

}



public sealed class AClass

{

}


Overriding Base Class Members


public class SportsCar : Car

{

public override void GoForward(int Speed)

{

}

}



public virtual void OverrideMe()

{

}


Hiding Base Class Members


public class MyBaseClass

{

public string MyMethod(int I)

{

}

}


public class MyInheritedClass : MyBaseClass

{

internal new int MyMethod(int I)

{

}

}


Access Base Implementation


public override void MyMethod()

{

base.MyMethod();

}


Abstract Classes and Members


public abstract class AbstractClass

{

public abstract void GoForward(int I);

public abstract string Colour

{

get:

set:

}

}