函数封装

封装的使用及演示代码

一世执手 提交于 2019-12-24 16:38:21
封装是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作访问。   从被封装的对象内部来说,将对象运行所需的方法和数据被隐藏(保护)在数据对象的内部,只保留一些对外接口使之与外部发生关系;从外部用户来看,用户无需知道对象内部的细节(当然也无从知道),但是可以通过该对象对外的提供的接口来访问该对象,通俗来说“不要告诉我你是怎么做的,只要做就可以了”。   所以封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果不想被外界方法修改,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。    封装的好处:   1、提高了安全性   2、提高了复用性   3、隐藏了实现细节   封装的使用步骤   访问修饰符分别为public、protected、default、private。安全级别分别从高到低为private>default>protected>public。 下面我通过一个实例来表示: 在编辑属性的时候一定不要忘记这些类被外界访问的方法,这个时候我们就可以使用getter和setter方法,在方法内可以设置取值范围。 main函数中的代码如下: 最后,我们在main函数里的对象,不能再直接调用属性了,只能通过getter和setter方法来进行调用。

python+selenium封装UI自动化框架

血红的双手。 提交于 2019-12-24 12:14:41
seleinum框架 框架的思想: 解决我们测试过程中的问题:大量的重复步骤,用自动化来实现 1)配置和程序的分离 2)测试数据和程序的分离 3)不懂编程的人员可以方便使用:使用的时候不需要写程序 4)有日志功能,实现无人值守 5)自动发报告 6)框架中不要有重复的代码,实现高度的封装和复用 推荐使用关键字驱动、混合驱动 为什么要编写程序呢? 通用性的东西满足不了个性化的需求 测试的工具:python+selenium 接口测试用例:excel 一、搭建自动化测试的目录结构 分层如下: 1、Action包: 放置关键字文件 2、Config目录: 所有配置文件,日志的配置文件;把所有的项目相关的配置均放到这里,用python支持较好的配置文件格式ini进行配置。实现配置与代码的分离 3、Projvar包:项目所有的公共变量,如:目录、自定义变量名称; 4、ScreenCapture目录:存放截屏目录,按照年月日小时来建目录; 5、TestData目录:放测试将数据文件,可以把所有的testcase的参数化相关文件放在这里,一般采用xlsx、xml等格式。实现数据与代码分离; 6、TestScript包:测试脚本,主程序 7、Util包:封装的公共的类,包括读取config的类,写log的类,读取excel、xml 的类、生成报告的类(如HTMLTestRunner)、数据库的连接

13、用模块封装代码

北慕城南 提交于 2019-12-24 04:23:35
1、什么是模块 模块试运行在严格模式下并且没有办法退出运行的JavaScript代码。 ①、在模块顶部创建的变量不会自动被添加到全局共享作用域,模块必须导出一些外部代码可以访问的元素。模块也可以从其他模块导入绑定。 ②、在模块的顶部,this的值是undefined ③、模块不支持HTML风格的代码注释 2、导出的基本语法 // 导出数据 export var color = "red"; export let name = "zhangdasan"; export const magicNum = 4; // 导出函数 export function(num1,num2){ return num1+num2; } // 导出类 export class Rectangle{ constructor(length,width){ this.length = length; this.width = width; } } // 定义一个函数,之后将它导出 function multiply(num1,num2){ return num1*num2; } export multiply; 3、导入的基本语法 import { identifier1, identifier2 } from "./example.js"; 必须把文件名后缀带上。 Node

匀速运动的函数封装

≯℡__Kan透↙ 提交于 2019-12-24 03:59:27
匀速运动的函数封装 小鸟一只大家多指点 css样式: <style type="text/css"> * { margin : 0 ; padding : 0 ; } #box { width : 100px ; height : 100px ; background : red ; position : absolute ; left : 0 ; top : 100px ; } #pox { width : 100px ; height : 100px ; background : blue ; position : absolute ; left : 0 ; top : 251px ; } #position { width : 1px ; background : black ; height : 500px ; position : absolute ; left : 500px ; } </style> 结构: //JS代码 < script type = "text/javascript" > //匀速运动 (位置发生改变:需要定位) var flyToRight = document . getElementById ( "flyToRight" ) ; var flyToLeft = document . getElementById ( "flyToLeft" )

C++友元和内部类

