类接口的设计(类 接口)

网友投稿 247 2023-03-08


本篇文章给大家谈谈类接口的设计,以及类 接口对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享类接口的设计的知识,其中也会对类 接口进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

一道题Java中抽象类和接口的设计与使用,紧急!多谢!

学生接口
public interface StudentManageInterface {
//设置学生每学期类接口的设计的学费
void setFee(int tuition);
//获取学生每学期的学费
int getFee();

}
老师接口
public interface TeacherManageInterface {

//设置教师月工资
void setPay(int salary);
//获取教师月工资
int getPay();

}
研究生类
public class Graduate implements StudentManageInterface, TeacherManageInterface {
private String name;
private String sex;
private int fee;
private int pay;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public int getFee() {
return fee;
}
@Override
public void setFee(int tuition) {
this.fee = tuition;
}
@Override
public int getPay() {
return pay;
}
@Override
public void setPay(int salary) {
this.pay = salary;
}

public String getMessage(){
if((pay*12-fee)20000){
return "这名研究生的名字是:"+name+"类接口的设计,性别是:"+sex+"类接口的设计,今年的学费是:"+fee+"类接口的设计,年工资是:"+12*pay+",不需要贷款!";
}
return "这名研究生的名字是:"+name+",性别是:"+sex+",今年的学费是:"+fee+",年工资是:"+12*pay+",需要贷款!";
}
}
测试类
public class Test {
public static void main(String[] args) {

Graduate graduate = new Graduate();
//设置姓名
graduate.setName("张翠花");
//设置性别
graduate.setSex("女");
//设置每月工资
graduate.setPay(2500);
//设置每月学费
graduate.setFee(15000);
System.out.println(graduate.getMessage());
}
}

将txt格式文件读取到c++的类中,怎样设计类的接口?请以姓名、电话号码这个简单例子解释一下。

1. 首先要有读取接口类接口的设计,把数据从文件中读出。
bool load(const char *fileName);
2. 其次要有回写接口,把数据写回到文件中。
bool store(const char *fileName);
3. 然后是数据操作函数,这个跟数据构成有关。比如XML类接口的设计的存取类通常会有读取根结点的接口,然后有操作整个XML树的接口。
如果只有姓名和电话号码,那就可以设计简单一点的接口。接口总是简单一点的好。
3.1 查询用户是否存在。
bool userExists(const char *userName);
3.2 取得用户的电话号码。
bool getTelNumber(const char *userName, char *telNumber);
3.3 添加用户。
bool addUser(const char *username, const char *telNumber = NULL);
3.4 修改用户电话号码。
bool modifyTelNumber(const char *userName, const char *telNumber);

接口用例设计

目的:测试接口的正确性和稳定性;

原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程;

重点:检查数据的交换,传递和控制管理过程,还包括处理的次数;

核心:持续集成是接口测试的核心;

优点:为高复杂性的平台带来高效的缺陷监测和质量监督能力,平台越复杂,系统越庞大,接口测试的效果越明显

用例设计重点:通常情况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系          统处理后的数据是否正常);
输入参数主要从以下几各方面设计:

a 必填项校验

接口文档中有是否必填的说明。参考接口文档即可。

b 参数长度校验

参考接口文档即可。

c 参数值的有效性校验

所以参数有效性的校验就需要结合实际业务场景,判断哪些数据是真实有效的数据,一定要确保所有真实有效的数据是可以验证通过的。

d 参数组合校验

不同的参数组合可能会存在不同的业务场景;

e 如果参数是枚举值,一定要各种枚举值都要测试,因为可能不同的枚举走的不同的业务流程;

f 参数值的默认值的校验

参考接口文档。

g 某些参数具有特定的生成规则,要单独针对生成规则设计用例,一定要保证真实有效的数据是可以验证通过的。
接口逻辑我用的设计方法是分支覆盖—路径覆盖—场景覆盖,同样也是要结合实际业务场景,根本不发生的业务场景就是无效的测试用例。

