OO学期作业总结

.前言

  到目前为止我们第一个学期的Java专业课已经告一段落了。从初学时的懵懵懂懂到现在的简单掌握,我对Java这门课程可谓是又爱又恨。当我每掌握一个新的知识点时,我的内心是欢喜的,但这个过程却是痛苦的,常常需要我绞尽脑汁并且花费大量的时间去理解去学习。但总的来说,通过这一学期的学习,我的收获还是蛮大的。接下来则是我对于这一学期PTA作业的总结。

.作业过程总结

1.纵观这个学期的所有PTA作业,我经历了从简单的入门级Java代码的编程再到学会类的用法,将程序分模块化进行。通过类方法调用让程序模块清晰,运行流畅。再到在类的使用上再度延申,让我们对于类的使用有了更加深入的了解。至此,我们的的方法不再是全部放在Main方法当中,我们将创建一个新的类,通过引用变量调用其他类当中的方法来达成目的。以上是我在第一阶段所学习的内容。

2.至于第二阶段的学习内容则是一个由简到难得过程,向我们展现了面向对象的封装性、继承性与多态性这三大技术特性,让我对于面向对象有了更深得理解。作业从简单的用类解决问题到父类与子类的关系再到继承问题,给了我们这些初学者一个清晰的脉络与蓝图,层层递进,给足了我们消化与吸收的过程。作业的难度在不断增加,我们也在绞尽脑汁思考解决问题的方法,没有解决问题可能会让我觉都睡不好,但解决问题后的那种喜悦确实无可比拟的。

  3. 再到后面的内容就开始困难起来了,学习难度和上手难度都比较高。Static、final和常量设计,ackage、import和classpathJava数据结构这些内容都需要一定时间的积累。

 

 

  .OO设计心得

1、什么是OO

OO(Object–Oriented )面向对象,OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,Object Oriented是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。

2、OOP的核心思想是什么?

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。

核心思想:封装,继承,多态.

OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。

OO设计原则,共有如下几项:

  • 封装变化
  • 多用组合,少用继承
  • 针对接口编程,不针对实现编程
  • 为交互对象之间的松耦合设计而努力
  • 类应该只对扩展开放,对修改关闭
  • 依赖抽象,不要依赖具体类
  • 只和朋友交谈(外观模式)
  • 别找我,我会找你(模板模式)
  • 类应该只有一个改变的理由

通常,面对一个典型的面向对象程序,会将其分成五个抽象层,分别覆盖了OOP中的分析,设计与编程的各个阶段:

1,  最高级别的抽象层上,程序被看成是由很多相互作用并且遵守契约的对象所组成的对象集合。对象之间相互合作完成程序的计算任务。这个抽象级别上的典型代表就是设计模式思想(Design Pattern)。

2,  第二个抽象层就是一个对象集单元,也就是一群定义之间有相互联系的对象,在程序设计语言级别来看Java中是packages,C++中是name space。这个抽象级别上的典型代表就是模块化思想(Modularity)。

3,  第三个抽象层所代表的是典型的OOP模式:客户/服务器模型,这主要是用来抽象两个对象之间的互交过程。在这个抽象级别上的典型代表就是对象之间的消息机制(Message Passing)。

4,  第四个抽象层就是针对一组相似对象定义一个类作为生成对象的模板,类定义了对象的对外使用接口以及继承对象所需的内部继承接口,而这个抽象层次的典型代表就是接口编程(Interface Programming)。

5,  第五个抽象层就是实现一个类所需要的方法和成员变量的实现(Implementation)。在这里OOP最终和POP(Procedure-Oriented Programming)相融合。

在刚接触面向对象时我很容易被之前学习C语言时的思路干扰,经常会将面向过程和面向对象的思路搞混,相信很多同学和我有一样的困扰。下面就简单将一个例子来区分面向过程和面向对象:

有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择

1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。

2、去饭店,张开嘴:老板!来一份鱼香肉丝!

看出来区别了吗?这就是1是面向过程,2是面向对象

只有认清了并确定了面向对象的意义,学起来才会事半功倍。

 

.测试的理解与实践

  1.测试对于编码是很重要的,它为了保证编码完整性与正确性的重要步骤,如果没有这个步骤,编码的质量就没有保证,这

样的话,所写的代码就毫无用处,试问谁还愿意使用这样的代码呢?所以我们在编码是绝对不要忘记测试。

  2.假如让我设计测试用例,首先我会测试代码功能的完整性,再用代码测试一些特殊的例子,以确保其通用性。在确保其各

功能都能使用后,才会推广。

.课程收获

  这一学期的课程使我收获良多,我明白了对待代码要严谨,不能掉以轻心。对于类的使用要慎重,要分得清使用方法,不能错用,乱用。在学习OO时,不要受OP的影响。

.对课程的建议

  希望老师可以多讲解一些例题,错题。

19201621-肖俊杰

posted @ 2020-06-09 16:07  unobtrusiver  阅读(91)  评论(0)    收藏  举报