• 面向对象程序设计课程感想


      写在前面:(橙色字体为java重点内容,黄色标记为重点总结,绿色标记为例子)

      由于疫情,Java课采用了网络教学,相比于传统教学,网络教学可以在课后观看回放,这使得查漏补缺变得更加方便。通过一次次的大作业,能够一步步巩固知识,并加深对类设计的体会。

      先谈谈这几次大作业的总结,8次的大作业由浅入深,先是简单的解题,后面的大作业中却时常出现之前题目中所解答的题目相似的题,这样一来,我就必须要学会去进行代码的复用,我也下定决心在之后的编程中一定要考虑代码的复用性,这样的好处在进行卡片分类题目时得到了体现,我只需要对卡片分类的类增加内容就可以实现不同卡片的分类排序。这之中不仅仅是复用性的体现,还能看出java单一功能原则的好处,在复用是目的明确,增加删除代码量少,极大节约了时间。还有课堂上讲的雨刷类设计,这是这是迪米特法则和依赖倒置原则的运用。可以发现,在增加了抽象类后,程序可以较为简便的将内容进行扩充。除了这种类型的题目,还有字符串正则表达式这一类题型,相比于普通的题目,这种题目更加复杂,也跟加耗时,主要是对表达式的处理和合法性校验需要通过正则表达式来处理,类似水文校验,就需要对日期、开度、水的流速等的合法性进行校验。

      面向对象程序设计有三大特征:封装、继承、多态封装的意义:1、封装的意义在于保护或者防止代码(数据)被我们无意中破坏。2、保护成员属性,不让类以外的程序直接访问和修改;3、隐藏方法细节。继承的意义:主要实现重用代码,节省开发时间。多态的三个条件:1.继承的存在(继承是多态的基础,没有继承就没有多态);2、子类重写父类的方法(多态下调用子类重写的方法)3、父类引用变量指向子类对象(子类到父类的类型转换)。实现多态方式:1.接口多态性;2.继承多态性;3.通过抽象类实现的多态性。多态的好处:1.可替换性;2.可扩充性;3.接口性;4.灵活性;5.简化性。

      面向对象与面向过程的区别,这是我刚开始·Java课程时的疑惑,刚开始我觉得java是完全可以使用面向过程的思想来解题的,的确如此,刚开始时我就是按照面向过程的方式来解题的,但是在之后的学习中,我发认识到面向对象的独特之处,从农夫过河到雨刷类设计,从单一图形的面积计算到多种图形的继承重载,都能发现单独使用一个类来存放一类物体的特有属性和特有方法会极大程度上提高程序的复用性。我也深刻的体会到面向对象与面向过程的不同。下面是一个例子:要求作一个学生成绩管理系统,通常就是三个表,学生、课程、成绩,其中成绩表中包含学生名字, 课程名称,以及分数等。 那么以面向过程的设计思路来看,增删改查的操作就是4个独立的功能,分别用一个过程来实现,如: 录入一个学生的某门课程的成绩,需要参数:学生id,课程id,分数,操作就是“成绩表中插入一条记录” 。 如果用面向对象的设计思路,那么首先分析对象,通常与数据库表对应: 学生对象:属性包括学生姓名、学号。 课程对象:属性包括课程名称 成绩对象:属性为分数,同时具有相关的学生与课程的引用,得到成绩的方法可以放入课程类中,学生类可以得到学生的所有课程。

      说到复用性,不得不说大作业中的日期类求解,在第三次大作业中求解了(日期类设计、日期问题面向对象设计(聚合一)、日期问题面向对象设计(聚合二))三道有关日期类设计题,在此之前已经对题目中日期相关问题进行求解,所以可以通过第二次大作业的代码来计算,还有多次大作业中对图形类的求解,也是复用性的体现。这样不仅仅减少了程序出错误的可能性,还能节约代码编写时间,这样的好处不言而喻!

      java有6个基本原则:(单一职责原值、开闭原则、里氏代换原则(LSP)、依赖倒置原则、接口隔离原则、迪米特法则)以下是我对java基本原则的理解:(

      单一功能原则:这个原则规定了一个类调用的方法执行一个功能,每个抽象对象对应一个类,这个在多次的大作业程序复用时都能看出代码单一原则,复用时就无需再判别某段代码是干什么的,哪一段是你所需的代码,而是对一整个类进行复用,再对所需功能进行扩充。

      里氏替换原则:基类对象可以替换成子类对象,在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。还需注意的是一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象,也就是狼属于动物类,但是狼不能调用被捕食的方法。

      开闭原则:在两个模块有相互依赖关系时,低一级模块使用高一级模块时需要使用接口,也就是day类中使用Month month;来调用Month类。在对类的设计时,注重使用抽象类,可以减少程序在需求改变时模块改动太大的问题,也就是雨刷器类设计时对于不同的雨刷设计,可以通过两个雨刷器处理类继承一个抽象类来实现不同的模式。

      依赖反转原则:依赖倒转原则要求我们在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,高层模块不应该依赖底层模块,两个都应该依赖抽象,抽象不应该依赖细节,细节应该依赖抽象。

      迪米特法则:类与类之间的关系越少越好,方便类的复用,例如圆柱类中的求表面积方法对圆类中求面积方法有依赖,那么圆柱类复用性会降低。包括以下几个类(当前对象本身、 以参数形式传入到当前对象方法中的对象、当前对象的成员对象、如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友、 当前对象所创建的对象)

      组合/聚合复用原则:要尽量使用类的合成复用,尽量不要使用继承,能有效降低耦合度。)

      通过这几个月来的学习,我已经能灵活运用Java编写代码,并能够独立进行类的设计。在不断的学习探索中,在多次的独立思考中,我的编程能力相比于上学期有了较大的提高。当然,我不能停步于课堂上的学习,我还会不停的加强自己的编程能力。

  • 相关阅读:
    Springboot整合MongoDB的Docker开发,其它应用也类似
    Docker可视化工具Portainer
    Mac上使用Docker Desktop启动Kubernetes,踩坑后终于搞掂
    Docker入门——理解Docker的核心概念
    删库吧,Bug浪——我们在同一家摸鱼的公司
    一键下载网页所有图片,把美丽存下来
    序列推荐(transformer)
    [论文笔记] An introduction to ROC analysis
    【推荐算法工程师技术栈系列】分布式&数据库--tensorflow
    [论文翻译]Practical Diversified Recommendations on YouTube with Determinantal Point Processes
  • 原文地址:https://www.cnblogs.com/nchu18207324/p/13036240.html
Copyright © 2020-2023  润新知