本书中对于类和对象的定义是:万物皆为对象,它可以有状态、有行为,而它的行为是它的类型(类)决定的;当调用某一个方法时称其为向该对象发送请求(方法),与之相关联的方法就会被调用,(请求和方法是一一对应的),作者说编程语言是一种抽象,是对问题和解空间的一种抽象,只有将问题抽象化才能更准确更快捷的得到它的答案。
面向对象语言的特性:
1.万物皆为对象(即你可以将万事万物抽象成一个对象,狗,建筑等等)
2.程序是对象的集合,它可以通过发送消息(请求或者方法)告知对方要做什么
3.每个对象都有自己的由其他对象所构成的存储。作者的意思应该是当前对象的成员也是可以由其他的对象构成的,即他的属性可以是其他的类的对象,这样可以组合成更复杂的对象。
4.每个对象都拥有其类型。每个对象都是类的一个实例。并且类可以拥有不同的对象,其都是相互独立的,互不干扰。
5.某一特定类型的所有对象都可以接收同样的消息。个人对于作者的这句话是这样理解的,即一个类的所有的对象都是可以接收同样的消息,如light类型的所有对象都是可以接收on()、off()等的消息。
Booch对对象提出了一种更加简洁的描述:对象具有状态、行为、标志。即每个对象都拥有内部数据(状态)和方法(行为),每个对象在内存中都有自己的地址存储,所以可以通过唯一的地址来进行区分。
对象是服务提供者
开发程序其实就是创建一系列的解决问题的对象,可以将问题从表象中抽象出来,同时想一下需要什么样的对象可以解决我的问题。作者举了个例子,是如果开发一个簿记系统,那么都需要什么样的对象可以实现这个系统;需要一个输入屏幕的对象,执行计算的对象集合以及可以在不同的打印机上打印支票和开发票的对象。其实个人在此基础上感觉其实就是需要执行哪些操作,即你需要你创建的系统可以干什么,做哪些事情,然后将事情对应在不同的对象上,即这些事情需要哪些对象去做,因为没有一个对象是可以独立完成所有的事情的,他们之间也是需要协作的。
为了更好的解决问题,实现程序的高内聚,可以将功能划分的更加简洁、清晰,即一个对象干的事情很少,很简单,但是整个系统是通过多个简单的对象协作完成的,尽可能的使得一个对象完成一项任务,不要尝试做更多的事情。
网友评论