Demonstrates deriving a new class from a base class in another assembly


   

/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa

Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/

//
//  Access1.cs - demonstrates deriving a new class from a base class in
//               another assembly. Also demonstrates how a derived class
//               may provide a public property to expose a protected member
//               of a base class.
//
//               Compile this program with the following command line:
//                   C:>csc /r:access.exe Access1.cs
//
namespace nsAccess
{
    using System;
    
    public class Access1
    {
        static public void Main ()
        {
            clsDerived derived = new clsDerived ();
            derived.AccessIt = 42;
            derived.ShowField ();
        }
    }
//
// Derive a class from the base class and give it a public
// property to access the private field in the base class
    class clsDerived : clsBase
    {
        public int AccessIt
        {
            get {return (Private);}
            set {Private = value;}
        }
    }
    public class clsBase
    {
        private int m_Private;
        protected int Private
        {
            get {return (m_Private);}
            set {m_Private = value;}
        }
        public void ShowField ()
        {
            Console.WriteLine ("The value of private field m_Private is " + m_Private);
        }
    }
    
}


           
          


the overridden methods of the System.Object class

   
 

using System;
using System.Collections;


public class Starter {
    public static void Main() {
        Employee obj1 = new Employee(5678);
        Employee obj2 = new Employee(5678);
        if (obj1 == obj2) {
            Console.WriteLine("equals");
        } else {
            Console.WriteLine("not equals");
        }
    }
}

class Employee {

    public Employee(int id) {
        if ((id < 1000) || (id > 9999)) {
            throw new Exception(
                "Invalid Employee ID");
        }

        propID = id;
    }

    public static bool operator ==(Employee obj1, Employee obj2) {
        return obj1.Equals(obj2);
    }

    public static bool operator !=(Employee obj1, Employee obj2) {
        return !obj1.Equals(obj2);

    }

    public override bool Equals(object obj) {
        Employee _obj = obj as Employee;

        if (obj == null) {
            return false;
        }
        return this.GetHashCode() == _obj.GetHashCode();
    }

    public override int GetHashCode() {
        return EmplID;
    }

    public string FullName {
        get {
            return propFirst + " " +
                propLast;
        }
    }

    private string propFirst;
    public string First {
        get {
            return propFirst;
        }
        set {
            propFirst = value;
        }
    }

    private string propLast;
    public string Last {
        get {
            return propLast;
        }
        set {
            propLast = value;
        }
    }

    private readonly int propID;
    public int EmplID {
        get {
            return propID;
        }
    }

    public override string ToString() {
        return FullName;
    }
}

    


A Simple C# Class


   


using System;

public class ASimpleClass
{
    public static void Main()
    {
        Point myPoint = new Point(10, 15);
        Console.WriteLine("myPoint.x {0}", myPoint.x);
        Console.WriteLine("myPoint.y {0}", myPoint.y);
    }
}
class Point
{
    // constructor
    public Point(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
    
    // member fields
    public int x;
    public int y;
}



           
          


Uses a class from Example16_3a.cs

   

/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy

Publisher: Sybex;
ISBN: 0782129110
*/
/*
  Example16_3b.cs uses a class from Example16_3a.cs
*/

using System;
using StringSwitch;  // name space define in Example16_3c.cs

public class Example16_3b 
{

  public static void Main() 
  {
    string localString;
    MySwitch s = new MySwitch();
    s.inString="abcdef";
    s.upper(out localString);
    Console.WriteLine(localString);
  }

}

//===========================================================
/*
  Example16_3c.cs provides manifest information for Example 16_3
*/

using System.Reflection;

[assembly: AssemblyTitle("Example 16.3")]
[assembly: AssemblyVersion("1.0.0.0")]


//===========================================================
/*
  Example16_3a.cs creates a namespace with a single class
*/

using System;

namespace StringSwitch
{
  class MySwitch 
  {
    string privateString;

    public string inString 
    {
      get 
      {
        return privateString;
      }
      set
      {
        privateString = value;
      }
    }

    public void upper(out string upperString)
    {
      upperString = privateString.ToUpper();
    }

  }
}





           
          


Return an object


   

/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Return an object. 
 
using System; 
 
class Rect { 
  int width; 
  int height; 
 
  public Rect(int w, int h) { 
    width = w; 
    height = h; 
  } 
 
  public int area() { 
    return width * height; 
  } 
 
  public void show() { 
    Console.WriteLine(width + " " + height); 
  } 
 
  /* Return a rectangle that is a specified 
     factor larger than the invoking rectangle. */ 
  public Rect enlarge(int factor) { 
    return new Rect(width * factor, height * factor); 
  } 
} 
  
public class RetObj { 
  public static void Main() {   
    Rect r1 = new Rect(4, 5); 
 
    Console.Write("Dimensions of r1: "); 
    r1.show(); 
    Console.WriteLine("Area of r1: " + r1.area()); 
 
    Console.WriteLine(); 
 
    // create a rectange that is twice as big as r1 
    Rect r2 = r1.enlarge(2); 
 
    Console.Write("Dimensions of r2: "); 
    r2.show(); 
    Console.WriteLine("Area of r2 " + r2.area()); 
  } 
}


           
          


This program creates two Building objects


   

/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// This program creates two Building objects. 
 
  
using System;  
  
class Building {   
  public int floors;    // number of floors 
  public int area;      // total square footage of building 
  public int occupants; // number of occupants 
}   
   
// This class declares two objects of type Building.   
public class BuildingDemo1 {   
  public static void Main() {   
    Building house = new Building();   
    Building office = new Building(); 
 
    int areaPP; // area per person 
   
    // assign values to fields in house 
    house.occupants = 4;  
    house.area = 2500;  
    house.floors = 2;  
 
    // assign values to fields in office 
    office.occupants = 25;  
    office.area = 4200;  
    office.floors = 3;  
   
    // compute the area per person in house 
    areaPP = house.area / house.occupants;  
   
    Console.WriteLine("house has:
  " + 
                      house.floors + " floors
  " + 
                      house.occupants + " occupants
  " + 
                      house.area + " total area
  " + 
                      areaPP + " area per person"); 
 
    Console.WriteLine(); 
 
    // compute the area per person in office 
    areaPP = office.area / office.occupants;  
 
    Console.WriteLine("office has:
  " + 
                      office.floors + " floors
  " + 
                      office.occupants + " occupants
  " + 
                      office.area + " total area
  " + 
                      areaPP + " area per person"); 
  }   
} 

           
          


A program that uses the Building class


   

/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// A program that uses the Building class.   
 
using System;  
  
class Building {   
  public int floors;    // number of floors 
  public int area;      // total square footage of building 
  public int occupants; // number of occupants 
}   
   
// This class declares an object of type Building.   
public class BuildingDemo {   
  public static void Main() {   
    Building house = new Building(); // create a Building object 
    int areaPP; // area per person 
   
    // assign values to fields in house 
    house.occupants = 4;  
    house.area = 2500;  
    house.floors = 2;  
   
    // compute the area per person 
    areaPP = house.area / house.occupants;  
   
    Console.WriteLine("house has:
  " + 
                      house.floors + " floors
  " + 
                      house.occupants + " occupants
  " + 
                      house.area + " total area
  " + 
                      areaPP + " area per person"); 
  }   
}