IT第十八天

上午

封装

1.关键字this,是表示该类在实例化时的对象,即this.表示为该对象的属性

2.类的数据保护,set、get方法的写法规则,为了之后的反射机制的读取数据,set方法中对于数据的检测

3.构造方法在封装中的使用,可以避免在实例化时绕开set方法,导致类属性值未赋值,此时可以在类中使用带属性参数的构造方法,覆盖默认构造方法,以强制在实例化时进行赋值,根据得到的参数可以在构造方法中调用set方法进行赋值,类的实例化时只会调用一个匹配的构造方法

程序设计:单例模式

1.即:当程序被多次运行时,只会产生一个在运行程序,无论用户重复运行多少次,始终都是之前已运行的程序的状态

2.将构造方法的访问修饰符设置为private,并添加一个方法用于获取当前实例,将该实例在该类中进行静态变量的声明,并在添加的静态方法中进行判断null、new、return,这里添加的方法名暂定为:getInstance()为静态方法,即在实例化该类时不需要使用new关键字,直接类名.getInstance()调用

3.对象的比较,==比较的是内存地址

下午

重载

1.重载是为了实现方法名的复用

2.方法名可以和类名相同,但是一般我们不这么命名我们写的方法,除了构造方法

继承、重写

1.Object类是所有类的基类/父类,包括所有的系统类、用户编写的类,例如:当用户编写的类没有编写构造方法时,Java虚拟机会自动为用户编写的类创建一个默认构造方法

2.方法Object.finalize(),和Java垃圾回收机制相关的一个方法,用于在执行真正的垃圾回收前调用的方法,目的是在不可撤销的丢弃对象之前执行清除操作;对于任何给定对象,Java虚拟机最多只调用一次finalize方法

3.方法的重写,建议在方法前加上@Override,以避免在方法编写时出现错误,导致新方法的添加,方法一旦被重写,父类中的相同方法即不存在

晚上

未完成

1.重要方法:Object.finalize()方法的学习

2.继承、方法的重写

笔记

1.关键字this表示的是该类在实例化时的对象

2.类的属性的set、get方法的编写设计,可以在set方法中对赋值操作接收的参数进行检测

3.类的构造方法的编写,猜想可以在构造方法中对类的属性进行默认初始化,听取的建议是可以将构造方法写成带参数的构造方法,这样会强制在对类进行实例化时赋值操作

4.程序设计:单例模式,是为了达到程序被多次运行(猜想:或类被多次实例化)时,都是同一个对象,即static类型对象、程序不允许被同时运行多个客户端

5.继承:Object类是所有类的基类,包括系统类+用户类

6. 重要方法:Object.finalize()方法的学习

7.方法的重写:建议在方法前加上@Override,避免方法的误添加

8.子类最多只能继承父类,但是子类可能拥有多个”父类“,即父类可能继承其他的类,还有如:Object类是所有类的基类

IT第十四天、十五天、十六天、十七天、上周总结

图书系统

《系统设置》

(1)系统模块划分

1.system:管理员模块、用户模块、系统主界面、公共方法接口、字节控制

2.bean:图书抽象类、单本图书数据类、消息记录类、用户类、动态抓取数据类

3.data:伪数据库类

(2)模块功能设置

1.管理员模块:图书管理(查看图书、新增图书、修改图书、删除图书)、用户管理(查看用户、修改用户会员状态)、申请管理(查看申请、审核申请)

2.用户模块:个人信息查看、热门图书推荐、检索图书、借书/还书/充值、系统设置(SYS)、注销

3.系统主界面:登录、注册、关于系统、退出

4公共方法(暂未完全整理):验证码的生成和校验、用户当前输入的退出、其他

5.字节控制:控制\t的输出数量

6.其他类文件:

Book抽象类:包含书名、作者、类别、单价

Books类:包含Book实体、编号、已借阅用户、是否借阅

PopularBooks类:用于在data中动态抓取图书信息

Record类:充值记录审核信息

User类:用户对象类

Data类:虚拟数据库

(3)模块测试、维护

【Question】

1.为什么使用do-while进行功能的逻辑循环,而不是用方法中方法的调用,即类似递归的使用

2.在进行模块的编码时,每完成一个模块的编码,都会对该模块进行模块测试,当测试完全通过后,才会进行下一个模块的编码;当然,可能会再后续模块的编码中会涉及到一些方法的共用,这样可能会导致之前编码、测试通过的模块被修改,基于此种情况的发生,应该在项目编码之前做好模块的设计和可能会编写的方法的复用性

