zoukankan      html  css  js  c++  java
  • 关于面向对象设计的一些思考

    1 将相关的东西放在一起。如果一个函数操作一个全局变量,最好将它们作为一个类的属性和方法。

    2 不要让对象之间过于亲密。方法应只关心其所属实例的属性,对于其他实例的状态,让它们自己去管理就好了。

    3 慎用继承,尤其是多重继承。继承有时很有用,但在有些情况下可能带来不必要的复杂性,要正确地使用多重继承很难,要排除其中的bug更难。

    4 保持简单。让方法短小紧凑。一般而言,应确保大多数方法都能在30秒之内读完并理解。对于其余的方法,尽可能将其篇幅控制在一页或一屏内。

    确定需要哪些类以及这些类应包含哪些方法时,尝试像下面这样做。

    (1)将有关问题的描述(需要程序做什么)记录下来,并给所有的名词、动词和形容词加上标记。

    (2)在名词中找出可能的类。

    (3)在动词中找出可能的方法。

    (4)在形容词中找出肯的属性。

    (5)将找出的方法和属性分配给各个类。

    有了面向对象模型的草图后,还需要考虑类和对象之间的关系(如继承或协作)以及透明的职责。为进一步改进模型,可像下面这样做。

    (1)记录(或设想)一系列用例,即使用程序的场景,并尽力确保这些用例涵盖了所有的功能。

    (2)透彻而仔细地考虑每个场景,确保模型包含了所需的一切。如果有遗漏,就加上;如果有不太对的地方,就修改。不断的重复这个过程,直到对模型满意为止。

    有了你认为行之有效的模型后,就可以着手编写代码了。你很可能需要修改模型或程序的某些部分,所幸这在python中很容易,请不用担心。只管按这里说的去做就好。

  • 相关阅读:
    洛谷 AT2000 Leftmost Ball
    洛谷 P1326 足球
    洛谷 P4868 Preprefix sum
    洛谷 P2596 [ZJOI2006]书架
    HDU 3415 Max Sum of Max-K-sub-sequence
    洛谷 P3901 数列找不同
    洛谷 P3609 [USACO17JAN]Hoof, Paper, Scissor蹄子剪刀…
    洛谷 P5749 [IOI2019]排列鞋子
    验证码解决表单重复的原理
    session和浏览器之间的技术内幕
  • 原文地址:https://www.cnblogs.com/Sunzz/p/10191620.html
Copyright © 2011-2022 走看看