實驗---介面
實驗目標:
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();
}
}
}
相關文章
- oracle實驗-RMAN的PIPE介面Oracle
- 實驗任務四:登入介面、實驗任務五:猜數字
- 總結-SpringMVC實現驗證碼介面SpringMVC
- 實驗二-密碼引擎-3-sdf介面密碼
- 使用 Spring Validator 介面實現驗證Spring
- 開發文件、PHP身份核驗介面,三要素實名認證介面PHP
- 若依管理系統-免驗證介面實現
- Spring Boot實現通用的介面引數校驗Spring Boot
- Java財政票據查驗介面、醫療票據查驗、發票驗真介面Java
- java視窗登入介面實現隨機驗證碼Java隨機
- Api介面簽名驗證API
- 圖片驗證碼介面
- SMSSDK驗證碼服務端校驗介面服務端
- 6.9找回機制介面安全&驗證碼token介面
- 介面平臺實用功能設計分享——資料庫校驗資料庫
- Java:實驗四 Java圖形介面與事件處理(頭歌)Java事件
- 介面測試-引數校驗
- 使用 jQuery, Angular.js 實現登入介面驗證碼詳解jQueryAngularJS
- '林子雨大資料' 實驗3 HBase操作與介面程式設計大資料程式設計
- 體驗C++中介面與實現分離的技術(轉)C++
- 實驗11.ACL實驗
- 對飛豬H5端API介面sign簽名逆向實驗H5API
- 身份證實名認證介面的價格一般是多少呢?基於PHP身份核驗介面PHP
- flutter - 登陸介面&表單校驗Flutter
- 簡單API介面簽名驗證API
- EBS 採購檢驗-入庫介面
- 實驗5.OSPF配置實驗
- 20個實驗之實驗11
- 20個實驗之實驗10
- 20個實驗之實驗16
- 30個實驗之實驗23
- 30個實驗之實驗25
- 實驗一--Easy IoT實現mqtt實驗MQQT
- 介面鑑權之sign簽名校驗與JWT驗證JWT
- 實驗
- TP6實現前後端分離的圖片驗證碼,驗證碼以介面形式返回後端
- 使用WebService釋出soap介面,並實現客戶端的https驗證Web客戶端HTTP
- 20211314實驗二-密碼引擎-3-sdf介面密碼