interface

24 + 32 = 56
24 - 32 = -8
interface(インターフェース)の説明です。

前田稔(Maeda Minoru)の超初心者のプログラム入門

interface の説明

  1. インターフェースとは、実装すべきメソッドやプロパティなどを宣言したクラスの枠組みです。
    インターフェース自身では一切実装しないので、これを継承したクラスで実装しなければなりません。
    /************************************/
    /*★ Interface IAddSub    前田 稔 ★*/
    /************************************/
    using System;
    
    public interface IAddSub
    {
        int Add(int a, int b);
        int Sub(int a, int b);
    }
    
    class MyClass : IAddSub
    {
        public int Add(int n, int m)
        {   return n + m;  }
        public int Sub(int n, int m)
        {   return n - m;  }
    }
    
    class console
    {
        public static void Main()
        {
            MyClass mc = new MyClass();
            Console.WriteLine("24 + 32 = {0}",mc.Add(24,32));
            Console.WriteLine("24 - 32 = {0}",mc.Sub(24,32));
        }
    }
    
  2. インターフェースの宣言 IAddSub です。
    IAddSub では Add と Sub のメソッドの形式が宣言されています。
    public interface IAddSub
    {
        int Add(int a, int b);
        int Sub(int a, int b);
    }
    
  3. IAddSub を継承した MyClass クラスです。
    Add メソッドと Sub メソッドを実装します。
    インターフェースで宣言されている全てのメソッドやプロパティなどを実装しなければなりません。
    class MyClass : IAddSub
    {
        public int Add(int n, int m)
        {   return n + m;  }
        public int Sub(int n, int m)
        {   return n - m;  }
    }
    
  4. MyClass クラスの使い方は普通のクラスと同じです。
        public static void Main()
        {
            MyClass mc = new MyClass();
            Console.WriteLine("24 + 32 = {0}",mc.Add(24,32));
            Console.WriteLine("24 - 32 = {0}",mc.Sub(24,32));
        }
    

プロパティを宣言

  1. プロパティを宣言したインターフェースの例です。
    GCM(24,32) = 8
    /*********************************/
    /*★ Interface IGcm    前田 稔 ★*/
    /*********************************/
    using System;
    
    public interface IGcm
    {
        int Data1 { set; get; }
        int Data2 { set; get; }
        int Gcm();
    }
    
    class MyClass : IGcm
    {
        int d1;
        int d2;
    
        public int Data1
        {
            get
            {   return d1;  }
            set
            {   d1= value;  }
        }
    
        public int Data2
        {
            get
            {   return d2;  }
            set
            {   d2= value;  }
        }
    
        public int Gcm()
        {
            int n,m;
            n= d1;
            m= d2;
            while(n!=m)
            {   if (n>m)    n-= m;
                else        m-= n;
            }
            return n;
        }
    }
    
    class console
    {
        public static void Main()
        {
            MyClass mc = new MyClass();
            mc.Data1= 24;
            mc.Data2= 32;
            Console.WriteLine("GCM(24,32) = {0}", mc.Gcm());
        }
    }
    
  2. IGcm では Data1, Data2 のプロパティと Gcm メソッドが宣言されています。
    public interface IGcm
    {
        int Data1 { set; get; }
        int Data2 { set; get; }
        int Gcm();
    }
    
  3. IGcm を継承した MyClass クラスです。
    Data1, Data2 のプロパティと Gcm メソッドを実装します。
    インターフェースで宣言されている全てのメソッドやプロパティなどを実装しなければなりません。
    class MyClass : IGcm
    {
        int d1;
        int d2;
    
        public int Data1
        {
            get
            {   return d1;  }
            set
            {   d1= value;  }
        }
    
        public int Data2
        {
            get
            {   return d2;  }
            set
            {   d2= value;  }
        }
    
        public int Gcm()
        {
            int n,m;
            n= d1;
            m= d2;
            while(n!=m)
            {   if (n>m)    n-= m;
                else        m-= n;
            }
            return n;
        }
    }
    
  4. MyClass クラスの使い方は普通のクラスと同じです。
    class console
    {
        public static void Main()
        {
            MyClass mc = new MyClass();
            mc.Data1= 24;
            mc.Data2= 32;
            Console.WriteLine("GCM(24,32) = {0}", mc.Gcm());
        }
    }
    
  5. インターフェースと良く似た機能に抽象クラスがあります。
    インターフェースは、一切実装しないのに対して、抽象クラスは純粋仮想関数を持ちます。
    抽象クラスの説明は 純粋仮想関数と抽象クラス を参照して下さい。

超初心者のプログラム入門(C# Frame Work)