面向对象

1.面向对象程序设计--OOP(Object-oriented Programming),OOP允许以问题的形式来描述问题,而不是以执行解决方案的计算机的形式来描述问题。

2.对象拥有状态(State)、行为(Behaviour)和标识(Identity)。(也有说对象具有特性Characteristic和行为Behavior)

3.早期的程序员必须建立机器模型和实际待解决问题模型之间的关联。

4.UML(Unified Modelling Language)图:顶部:类名。中间部分(一般省略不写):数据成员(data member)。底部:方法。

5.关于复用(组合):在类A中创建类B的对象,使用已有的类合成新的类,这就是组合(composition),如果组合是动态发生的,那么它通常被称为聚合(aggregation)。组合经常被视为“has-a”(拥有)关系,就像我们常说的“小汽车拥有引擎”一样。(Engine-->Car)较之于继承,应该优先考虑使用组合,因为它更加简单而灵活。

6.关于复用(继承):基类和导出类,基类包含其所有导出类的共享的特性和行为。如果只是简单的继承一个类而不做任何事情,这样做意义不大。有两种方法可以使基类与导出类长生差异:第一种方法:直接在导出类中添加新方法。第二种方法:改变现有基类方法的行为,即:重载(overriding)

7.关于继承:is-a、is-like-a

is-a,继承只重载基类的方法而不添加新方法,并且导出类完全替代了基类对象,这可以被视为“纯粹替代(pure substitution)”,通常称之为“替代法则(substitutio principle)”,这便是is-a关系,比如圆和几何形状之间的关系就是is-a,因为圆形就是一个几何形状。

而对于在导出类中添加新元素的情况,即在原有基类的基础上进行了扩展,新的类型依旧可以替代基类,只是这是种不完美的替代,称之为is-like-a关系

8.关于多态:在处理类型的层次结构时,你经常想把一个对象不要当作它所属的特定类型来对待,而是将其当作其基类的对象来对待。这使得你可以编写出不依赖于特定类型的代码。

9.关于多线程(并发):尽管多线程有提升程序的响应能力等优点,但是多线程也存在一个安全隐患:共享资源--当有超过一个并行的线程都要访问一个资源的时候,就会出问题了。处理多线程并发的解决办法:某个线程锁定某项资源,完成其任务,然后释放资源锁,使其它线程可以使用这些资源。资源锁的作用是锁定指定对象占用的内存空间,,使得同一时刻只有一个线程在使用它,在代码中通过synchronized关键字来实现。

10.对象存在于内存中,它的生命周期随着程序的终止而结束,当有需求要对象在程序非执行的状态下任然能够存活的时候,可以通过序列化的方式将对象声明为持久的(persistent),这便是对象的持久化(object serialization)。

11.

 

posted @ 2013-10-08 10:54  沿途的景  阅读(124)  评论(0)    收藏  举报