Thinking in Java
作为一个电子专业的人,在学*了将*3年的嵌入式技术后,决定投奔移动互联网,在互联网大潮中急流勇进!
为了学*OOP(Object-oriented Programming),为了转向移动互联网,我决定开始学*android开发,那么就从Java开始吧!
Java的学*资料很多,在研究几天之后,决定从《Java编程思想》这本书开始。
而在这本书之前,我已经看完了一个培训导师的Java4Android的Java教学视频,看的很快,因为我学过C和C++。
但我的Java水平依旧很差,主要在于面向对象的编程方式和编程思想没有完全转换过来,话不多说,开始吧!
1.1 抽象过程
所以语言都提供抽象机制,如汇编语言是对底层机器的轻微抽象;C语言是对汇编语言的抽象;但它们所做的主要抽象仍是求在解决问题时要基于计算机的结构,而不是基于所要解决的问题的结构来考虑。所以OOP允许根据问题来描述问题,而不是根据运行解决方案的计算机来描述问题。
纯粹的面向对象程序设计有5个基本特性:
1)万物皆为对象;
2)程序是对象的集合,它们通过发送消息来告诉彼此所要做的;
3)每个对象都有自己的由其它对象所构成的存储;
4)每个对象都拥有其类型;
5)某一特定类型的所有对象都可以接收同样的消息;
1.2 每一个对象都有一个接口
UML(Unified Modelling Language,统一建模语言)
1.3 每个对象都提供服务
将对象看作是服务者有助于提高对象的内聚性。高内聚是软件设计的基本质量要求之一。
1.4 被隐藏的具体实现
将程序开发人员按照角色分为类创建者和客户端程序员。
将实现隐藏起来可以减少程序BUG,因此访问控制的第一个存在原因就是让客户端程序员无法触及他们不应该触及的部分,这对客户端程序员来说其实是一项服务。
控制访问的第二个存在原因就是允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员。
1.5 复用具体实现
在建立新类时,应该首先考虑组合,因为它更加简单灵活。
1.6 继承
有两种方法可以使基类与导出类(父类与子类):
一:直接在导出类(子类)中添加新方法。
二:改变基类(父类)的方法,称之为复写(voerriding)。
1.7 伴随多态的可互换对象
把将导出类(子类)看做是它的基类(父类)的过程称为向上转型(upcasting)。
反之为向下转型。
1.8 单根继承结构
所有的类都有一个终极的基类(父类),这个基类的名字就是Object。
1.9 容器
参数化类型,即泛型。这一块貌似比较复杂,我还没看懂太多。。。
1.10 对象的创建和生命期
1.11 异常处理
try...catch...final
1.12 并发编程
在多线程编程当中,应当注意的是公用资源的访问,在使用期间应该要被锁定。
1.13 Java与Internet
Web
1)客户、服务器计算技术
2)Web就是一台巨型服务器
3)客户端编程
①插件
②脚本语言
③Java
④备选方法Java applet
⑤.NET和C#
⑥Internet和Intranet
4)服务器端编程
总结:
目前我还处于从过程型语言编程思想到面向对象型编程思想的转换过程,掌握现有的资源,深入浅出。