thinking in java 3rd(第一章)

上一篇 / 下一篇  2008-08-11 13:58:10 / 个人分类:java

OOP挑战:
如何在问题空间的元素与解决空间的对象之间建立一种一对一的映射?

问题空间:问题要解决的地方
解决空间:你要对那个问题建模的地方,比如计算机


你能向对象发送请求是由其接口所定义的,而决定接口的则是对象的类型

有些对象或许已经有了,但是那些还没有的应该是什么样的呢?
他们应该提供哪些服务,还有它们要完成任务的话,又该用哪些对象呢?如果你不断分析下去,你最终会发现,不是“那个对象写起来容易”就是“那个对象已经有了。”,这就是将问题分解成一组对象的一个合理的方法


服务思想------------>提高内聚性

在一个良好的面向对象的设计中,每个对象都应该只做一件事,并且做好一件事,而不是去做太多的事情。

java default privilage------package access

合成(composition)   has-a, such as "轿车有引擎"  建议优先于继承考虑

继承        is-a,  such as "圆是一种形状"

继承的功效:
当我们费尽心机编写来一个类之后,又不得不再写一个功能类似的全新的类的时候

base\parent\super class变化----->derived\inherited\sub\child class

创建基类是为了表达,你对系统中某些对象的核心思想的理解
而派生类是从基类派生出来的,它所表达的是各种实现这个核心思想的方式

我们根据它能接受什么消息来判断这是什么类,这就意味着派生类“和基类是属于同一类型”?

 

oop的后绑定 :latebinding------->多态性

 

对象存储的位置:
栈或静态存储区域(效率高);
堆的内存池里动态的创建对象(java仅使用这种,并利用垃圾回收器来消灭对象,有效防止了内存泄漏)


如果你不知道解决某个问题需要多少对象,寿命多长?---->java用的容器来解决的such as List map set

 

对象的下传:由参数化类型的容器来解决,参数化类型是一种能够根据需要由编译器自动指派类型的类(java暂时还没有,现在这一功能是由单根继承体系来解决)

 

java为什么能成功?
系统能更易于表述和理解
最大程度上利用类库
错误处理
编写大项目


TAG: Java java thinking

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-04  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 491
  • 日志数: 41
  • 建立时间: 2008-07-24
  • 更新时间: 2008-10-30

RSS订阅

Open Toolbar