函数封装

软件工程结对项目作业

跟風遠走 提交于 2020-03-24 15:31:05
4.计算模块接口的设计与实现过程 我的独到之处在于针对线段与射线的 新功能的实现基本都是对原有的直线相关函数的调用 ,计算交点时先将线段或射线转化为它们所在的直线,直线计算出交点后再判断该点是否在线段或射线上,极大地简化了代码逻辑。 因为考虑到封装的几何对象仅保存数据,不涉及方法,因此用struct封装几何对象 struct Point {//点 double x; double y; double length; bool operator ==(const Point& b) const noexcept { if (compareDouble(x - b.x) == 0 && compareDouble(y - b.y) == 0) return true; return false; } bool operator <(const Point& b) const noexcept { if (compareDouble(x - b.x) == 0 && compareDouble(y - b.y) < 0) return true; if (compareDouble(x - b.x) < 0) return true; return false; } }; typedef Point Vector; //向量 struct Line { //直线 Point p1, p2

接口封装

☆樱花仙子☆ 提交于 2020-03-23 10:14:18
前端的动态数据交互离不开服务端提供的接口,在一个前后端分离的中后台项目中,接口的请求和响应是必不可少的。 那么在架构一个中后台系统的时候,我们如何有效的管理和封装接口,提高项目接口调用的统一性、可维护性,以及在后端接口还没有开发完成,在仅有契约的基础上我们如何有效的模拟接口的调用呢? 接下来便会对以上问题提供个人解决方案供大家参考。 1. 不封装存在的问题 首先谈谈接口封装,因为我们使用的请求库是 axios,所以接下来的示例都以 axios 来举例。 那么在没有封装接口的项目中,你可能随处可见接口的直接调用方法,比如像这样: axios.post('/user', { firstName: 'zhang', lastName: 'san' }) .then(function (response) { console.log(response); }); ... axios.get('/user?ID=12345') .then(function (response) { // handle success console.log(response); }); 复制代码 这样的写法会存在一些缺点,主要有以下几点: 接口 url 没有统一管理,散落在项目的各个地方 如果需要在接口调用成功和失败时做一些处理,需要在每个地方进行添加 特殊请求头以及取消请求方法需要单独进行编写 2.

C#基础-Func,Action

一曲冷凌霜 提交于 2020-03-22 19:57:06
Func,Action 的介绍及其用法 Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如在反射中使用就可以弥补反射所损失的性能。 Action<T>和Func<T,TResult>的功能是一样的,只是Action<T>没有返类型, Func<T,T,Result>:有参数,有返回类型 Action,则既没有返回也没有参数, Func<T,TResult> 的表现形式分为以下几种: 1。Func<T,TResult> 2。Func<T,T1,TResult> 3。Func<T,T1,T2,TResult> 4。Func<T,T1,T2,T3,TResult> 5。Func<T,T1,T2,T3,T4,TResult> 分别说一下各个参数的意义,TResult表示 委托所返回值 所代表的类型, T,T1,T2,T3,T4表示委托所调用的方法的参数类型, 以下是使用示例: Func<int, bool> myFunc = null;//全部变量 myFunc = x => CheckIsInt32(x); //给委托封装方法的地方 使用了Lambda表达式 private bool CheckIsInt32(int pars)//被封装的方法 {   return pars =

spring源码学习之AOP(二)

青春壹個敷衍的年華 提交于 2020-03-21 01:44:14
  接着上一篇中的内容! 3、创建代理 在获取了所有的bean对应的增强器之后,便可以进行代理的创建了 org.springframework.aop.framework.autoproxy包下的AbstractAutoProxyCreator类中的createProxy方法 1 protected Object createProxy(Class<?> beanClass, @Nullable String beanName, 2 @Nullable Object[] specificInterceptors, TargetSource targetSource) { 3 4 if (this.beanFactory instanceof ConfigurableListableBeanFactory) { 5 AutoProxyUtils.exposeTargetClass((ConfigurableListableBeanFactory) this.beanFactory, beanName, beanClass); 6 } 7 8 ProxyFactory proxyFactory = new ProxyFactory(); 9 // 获取当前类中的相关属性 10 proxyFactory.copyFrom(this); 11 12 //

C#基础-Func,Action

空扰寡人 提交于 2020-03-20 03:06:09
Func,Action 的介绍及其用法 Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如在反射中使用就可以弥补反射所损失的性能。 Action<T>和Func<T,TResult>的功能是一样的,只是Action<T>没有返类型, Func<T,T,Result>:有参数,有返回类型 Action,则既没有返回也没有参数, Func<T,TResult> 的表现形式分为以下几种: 1。Func<T,TResult> 2。Func<T,T1,TResult> 3。Func<T,T1,T2,TResult> 4。Func<T,T1,T2,T3,TResult> 5。Func<T,T1,T2,T3,T4,TResult> 分别说一下各个参数的意义,TResult表示 委托所返回值 所代表的类型, T,T1,T2,T3,T4表示委托所调用的方法的参数类型, 以下是使用示例: Func<int, bool> myFunc = null;//全部变量 myFunc = x => CheckIsInt32(x); //给委托封装方法的地方 使用了Lambda表达式 private bool CheckIsInt32(int pars)//被封装的方法 {   return pars =

java 自定义异常

[亡魂溺海] 提交于 2020-03-19 19:35:25
因为项目中会出现特有的问题,而这些问题并未被java所描述并进行封装对象,所以对于这些特有的问题可以按照java的问题封装的思想,将特有的问题进行自定义的异常封装,进行自定义异常。 当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作:    要么在内部try catch处理    要么在函数上声明让调用者处理 一般情况下,函数内有异常,函数上需要声明。 自定义异常信息:   父类中已经把异常信息的操作都完成了,所以子类只要在构造时,把异常信息传递给父类通过super语句。   那么就可以直接通过getMessage()方法获取自定义的异常。 继承Exception原因:   异常体系有一个特点:因为异常类和异常对象都可抛,他们都具备可抛性,这个可抛性是Throwable这个体系中的特点。   只有这个体系中的类和对象才可以被throws和throw操作。 throw和throws区别:   throws使用在函数上 后面异常类多个逗号隔开   throw使用在函数内 后面跟异常对象 来源: https://www.cnblogs.com/hongxiao2020/p/12526425.html

C++之类和对象的特性

假装没事ソ 提交于 2020-03-18 04:45:55
   简介:C++并不是一个纯粹的面向对象的语言,而是一种基于过程和面向对象的混合型的语言。 凡是以类对象为基本构成单位的程序称为基于对象的程序,再加上抽象、封装、继承和多态就成为面向对象程序。 1.掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性; 2.掌握类对象的定义; 3.理解类的成员的访问控制的含义,公有、私有和保护成员的区别。 4.能够根据给定的要求定义类并实现类的成员函数;   何为对象? 对象两要素:属性和行为; 属性对应于对象的数据;行为对应于函数; 对象之间可以通过一定的渠道相互联系;要使某一个对象实现某一种行为(操作),应当向它传送相应的 消息 。   封装与信息隐蔽 可以对一个对象进行封装处理,把它的一部分属性和功能对外屏蔽,外界看不到,甚至不可知;这就是封装。 所谓封装有两方面的含义:一是将有关数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相互独立,互不干扰;二是将对象中的某些部分对外隐蔽,即阴部内部细节,保留少量接口,以便与外界联系,接受外界信息。信息隐蔽有利于数据安全,防止无关的人了解和修改。   抽象:表示同一类事物的本质;类是对象的抽象,对象是类的特例,即类的具体表现形式;   继承和软件重用   多态 如果有几个相似而不完全相同的对象,有时要求在向它们发出同一个消息时,它们的反应各不相同,分别执行不同的操作

vue实践---vue结合 promise 封装原生ajax

ⅰ亾dé卋堺 提交于 2020-03-16 03:46:56
有时候不想使用axios这样的外部依赖,想自己封装ajax,这里有两种方法 方法一,在单个页面内使用 封装的代码如下: beforeCreate () { this.$http = (() => { let createFetch = (type, url, params) => { return new Promise((resolve, reject) => { let xhr = new XMLHttpRequest() xhr.onreadystatechange = () => { if (xhr.readyState === 4){ if(xhr.status === 200){ var res = xhr.responseText; try { res = JSON.parse(xhr.responseText) } catch (e) {} resolve(res) } else { reject(xhr.responseText) } } } url += url.includes('?') ? '&' : '?' if (type === 'GET') { let serialArr = [] Object.keys(params).forEach(v => { serialArr.push(`${v}=${params[v]}`) }) url +=

C#基础-Func,Action

一个人想着一个人 提交于 2020-03-15 19:10:18
Func,Action 的介绍及其用法 Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如在反射中使用就可以弥补反射所损失的性能。 Action<T>和Func<T,TResult>的功能是一样的,只是Action<T>没有返类型, Func<T,T,Result>:有参数,有返回类型 Action,则既没有返回也没有参数, Func<T,TResult> 的表现形式分为以下几种: 1。Func<T,TResult> 2。Func<T,T1,TResult> 3。Func<T,T1,T2,TResult> 4。Func<T,T1,T2,T3,TResult> 5。Func<T,T1,T2,T3,T4,TResult> 分别说一下各个参数的意义,TResult表示 委托所返回值 所代表的类型, T,T1,T2,T3,T4表示委托所调用的方法的参数类型, 以下是使用示例: Func<int, bool> myFunc = null;//全部变量 myFunc = x => CheckIsInt32(x); //给委托封装方法的地方 使用了Lambda表达式 private bool CheckIsInt32(int pars)//被封装的方法 {   return pars =

封装与特性(property)

冷暖自知 提交于 2020-03-15 02:06:19
封装 封装就是把一些事物进行隐藏到一个不为人知道的地方 隐藏 在python中都使用__的方式将属性进行隐藏进来(设置为私有) #其实这仅仅这是一种变形操作 #类中所有双下划线开头的名称如__x都会自动变形成:_类名__x的形式: class A: __N=0 #类的数据属性就应该是共享的,但是语法上是可以把类的数据属性设置成私有的如__N,会变形为_A__N def __init__(self): self.__X=10 #变形为self._A__X def __foo(self): #变形为_A__foo print('from A') def bar(self): self.__foo() #只有在类内部才可以通过__foo的形式访问到. #A._A__N是可以访问到的,即这种操作并不是严格意义上的限制外部访问,仅仅只是一种语法意义上的变形 这种自动变形的特点: 类中定义的__x只能在内部使用,如self.__x,引用的就是变形的结果。 这种变形其实正是针对外部的变形,在外部是无法通过__x这个名字访问到的。 在子类定义的__x不会覆盖在父类定义的__x,因为子类中变形成了:_子类名__x,而父类中变形成了:_父类名__x,即双下滑线开头的属性在继承给子类时,子类是无法覆盖的。 需注意的问题: 1、这种机制也并没有真正意义上限制我们从外部直接访问属性