實驗---介面

iamzxf發表於2015-05-13

實驗目標:

1、 理解介面的概念

2、 掌握介面的定義

3、  掌握介面成員的定義

4、  掌握介面的顯式和隱式實現

5、  學會介面的使用

 

實驗內容:

設計並實現下列程式

1、 公路上有運輸貨物的卡車,而卡車要裝載一批貨物,貨物有三種商品型別:電腦、電視機和洗衣機。請計算出大貨車和小貨車各自所裝載貨物的總重量。

要求:

(1)介面

IComputerWeight介面,該介面中有一個可以計算重量的方法,返回重量。

(2)定義電腦,電視機和洗衣機個類。每個類都具有計算重量的功能,即通過實現介面IComputerWeight給出自重。

洗衣機中自重的計算方法:200到300的隨機數。

電腦和電視機都是返回一個確定值,可以任意設定。

(3)定義使用介面的類Car(卡車),類的成員如下:

欄位:IComputerWeight介面型別的陣列(可以存放三種不同商品型別的物件)

方法:用來計算該卡車裝載貨物的總重量

建構函式:以IComputerWeight介面型別的陣列做為引數完成欄位的初始化

(4)在Main()方法中進行測試,建立兩輛卡車,分別計算每輛卡車貨物的重量及所有卡車裝載貨物的重量。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    interface IComputerWeight
    {
        int Num { get; set; }
        double ComputeWeight();
    }

    class Computer : IComputerWeight
    {
        public int Num { get; set; }
        public Computer(int num)
        {
            this.Num = num;
        }
        public double ComputeWeight()
        {
            return 300;
        }
    }

    class Tv : IComputerWeight
    {
        public int Num { get; set; }
        public Tv(int num)
        {
            this.Num = num;
        }

        public double ComputeWeight()
        {
            return 500;
        }
    }

    class Washing : IComputerWeight
    {
        public int Num { get; set; }
        public Washing(int num)
        {
            this.Num = num;
        }
        
        public double ComputeWeight()
        {
            Random rnd = new Random();
            return rnd.Next(101) + 200;

        }
    }

    class Car
    { 
        IComputerWeight []weights;

        public Car(IComputerWeight []initweight)
        {
            weights = initweight;
        }

        public double totalWeight()
        { 
            double sum=0;
            for (int i = 0; i < weights.Length; i++)
                sum += weights[i].ComputeWeight() * weights[i].Num;
            
            return sum;
        }
    }


    class Program
    {
        static void Main(string[] args)
        {

            Car car1 = new Car(new IComputerWeight[]{
                new Computer(12),
                new Tv(10),
                new Washing(20)
            });

            Car car2 = new Car(new IComputerWeight[]{
                new Computer(21),
                new Tv(1),
                new Washing(22)
            });

            Console.WriteLine("the weight in car1 is {0}", car1.totalWeight());

            Console.WriteLine("the weight in car2 is {0}", car2.totalWeight());

            Console.ReadLine();
        }
    }
}

2、類Space表示空間。在類的**直接新增合適的程式碼,用於實現IComparable介面的CompareTo方法,比較空間兩點大小(即距原點值的大小),重寫ToString方法,用於將空間某點的座標字串格式化為(x,y,z)的形式。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Space : IComparable
    {
        public double X { get; set; }
        public double Y { get; set; }
        public double Z { get; set; }

        public Space(double x, double y, double z)
        {
            this.X = x;
            this.Y = y;
            this.Z = z;
        }

        public int CompareTo(Object sp)
        {
            double sum1 = Math.Sqrt(this.X * this.X + this.Y * this.Y+this.Z*this.Z);
            Space sp1 = (Space)sp;
            double sum2 = Math.Sqrt(sp1.X * sp1.X + sp1.Y * sp1.Y + sp1.Z * sp1.Z);


            if (sum1 > sum2)
                return 1;
            else
                if (sum1 == sum2)
                    return 0;
                else
                    return -1;
        }

        public override string ToString()
        {
            string str = string.Format("({0},{1},{2})", this.X, this.Y, this.Z);
            return str;
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            Space sp1 = new Space(1, 2, 3);
            Space sp2 = new Space(1, 2.2, 3.1);

            if (sp1.CompareTo(sp2) > 0)
                Console.WriteLine("big");
            else
                if (sp1.CompareTo(sp2) == 0)
                    Console.WriteLine("equal");
                else
                    Console.WriteLine("small");

            Console.WriteLine(sp1.ToString());

            Console.ReadLine();    
        }
    }
}


相關文章