1、考虑类
   名词

2、属性
  不可脱离具体的应用环境
一般为private,不能直接读写

3、方法

4、类之间的关系

5、隐藏(封装)
  降低耦合度

6、继承

7、多态
含有abstract方法的类应为abstract类

核心中的核心
OO的好处:可扩展性(Extensibility)
===============
注意:
a)设计没有绝对的对与错
b)Over Design也是一种罪过
c)没有任何实际中的设计会一步到位
d)初学者不要考虑太多的原则和条条框框,最重要的是动手写
  抽象类与接口(确实存在的某一事物则定义为抽象类,多件事物存在着某一些共同的特性,将这些共同的特性定义为接口)