孤街浪徒 提交于 2019-12-23 21:59:50
一、友元 1.1 友元分为:友元函数和友元类 友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用。 1.2 友元函数:友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。 说明: ① 友元函数可访问类的私有成员,但不是类的成员函数 ② 友元函数不能用const修饰 ③ 友元函数可以在类定义的任何地方声明,不受类访问限定符限制 ④ 一个函数可以是多个类的友元函数 ⑤ 友元函数的调用与普通函数的调用和原理相同 1.3 友元成员函数:friend函数不仅可以是一般函数(非成员函数),而且可以是另一个类中的成员函数。 注意:可能会用到类的提前引用声明。 #include <iostream> using namespace std; class Date; //对Date类的提前引用声明 class Time { public: Time(int hour, int minute, int second) :hour(hour) , minute(minute) , second(second) {} void display(Date& d); //引用Date类的对象 private: int hour; int minute; int second; };

[面向对象学习笔记] 封装、抽象、继承、多态分别可以解决那些编程问题

不羁岁月 提交于 2019-12-23 18:17:00
封装 是什么封装 封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方法来访问内部信息或者数据。例如在Java中我们在定义一个类时,会给一个类加属性,我们给将这些类属性设置为private,然后给这些属性添加一些方法,有的只能被获取,不能被修改,有些可以被修改,但是不可以被重置。在Java中是通过一些关键字来提供访问权限控制。如果Java中没有提供这些关键词,所有的属性默认都是public的,那么外部的代码都可以随意的更改对象中属性的值,这样是无法达到隐藏信息和保护数据的目的,也就是无法支持封装特性。 封装的意义 如果我们对类中属性的访问不加以控制,那任何代码都以访问、修改类中的属性,虽然这样看起来更加灵活,但是灵活以为着不可控,属性可以随意被修改,修改的逻辑可能散落在哥哥角落,势必会影响代码的可读性、可维护性。 除此之外,类通过有效的方法暴露必要的操作,也能提高类的易用性。我们把属性封装起来,暴露少许的几个不要的方法给调用者,调用者就不需要了解太多背后的业务细节,用错的概率就减少很多。 抽象 什么是抽象 在面向对象编程中,我们常借助编程语言提供的接口类或者抽象类这两种语法机制,来实现抽象这一特性。例如:在Java中,是通过interface和abstract关键字语法来实现。这种抽象是指把一些类的公共行为抽象到更高的层次。

javascript面向过程与面向对象

自闭症网瘾萝莉.ら 提交于 2019-12-23 13:52:52
1 面向过程与面向对象 1)面向过程:面向过程专注于如何去解决一个问题的过程步骤。编程特点是由一个个函数去实现每一步的过程步骤,没有类和对象的概念。 2)面向对象:专注于由哪一个对象来解决这个问题,编程特点是出现了一个类,从类中拿到对象,由这个对象去解决具体问题。 对于调用者来说,面向过程需要调用者自己去实现各种函数。而面向对象,只需要告诉调用者,对象中具体方法的功能,而不需要调用者了解方法中的实现细节。 2 面向对象的三大特征 这个对于计算机专业的人来说,相信大家已经很熟悉啦,那我就再说一遍吧~ 面向对象的三大特征是 继承、封装、多态 。JS可以模拟实现继承和封装,但是无法模拟实现多态,所以我们说JS是一门 基于 对象的语言,而非是面向对象的语言。 3 类和对象 1、类:一类具有相同特征(属性)和行为(方法)的集合。 比如 ,人类具有身高、体重等属性,吃饭、大笑等行为,所以,我们可以把人划分为一类。 2、对象:从类中,拿出具有确定属性值和方法的个体。 比如 ,张三-->属性:身高180体重180 方法:说话-->我叫张三,身高180 3、类和对象的关系: ①类是抽象的,对象是具体的(类是对象的抽象化,对象是类的具体化) ②类是一个抽象的概念,只能说类有属性和方法,但是不能给属性赋具体的。比如,人类有姓名,但是不能说人类的姓名叫什么。 对象是一个具体的个例

ES6之用模块封装代码

