函数封装

类与封装

南楼画角 提交于 2020-02-26 15:49:25
前面我们讲过类之间是存在关系的,类将它复杂零碎的东西全部封装在自己的内部,对它的内部状态我们的调用者一无所知,它表示给用户的是一些简单的使用方式,从这个角度类可以分为2个部分,一个是类的实现细节,一个是类的使用方式,对于调用者而言,类的内部细节我们往往可以忽略它,我们只需要知道怎样用就行了,比如对于用户(调用者)看电视你只需要会换台就行,不用管电视内部是怎么工作的,电视内部工作的实现是工程师需要考虑的(封装),对于用户会用即可 封装的基本概念 : -并不是类的每个属性都是对外公开的 比如女孩子的体重和年龄 -而一些类的属性是对外公开 比如人的姓名和性别 -必须在类的表示中定义属性和行为的公开级别 比如文件系统的权限 C++中类的封装 -成员变量: C++中用于表示类属性的变量 -成员函数: C++中用于表示类行为的函数 -C++中可以给成员变量和成员函数定义访问级别, 成员函数是可以访问成员变量的 public 成员变量和成员函数可以 在类的内部和外界访问和调用 private 成员变量和成员函数只能在 类的内部被访问和调用 在一篇文章的基础上添加两个类,一个是女生类,它肯定继承于人类,我们上面打过比方,女生的体重年龄不希望被别人知道,所以它就是private类型的,这样的语法是C++新引入的访问级别的定义,也就是我们所说的封装的体现,prviate这个关键字就来定义访问级别为私有

100+经典Java面试题及答案解析

情到浓时终转凉″ 提交于 2020-02-26 09:59:53
面向对象编程(OOP) Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改。 代码复用。 增强代码的可靠性和灵活性。 增加代码的可理解性。 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象。下面的章节我们会逐个分析这些特性。 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。 下面列出了使用封装的一些好处: 通过隐藏对象的属性来保护对象内部的状态。 提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。 禁止对象之间的不良交互提高模块化。 参考这个文档获取更多关于封装的细节和示例。 多态 多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。 继承 继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。 抽象 抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java支持创建只暴漏接口而不包含方法实现的抽象的类

axios 封装

≯℡__Kan透↙ 提交于 2020-02-26 00:37:31
const baseURL = ‘http://192.168.7.22:9010’; axios.defaults.timeout = 10000; function apiAxios(method, url, params){ let httpDefault = { method, baseURL, url, headers:{ ‘Content-Type’: ‘application/json’, ‘userName’:store.state.user.userName, ‘userId’:store.state.user.userId }, // params 是即将与请求一起发送的 URL 参数 // data 是作为请求主体被发送的数据 params: method === ‘GET’ || method === ‘DELETE’ ? params : null, data: method === ‘POST’ || method === ‘PUT’ ? JSON.stringify(params) : null, timeout: 10000 } return new Promise((resolve, reject) => { axios(httpDefault) // 此处的.then属于axios .then((res) => { resolve(res) })

vue2 axios 接口函数封装

旧巷老猫 提交于 2020-02-25 00:37:24
封装 axios 工具,编辑 src/api/index.js 文件 首先,我们要使用 axios 工具,就必须先安装 axios 工具。执行下面的命令进行安装 npm install axios -D 这样,我们就安装好了 axios 工具了。 新建了一个 src/api/index.js // 配置API接口地址 var root = 'https://cnodejs.org/api/v1' // 引用axios var axios = require('axios') // 自定义判断元素类型JS function toType (obj) { return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase() } // 参数过滤函数 function filterNull (o) { for (var key in o) { if (o[key] === null) { delete o[key] } if (toType(o[key]) === 'string') { o[key] = o[key].trim() } else if (toType(o[key]) === 'object') { o[key] = filterNull(o[key]) } else if (toType(o[key]

小程序封装request请求

南楼画角 提交于 2020-02-24 20:16:53
参考了网上的一些资料,具体的网址现在已经找不到了,觉得的挺好的就整理下给大家使用下 //封装request请求 var sendRequest = function (url, method, data = {}, header = {}) { var promise = new Promise(function (resolve, reject) { wx.request({ url: url, data: data, method: method, header: header, success: function (res) { //resolve用于具体调用中 resolve(res.data); }, fail: function (err) { reject(err); } }) }) return promise } module.exports = { sendRequest: sendRequest } 引用:在页面的js中 var util = require('../../utils/util.js'); //GET方法 hqgood: function () { //请求数据 util.sendRequest(urls + '/你的接口', 'GET', { 传递的参数,例如(page: page) }, {'content-type':

封装Keras模型,使用skleran实现超参数随机随机搜索

ⅰ亾dé卋堺 提交于 2020-02-24 13:28:06
封装Keras模型,使用skleran实现超参数随机随机搜索 本文展示如何使用RandomizedSearchCV进行超参数随机搜索 RandomizedSearchCV 1.将tf.keras.models转化为sklearn的model 2.定义参数集合 3.搜索参数 相关的参数注释已经展示在代码中 1.引用函数库 import matplotlib as mpl import matplotlib . pyplot as plt % matplotlib inline #为了能在notebook中显示图像 import numpy as np import sklearn import pandas as pd import os import sys import time import tensorflow as tf from tensorflow import keras 2.加载数据 from sklearn . datasets import fetch_california_housing #从sklearn中引用加州的房价数据 housing = fetch_california_housing ( ) print ( housing . DESCR ) print ( housing . data . shape ) print ( housing .