a 第一步先把业务流程图画出来;

b 依据路程图中的分支分别设计,不同分支不同的场景,这里就要把异常的场景考虑进去;如接口超时,接口异常,接口请求成功或失败,成功后怎么处理,失败后流程是否继续执行,失败后的数据怎么处理;

c 测试逻辑设计完成后要想一想不同的业务场景怎么去测试,需要哪些人员协助,

如接口超时怎么去测试,请求重复怎么去测试,请求并发怎么去测试
输入结果:正常输出和异常输出,常用的方法有错误推断法(列举出程序中可能存在的错误或者异常,根据他们选择测试用例)

电路设计中常用的7个接口类型,你搞明白了几个

类接口的设计我们知道类接口的设计,在电路系统的各个子模块进行数据交换时可能会存在一些问题导致信号无法正常、高质量地“流通”,例如有时电路子模块各自的工作时序有偏差(如CPU与外设)或者各自的信号类型不一致(如传感器检测光信号)等,这时我们应该考虑通过相应的接口方式来很好地处理这个问题。

下面就电路设计中7个常用的接口类型的关键点进行说明一下类接口的设计

(1)TTL电平接口:

这个接口类型基本是老生常谈的吧,从上大学学习模拟电路、数字电路开始,对于一般的电路设计,TTL电平接口基本就脱不类接口的设计了“干系”!它的速度一般限制在30MHz以内,这是由于BJT的输入端存在几个pF的输入电容的缘故(构成一个LPF),输入信号超过一定频率的话,信号就将“丢失”。它的驱动能力一般最大为几十个毫安。正常工作的信号电压一般较高,要是把它和信号电压较低的ECL电路接近时会产生比较明显的串扰问题。

(2)CMOS电平接口:

我们对它也不陌生,也是经常和它打交道了,一些关于CMOS的半导体特性在这里就不必啰嗦了。许多人都知道的是,正常情况下CMOS的功耗和抗干扰能力远优于TTL。但是!鲜为人知的是,在高转换频率时,CMOS系列实际上却比TTL消耗更多的功率,至于为什么是这样,请去问半导体物理理论吧。

由于CMOS的工作电压目前已经可以很小了,有的FPGA内核工作电压甚至接近1.5V,这样就使得电平之间的噪声容限比TTL小了很多,因此更加加重了由于电压波动而引发的信号判断错误。众所周知,CMOS电路的输入阻抗是很高的,因此,它的耦合电容容量可以很小,而不需要使用大的电解电容器了。

由于CMOS电路通常驱动能力较弱,所以必须先进行TTL转换后再驱动ECL电路。此外,设计CMOS接口电路时,要注意避免容性负载过重,否则的话会使得上升时间变慢,而且驱动器件的功耗也将增加(因为容性负载并不耗费功率)。

(3)ECL电平接口:

这可是计算机系统内部的老朋友啊!因为它的速度“跑”得够快,甚至可以跑到几百MHz!这是由于ECL内部的BJT在导通时并没有处于饱和状态,这样就可以减少BJT的导通和截止时间,工作速度自然也就可以提上去了。

But,这是要付出代价的!它的致命伤:功耗较大!它引发的EMI问题也就值得考虑了,抗干扰能力也就好不到哪去了,要是谁能够折中好这两点因素的话,那么他(她)就该发大财了。还有要注意的是,一般ECL集成电路是需要负电源供电的,也就是说它的输出电压为负值,这时就需要专门的电平移动电路了。

(4)RS-232电平接口:

玩电子技术的基本没有谁不知道它的了(除非他或她只是电子技术专业的“门外汉”)。它是低速串行通信接口标准,要注意的是,它的电平标准有点“反常”:高电平为-12V,而低电平为+12V。So,当我们试图通过计算机与外设进行通信时,一个电平转换芯片MAX232自然是少不了的了。但是我们得清醒地意识到它的一些缺点,例如数据传输速度还是比较慢、传输距离也较短等。