3.在PopularBooks类的编写中,没有添加图书编号的属性,这里借助数组的索引作为某本图书的伪编号,当然,在实际的开发中,应该拉取Data中的编号作为主键进行保存,而不需要保存图书的其他信息

4.对于引用数据类型的使用问题:系统运行前需要初始化一些Data中的运行数据,在对BookS中的借阅用户数组进行初始化时,因为初始化了多本图书,用的是同一个用户数组,导致用户在借阅某一本书的时候,进行该本书的借阅用户写入时,其他图书也被写入了用户,就是因为其他图书也是引用的相同的借阅用户数组

【Extend】

1.用户信息管理页面,添加申请管理员的接口,该申请会被保存到申请记录中

2.在热销图书界面,调用借阅方法,实现借阅的功能【已优化】

3.在检索图书界面,调用借阅方法,实现借阅的功能(这里的借阅暂时不需要限制在搜出的结果内)【已优化】

4.在系统执行操作过程中,定时给用户显示操作状态【以优化】

5.在用户输入需要节约的图书的编号后,如果该编号图书不为空,则给用户显示该本书的信息【已优化】

6.抽出可能会公用/复用的方法,在独立的类中进行编写【已优化】

7.还书功能的实现【已优化】

【Bug】

1.用户已借图书显示错误【已修复】原因:关联图书数据时发生错误,PopularBooks的图书索引设计和Data的图书索引设计存在偏差

2.用户在输入所接图书的编号时,可能会超出实际的索引【已修复】原因:对用户输入的信息进行检索数据前的判断,正确后才会检索数据

3.用户在借阅一本图书时,其他图书的借阅用户被重写【已修复】原因:引用数据类型的使用错误

4.在进行ALL删除图书时,出现了删除图书错误:误删或未删除【已修复】原因:在执行ALL删除操作前,先在Data中取出了所有可能被删除的图书索引,而在进行删除操作时,每删除一本图书后,都会对book数据进行重新调整,导致图书索引发生变化,因此发生错误,【这是由于系统在初期设计时发生的设计缺陷】,暂时弥补是,先进行排序,每进行一次删除操作时,对已取出的索引数组进行-1操作

(四)总结

在进行项目的编码前,应该尽可能的进行程序的设计,分析需要实现的功能,而得到可能会用到什么样功能的方法,并进行总结、归纳,实现代码复用性的最大化;在进行程序的设计时还应该考虑到部分逻辑的设计,逻辑的设计在即要避免过度编码技巧的同时、也应该做到程序实现的缺陷避免(最好是可以讨论下或可以找个同僚说说自己的想法、交换交换意见);模块测试的应用,模块测试应该是最近来说需要经常使用的测试方法,在每次完成一个模块的编写后,都应该进行该模块的测试,在测试完全通过后,再进行下个模块的编写;调试程序时,先想想逻辑上是否可能会有什么缺陷,然后进行debug的调试,快速定位到错误的根源;程序的逻辑跳转设计时,可以避免【递归式】的调用,尽量避免,因为编程的技巧在实际的开发中可能不是那么的重要,而且递归式的调用方法,感觉上比较的“嵌套”,本来应该回到上级菜单进行跳转的地方,却在当前方法中调用跳转方法,程序过于的混乱;持续整理中……

(五)知识总结

1.关键字static在声明变量时的使用,不需要实例化该类,即可通过类名.变量名使用该变量,但是这样会非常开销内存

2.对于引用数据类型的使用,没有关系的两个变量应该尽量的避开使用像的引用进行赋值

3.方法equals()不能接受null参数/前缀不能为null,因此可以在使用前对其判断if   == null

4.关于管理员权限的问题,即使是超级管理员也不应该能查看用户的比较私密的信息,如:密码;而对于普通管理员的权限,也不应该可以修改其他的普通管理员,即管理员的权限只能向下,不能持平或向上

5.对于double类型的数据进行输出格式化时,可以使用DecimalFormat对其进行格式化【暂未实践】

6.对程序中,在显示信息时,可能会关联其他的显示,而这些显示量可能会比较大,因此可以对这部分关联的信息,进行单独的显示

7.对于本程序的一个设计缺陷/不合理之处,是在进行图书的批量删除时,不应该先全部取出源数据的索引,再进行逐条的删除操作,而应该独立的写成删除方法,进行调用,这样不仅减少了代码行,也更符合程序的设计逻辑

(六)公用方法整理