原生ajax函数封装

Deadly 提交于 2020-02-24 08:33:18
原生ajax函数 function ajax(json){ json=json || {}; if(!json.url){    return;   } json.data=json.data || {}; json.type=json.type || 'get'; var xmlhttp = null; if(window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); }else{ xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');  //兼容IE } //将data转换成字符串 var arr = []; for(var key in json.data){ arr.push(key + "=" + json.data[key]); } var postData = arr.join("&"); json.type = json.type.toUpperCase(); if(json.type === "GET"){ xmlhttp.open(json.type, json.url+'?'+postData+"&time=" +Math.random(), true); xmlhttp.send(); }else{ xmlhttp.open(json.type, json.url,

自己封装个ajax

♀尐吖头ヾ 提交于 2020-02-24 08:15:49
你是否发现项目中有很多页面只用到了框架不到十分之一的内容,还引了压缩后还有70多kb的jquery库 你是否发现项目中就用了两三个underscore提供的方法,其他大部分的你方法你甚至从来没有看过 你是否发现fetch好像比ajax好用那么一点 你是否想过自己封装个ajax.... 纯前端写得久了,便想折腾点事情。比如先定一个小目标,年前自己写个类jquery轻量级库.... 那么就从自己封装一个ajax切入吧,首先我整理的一个思维导图,一目了然 解析参数数据 通常我们的请求后面会有一些参数,如果是get请求当然可以直接通过'&'拼在url后面。那么post就需要做一下处理了,如果参数是字符串,则将字符串用‘&’符号切割转化成键值对形式,同时用encodeURIComponent转码,最后类似于jquery的处理,将/%20/g(空格)替换成'+'。       getData: function(){ var name, value; if (opts.data) { if (typeof opts.data === "string") { opts.data = opts.data.split("&"); for (var i = 0, len = opts.data.length; i < len; i++) { name = opts.data[i].split("=")

React组件应该如何封装?

泄露秘密 提交于 2020-02-23 21:57:12
封装 一个封装组件提供 props 控制其行为而不是暴露其内部结构。 耦合是决定组件之间依赖程度的系统特性。根据组件的依赖程度,可区分两种耦合类型: 当应用程序组件对其他组件知之甚少或一无所知时,就会发生松耦合。 当应用程序组件知道彼此的许多详细信息时,就会发生紧耦合。 松耦合是我们设计应用结构和组件之间关系的目标。 松耦合应用(封装组件) 松耦合会带来以下好处: 可以在不影响应用其它部分的情况下对某一块进行修改。、 任何组件都可以替换为另一种实现 在整个应用程序中实现组件复用,从而避免重复代码 独立组件更容易测试,增加了测试覆盖率 相反,紧耦合的系统会失去上面描述的好处。主要缺点是很难修改高度依赖于其他组件的组件。即使是一处修改,也可能导致一系列的依赖组件需要修改。 紧耦合应用(组件无封装) 封装 或 信息隐藏 是如何设计组件的基本原则,也是松耦合的关键。 信息隐藏 封装良好的组件隐藏其内部结构,并提供一组属性来控制其行为。 隐藏内部结构是必要的。其他组件没必要知道或也不依赖组件的内部结构或实现细节。 React 组件可能是函数组件或类组件、定义实例方法、设置 ref、拥有 state 或使用生命周期方法。这些实现细节被封装在组件内部,其他组件不应该知道这些细节。 隐藏内部结构的组件彼此之间的依赖性较小,而降低依赖度会带来松耦合的好处。 通信 细节隐藏是隔离组件的关键。此时

C#里封装 继承 多态

白昼怎懂夜的黑 提交于 2020-02-22 17:37:09
一、封装 C#中可使用类来达到数据封装的效果,这样可以使数据与方法封装成单一元素,以便于通过方法存取数据。除此之外,还可以控制数据的存取方式。 在面向对象编程中,大多数都是以类作为数据封装的基本单位。类将数据和操作数据的方法结合成一个单位。设计类时,不希望直接存取类中的数据,而是希望通过方法来存取数据。这样就可以达到封装数据的目的,方便以后的维护升级,也可以在操作数据时多一层判断。 此外,封装还可以解决数据存取的权限问题,可以使用封装将数据隐藏起来,形成一个封闭的空间,然后可以设置哪些数据只能在这个空间中使用,哪些数据可以在空间外部使用。一个类中包含敏感数据,有些人可以访问,有些人不能访问,如果不对这些数据的访问加以限制,后果将会非常严重。所以要对类的成员使用不同的访问修饰符,从而定义他们的访问级别。 封装语法: Public 数据类型 变量名 { get { return 变量名 } set { 变量名=value; } } 当然了!get和set有快捷键的:光标选择要封装的属性然后右键点击快速操作和重构…(Chrl+.)点击封装字段(并使用属性) 二、继承 继承是面向对象最重要的特性之一。任何类都可以从另外一个类继承,这就是说,这个类拥有它继承类的所有成员。在面向对象编程中,被继承的类称为父类或基类。C#中提供了类的继承机制,但只支持单继承,而不支持多继承,即在C