(5)差分平衡电平接口:

它是用一对接线端A和B的相对输出电压(uA-uB)来表示信号的,一般情况下,这个差分信号会在信号传输时经过一个复杂的噪声环境,导致两根线上都产生基本上相同数量的噪声,而在接收端将会把噪声的能量给抵消掉,因此它能够实现较远距离、较高速率的传输。工业上常用的RS-485接口采用的就是差分传输方式,它具有很好的抗共模干扰能力。

(6)光隔离接口:

光电耦合是以光信号为媒介来实现电信号的耦合和传递的,它的“好处”就是能够实现电气隔离,因此它有出色的抗干扰能力。在电路工作频率很高的条件下,基本只有高速的光电隔离接口电路才能满足数据传输的需要。

有时为了实现高电压和大电流的控制,我们必须设计和使用光隔离接口电路来连接如上所述的这些低电平、小电流的TTL或CMOS电路,因为光隔离接口的输入回路和输出回路之间可以承受几千伏特的高压,足以满足一般的应用了。

此外,光隔离接口的输入部分和输出部分必须分别采用独立的电源,否则的话还是有电气联系,也就不叫隔离了。

(7)线圈耦合接口:

它的电气隔离特性好,但是允许的信号带宽有限。例如变压器耦合,它的功率传输效率是非常高的,输出功率基本接近其输入功率,因此,对于一个升压变压器来说,它可以有较高的输出电压,但是却只能给出较低的电流。

此外,变压器的高频和低频特性并不让人乐观,但是它的最大特点就是可以实现阻抗变换,当匹配得当时,负载可以获得足够大的功率,因此,变压器耦合接口在功率放大电路设计中很“吃香”。

最后还是为大家搞一些电路方面的资料供学习参考

(零基础电子产品设计)

http://www.makeru.com.cn/live/3727_1388.html?s=45051

老司机倾囊相授-PCB大牛修炼秘籍

http://www.makeru.com.cn/live/3472_1296.html?s=45051

关于java的类设计问题 - 如何使用接口和抽象类

我的想法是这样:
四种系统和肝脏都可以设计成类,互相之间没有继承关系。
一般来说,类A继承类B,对应于现实中的“A是B”,可以借此判断是否应该用继承。比如,钢琴是乐器,所以class Piano可以继承class Instrument。在这里,血液循环系统是肝脏吗?显然不是,所以class BloodCycle继承class Liver在概念上就是不合适的。
至于一个人只有一个肝的问题,在初始化4个系统时不要初始化肝脏就行了。类BloodCycle和类Digesting都有一个类Liver的内部成员humanLiver,不初始化,而是开放一个接口,让调用者来创建一个Liver对象然后赋给BloodCycle对象和Digesting对象。伪码:
BloodCycle bloodCycle = new BloodCycle();
Digesting digesting = new Digesting();
Liver liver = new Liver();
bloodCycle.setHumanLiver(liver);
digesting.setHumanLiver(liver);

这样所有问题都解决了。Java里所有对象变量都是指针,所以bloodCycle和digesting里的humanLiver指向的是同一个对象,即共用同一个人的肝脏,符合现实生活。

App 和 Web 的通用接口该怎么设计

