• Java面向对象及编程的理解


           回想一下自己,工作已经有一段时间了,以下是我对OOP及编程的一点理解。

           面向对象编程,首先它是相对于面向过程而言的,它是为了解决一些大的复杂的工程而产生的一种编程方法。面对对象它是以人的认识事物的思维角度来讲的,而不是说按照机器的二进制的,面向对象思想它主要提高了编程的简易性。

          在一个系统功能中,我们首先呢要学会去找对象,这个对象可以是一下可见的视图,也可以是一个提供服务的一个东西,在找对象中 我们可以从视图,行为的角度上考虑,比如一个行为动作源事件,我们可以找到这个事件源的参与者、响应中等。

          然后呢,我们一个 系统中对象进行描述,那就类的概念,等把一些对象描述清楚了,我们第二工作就是怎样把这些描述组织起来,这就是概化的意思, 我们可以通过分层或者多态的结构设计来组织这些类。

          分层设计:这是归类中考虑到的代码的重用性,我们可以把行为操作流程写在抽象层上,把能够确定的相同的逻辑写好,不相同的逻辑推迟到具体的子类去负责实现,这就是所谓的模板模式嘛,但是这种方式它破坏了代码的封装性,因为继承这种方式是一种强关联 。子类只是负责部分功能,它过于依赖于它的抽象层。这种方式耦合性比较强。为了避免这种缺点我们一般会采用聚合组合实现的

          多态结构:我们在编程中要考虑代码以后的扩展性及灵活性的。并且我们要符合开闭原则,意思是要改变一个模块功能,我们要将这种改动影响到最小,就是模块通信间耦合性要低,怎么做到呢,一个办法就是我们要依赖于抽象编程,而不是具体的实现类,比如我们可以设计接口,用聚合的方式和抽象层进行关联,接口的设计在编程方面有很大的优势额,第一个它提高代码的灵活性嘛,因为在java中它是在运行期动态才确定是那种类型的,而且接口的设计提高代码的扩展性及可替代性,我们可以很容易的将一具体的个功能替代或者重新插入到一个模块中,只要这些功能实现了那个模块对外的接口。而且接口的设计第二个好处隔离了具体的实现,他就降低了类与类之间的耦合性,而且客户端调用的时候方便,因为客户端只要知道接口所定义的方法就可以了。

  • 相关阅读:
    NOI2018 你的名字——SAM+线段树合并
    [NOI2008]假面舞会——数论+dfs找环
    CF1037H Security——SAM+线段树合并
    CF700E Cool Slogans——SAM+线段树合并
    CF666E Forensic Examination——SAM+线段树合并+倍增
    [BJOI2019]光线——递推
    ProjectEuler215 Crack-free Walls
    ProjectEuler237 Tours on a 4 x n playing board
    [SCOI2016]美味——主席树+按位贪心
    [ZJOI2013]K大数查询——整体二分
  • 原文地址:https://www.cnblogs.com/zhoulikai/p/2436109.html
Copyright © 2020-2023  润新知