IT第十八天 - 类的封装、继承、重载、上周总结★★★的更多相关文章

  1. java类的封装 继承 多态

    1.猜数字小游戏 package cn.jiemoxiaodi_02; import java.util.Scanner; /** * 猜数字小游戏 * * @author huli * */ pub ...

  2. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  3. Java—类的封装、继承与多态

    一.类和对象 1.类 类是数据以及对数据的一组操作的封装体. 类声明的格式: 类声明 { 成员变量的声明: 成员方法的声明及实现: } 1.1 声明类 [修饰符] class 类<泛型> ...

  4. 3.JAVA-方法重载,类的封装,构造/析构方法

    1.方法重载 和C++的函数重载一样,主要是实现多个相同的函数名,但是参数表不同. 参数表不同主要有以下几种 1) 参数个数不同 2) 参数类型不同 3) 参数顺序不同 2.类和对象 类class 用 ...

  5. c++的类的封装/继承/多态的简单介绍

    本篇文章仅仅从很表层来介绍一个C++语言中的类,包括什么是类,类的封装性/继承性和多态性.高手直接跳过吧,看了浪费时间,新手或者想温习一下的可以浏览看看. 1. 什么是类? 到底什么是类(class) ...

  6. ECMAScript6 中 类的封装与继承

    ECMASCRIPT6中实现了class关键字,这样使我们更容易也更形象的进行类的操作 <script type="text/javascript"> class OF ...

  7. java中关于类的封装与继承,this、super关键字的使用

    原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5454849.html. this关键字: this代表当前对象,它有以下几种用途: 1.本类 ...

  8. php函数、类和对象以及类的封装、继承、类的静态方法、静态属性

    1.函数     php内置函数可以直接使用,如果没有安装php扩展即可     自定义函数 //函数function 函数名 function dump($var = null){ //支出默认参数 ...

  9. java类的封装、继承、多态

    一.封装(encapsulation) 封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐蔽类(对象)的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系.封装的特 ...

随机推荐

  1. 如何在windows server 2012 R2 部署WEB项目

    tip: 今天发布项目到windows server 2012 R2上面. 没有接触过,其实很简单,看图: 这是安装IIS成功后显示的总图: 二.点击Manage ,选择Add Roles and F ...

  2. html文件引入其它html文件的几种方法:include方式

    可以在一个html的文件当中读取另一个html文件的内容吗?答案是确定的,而且方法不只一种,在以前我只会使用iframe来引用,后来发现了另外的几种方法,那今天就总结这几种方法让大家参考一下. 1.I ...

  3. zoj 2966 Build The Electric System

    就是套了个prim算法就ac了 #include <stdio.h> #include <string.h> #define MaxInt 0x3f3f3f3f #define ...

  4. JavaScriptCore.framework基本用法(二)

    接着上节我们讲到的iOS调用js 下来我们使用js调用iOS js调用iOS分两种情况 一,js里面直接调用方法 二,js里面通过对象调用方法 首先我们看第一种,直接调用方法. 其中用到了iOS的bl ...

  5. mysql查询数据库中包含某字段(列名)的所有表

    SELECT TABLE_NAME '表名',TABLE_SCHEMA '数据库名',ORDINAL_POSITION '顺序',COLUMN_NAME '字段',DATA_TYPE '类型' ,CH ...

  6. Linux软件间的依赖关系(转)

    Linux中的软件大部分是零碎的,其粒度比windows的小很多,软件之间的依赖关系很强烈,下面是自己的一些理解: 一.Linux中的软件依赖Linux中的软件依赖关系成一颗拓扑树结构,比如A直接或间 ...

  7. yoeman构建Asp.net core项目并且实现分层

    在Mac上开发使用yoeman构建Asp.net core项目并且实现分层引用 1.Yoeman? yoeman是一个自动化脚手架工具.它提供很多generator,generator相当于Visua ...

  8. Qt的目录依赖问题----怎样生成一个绿色的Qt软件包

    Qt的目录依赖问题----怎样生成一个绿色的Qt软件包 一.核心问题: 如果将编译好的Qt文件拷贝到任何目录下,作为一个绿色软件库来使用? 二.原理讨论 由于Qt在编译的时候将安装路径硬编码到了库文件 ...

  9. c++复习(未完待续)

    1.使函数不能在定义该函数的文件之外访问的方法: (1)声明函数为static(2)将函数放到无名名字空间中 namespace { void g() { ......... } }

  10. 道路软件质量:SourceMonitor

    有些事情必须这样做,不是幸福,但是,缓解疼痛,因为不.更痛苦--这是无奈. 夏中义 <文心独白> 1 简介 博客没有更新了一段时间,了阿里上市的成功之处:选择和坚持.事实上人生并没有绝对的 ...