1、在接口定义中确定MVC的GET或者POST方式
由于我们整个Web API平台是基于MVC的基础上进行的API开发类接口的设计,因此整个Web API的接口类接口的设计,在定义的时候,一般需要显示来声明接口是[HttpGet]或者[HttpPost],虽然有些接口也可以不用声明,但是避免出现类似下面的错误信息,显式声明还是有好处的。
请求的资源不支持 http 方法“POST
例如在基类定义的查找对象接口如下所示。
/// <summary
/// 查询数据库,检查是否存在指定ID的对象
/// </summary
/// <param name="id"对象的ID值</param
/// <returns存在则返回指定的对象,否则返回Null</returns
[HttpGet]
public virtual T FindByID(string id, string token)
如果是增删改的接口,一般需要声明为POST方式提交数据,而且基于安全性的考虑,需要携带更多的参数。
/// <summary
/// 插入指定对象到数据库中
/// </summary
/// <param name="info"指定的对象</param
/// <returns执行操作是否成功。</returns
[HttpPost]
public virtual CommonResult Insert(T info, string token, string signature, string timestamp, string nonce, string appid)
2、动态对象的接口定义
在一般的Web API接口里面,我们可能都会碰到很多简单类型的参数,但是又想让它们以POST方式提交数据,那么我们就可以有两种方法来处理,一种是定义一个类来放置这些参数,一种是采用动态的JObject参数,前者有很多不方便的地方,因为我们不可能为每个接口参数定义多一个实体类,这样可能会有很多难以管理的类定义。如下面是微信API的调用接口案例,我们也需要设置这样的处理规则。
接口调用请求说明
http请求方式: POST(请使用https协议)
https://api.weixin.qq.com/cgi-bin/groups/update?access_token=ACCESS_TOKEN
POST数据格式:json
POST数据例子:{"group":{"id":108,"name":"test2_modify2"}}
那么我们采用JObject是这么样的呢,我们来看接口的定义和处理代码。JObject是Newtonsoft.Json.Linq命名空间下的一个对象。
/// <summary
/// 修改用户密码
/// </summary
/// <param name="param"包含userName和userPassword的复合对象</param
/// <param name="token"用户访问令牌</param
/// <returns</returns
[HttpPost]
public CommonResult ModifyPassword(JObject param, string token)
{
//令牌检查,不通过则抛出异常
CheckResult checkResult = CheckToken(token);
dynamic obj = param;
if (obj != null)
{
string userName = obj.userName;
string userPassword = obj.userPassword;
bool success = BLLFactory<User.Instance.ModifyPassword(userName, userPassword);
return new CommonResult(success);
}
else
{
throw new MyApiException("传递参数出现错误");
}
}
其中我们把JObject对象转换为我们所需要的对象的时候,因为我们没有定义具体的实体类,因此采用了dynamic语法,声明这是一个动态对象,由运行时获取对应的属性。
dynamic obj = param;
这样我们就可以在调用的时候,动态POST对应的JSON对象给Web API接口,而不需要预先定义各种接口参数的类了。
/// <summary
/// 调用Web API接口,修改用户密码
/// </summary
/// <param name="userName"用户名称</param
/// <param name="userPassword"修改的密码</param
/// <returns如果修改成功返回true,否则返回false</returns
public bool ModifyPassword(string userName, string userPassword)
{
var action = "ModifyPassword";
var postData = new
{
userName = userName,
userPassword = userPassword
}.ToJson();
string url = GetTokenUrl(action);
CommonResult result = JsonHelper<CommonResult.ConvertJson(url, postData);
return (result != null) ? result.Success : false;
}
其中GetTokenUrl是根据token和API的地址等参数,构建一个完整的提交地址。我们在上面代码通过
var postData = new
{
userName = userName,
userPassword = userPassword
}.ToJson();
就可以动态创建一个对象,并生成它的JSON字符串,把数据POST提交到对应的API接口里面即可,然后对结果进行对象的转换就算完成了。
3、集合和分页的处理
在很多接口里面,我们都需要用到分页的处理,Web API也不例外,这样可以提交数据检索效率,减少服务器数据处理的压力,同时也提交客户端的数据显示速度。
一般的集合接口定义如下所示(通用性基类接口)。
/// <summary
/// 返回数据库所有的对象集合
/// </summary
/// <returns指定对象的集合</returns
[HttpGet]
public virtual List<T GetAll(string token)
{
//检查用户是否有权限,否则抛出MyDenyAccessException异常
base.CheckAuthorized(AuthorizeKey.ListKey, token);
List<T list = baseBLL.GetAll();
return list;
}
但是这样的返回记录会比较多,一般情况下需要分页,那么分页的处理接口定义如下所示。
/// <summary
/// 根据条件查询数据库,并返回对象集合(用于分页数据显示)
/// </summary
/// <returns指定对象的集合</returns
[HttpPost]
public virtual PagedList<T FindWithPager(string condition, PagerInfo pagerInfo, string token)
分页接口,在这里返回的结果里面,用了一个PageList的泛型类,这个方便我们获取当前的记录及总数,它的定义如下所示。
/// <summary
/// 分页集合
/// </summary
/// <typeparam name="T"对象</typeparam
public class PagedList<T
{
/// <summary
/// 返回记录的总数
/// </summary
public int total_count { get; set; }
/// <summary
/// 列表集合
/// </summary
public List<T list { get; set; }
}
最后整个分页的处理Web API接口实现如下所示。
/// <summary
/// 根据条件查询数据库,并返回对象集合(用于分页数据显示)
/// </summary
/// <returns指定对象的集合</returns
[HttpPost]
public virtual PagedList<T FindWithPager(string condition, PagerInfo pagerInfo, string token)
{
//检查用户是否有权限,否则抛出MyDenyAccessException异常
base.CheckAuthorized(AuthorizeKey.ListKey, token);
List<T list = baseBLL.FindWithPager(condition, pagerInfo);
//构造成Json的格式传递
var result = new PagedList<T() { total_count = pagerInfo.RecordCount, list = list };
return result;
}
最后客户端调用分页的Web API代码如下所示。
/// <summary
/// 根据条件查询数据库,并返回对象集合(用于分页数据显示)
/// </summary
/// <param name="condition"查询的条件</param
/// <param name="pagerInfo"分页实体</param
/// <returns指定对象的集合</returns
public virtual List<T FindWithPager(string condition, ref PagerInfo pagerInfo)
{
var action = "FindWithPager";
string url = GetTokenUrl(action) + string.Format("condition={0}", condition);
var postData = pagerInfo.ToJson();
List<T result = new List<T();
PagedList<T list = JsonHelper<PagedList<T.ConvertJson(url, postData);
if (list != null)
{
pagerInfo.RecordCount = list.total_count;//修改总记录数
result = list.list;
}
return result;
}
4、混合框架界面整合Web API接口
在整个Web API的平台构建以及在混合框架的整合过程中,我把各个模块还是遵循相对独立的方式进行开发和整合,它们实现了从直接访问数据库、以WCF服务获取数据,以及通过WebAPI调用方式获取数据几种方式的统一,从而实现了整个混合框架的高度整合。
整个混合框架的核心是以相对独立的方式,整合各个可重用的模块,我们可以遵循一定的基础上,快速构建统一的应用平台。
搭建完毕的整个WebAPI平台,其中包括了服务端内容,以API控制器的方式,发布了对应的Web API接口。
在每个混合框架的独立模块里面,我们封装了对应的Web API客户端调用处理,从而实现了Web API的调用方式。
在Win10下,使用Web API模式运行混合框架,获得的主体界面效果如下所示。
独立模块权限管理系统界面如下所示。
系列文章如下所示:
Web API应用架构在Winform混合框架中的应用(1)
Web API应用架构在Winform混合框架中的应用(2)--自定义异常结果的处理
Web API接口设计经验总结
Web API应用架构在Winform混合框架中的应用(3)--Winfrom界面调用WebAPI的过程分解
Web API应用架构在Winform混合框架中的应用(4)--利用代码生成工具快速开发整套应用
Web API应用架构在Winform混合框架中的应用(5)--系统级别字典和公司级别字典并存的处理方式 关于类接口的设计和类 接口的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 类接口的设计的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于类 接口、类接口的设计的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:api 如何管理(api如何使用)
下一篇:接口开发实践(简要介绍接口的开发流程)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~