无人久伴 提交于 2019-12-23 05:32:36
什么是模块? 模块( Modules )是使用不同方式加载的 JS文件(与JS原先的脚本加载方式相对)。这种不同模式很有必要,因为它与脚本( script )有大大不同的语义: 模块代码自动运行在严格模式下,并且没有任何办法跳出严格模式; 在模块的顶级作用域创建的变量,不会被自动添加到共享的全局作用域,它们只会在模块顶级作用域的内部存在; 模块顶级作用域的 this 值为 undefined ; 模块不允许在代码中使用 HTML 风格的注释(这是 JS 来自于早期浏览器的历史遗留特性); 对于需要让模块外部代码访问的内容,模块必须导出它们; 允许模块从其他模块导入绑定。 基本的导出 你可以使用 export 关键字将已发布代码部分公开给其他模块。最简单方法就是将export放置在任意变量、函数或类声明之前,从模块中将它们公开出去: // 导出数据 export var color = "red"; export let name = "Nicholas"; export const magicNumber = 7; // 导出函数 export function sum(num1, num2) { return num1 + num1; } // 导出类 export class Rectangle { constructor(length, width) { this

关于JavaScript面向对象那些事

廉价感情. 提交于 2019-12-23 00:08:51
当你在使用手机的时候,你会发现,你并不懂得其中的原理就会操作了,其实这就是面向对象的思想。面向对象还有很多地方都会运用到。JavaScript也不例外,现在跟随我的脚步,来学习一下吧。 面向过程和面向对象编程概述 面向过程编程就是分析出解决问题的步骤,然后使用函数把这些步骤一步步实现,重心放在完成的每个过程上。 面向对象则是以封装的思想,将问题分析得到的数据封装成一个个的对象,然后通过对对象的操作来完成相应的功能。 举个栗子:厨师炒菜 以面向过程的思想来分析应该分为下面几个步骤: ​ 1.检查食材是否齐全 2.如果不不够,去菜市场买菜 3.洗菜 4.开火 5.按炒菜(按顺序放入相应的食材,调料等) 6.出锅装盘 以面向对象的思想分析则是这样的: ​ 1.厨师,检查食材,炒菜 2.采购员,去菜市场买菜 3.墩子,洗菜,切菜,备菜 ​ 通过调用上面对象中的行为方法即可完成炒菜的整个过程 从上面的例子可以看出,面向对象和面向过程最大的不同在于,面向对象关心的是由哪些对象,每个对象应该有哪些功能,而面向过程关心的是实现过程中的每个步骤。 那么这两种思想到底孰优孰劣呢?从表面上看,貌似面向对象更好,为什么呢?因为它完全符合我们的正常思维方式,所以在接受度方面,面向对象的思想肯定是更好。但是面向过程也有他的优势,就是灵活便捷,而面向对象相对来说会更耗资源,更慢一点。 所以,至于以后使用哪一种

直击JavaScript之面向对象

纵然是瞬间 提交于 2019-12-23 00:05:06
有时候,我们使用电脑的时候,并不知道它的原理是什么,但是就是会使用他,这就是面向对象。同样的,在JavaScript中也可使用这种原理,接下来就随我一起探索一下关于JavaScript面向对象的内容吧。 面向过程和面向对象编程概述 面向过程编程就是分析出解决问题的步骤,然后使用函数把这些步骤一步步实现,重心放在完成的每个过程上。 面向对象则是以封装的思想,将问题分析得到的数据封装成一个个的对象,然后通过对对象的操作来完成相应的功能。 举个栗子:厨师炒菜 以面向过程的思想来分析应该分为下面几个步骤: ​ 1.检查食材是否齐全 2.如果不不够,去菜市场买菜 3.洗菜 4.开火 5.按炒菜(按顺序放入相应的食材,调料等) 6.出锅装盘 以面向对象的思想分析则是这样的: ​ 1.厨师,检查食材,炒菜 2.采购员,去菜市场买菜 3.墩子,洗菜,切菜,备菜 ​ 通过调用上面对象中的行为方法即可完成炒菜的整个过程 从上面的例子可以看出,面向对象和面向过程最大的不同在于,面向对象关心的是由哪些对象,每个对象应该有哪些功能,而面向过程关心的是实现过程中的每个步骤。 那么这两种思想到底孰优孰劣呢?从表面上看,貌似面向对象更好,为什么呢?因为它完全符合我们的正常思维方式,所以在接受度方面,面向对象的思想肯定是更好。但是面向过程也有他的优势,就是灵活便捷,而面向对象相对来说会更耗资源,更慢一点。 所以