开始看java的第一天

工作中用到android 有点陌生 决定从java开始系统的学习


java仅仅是一门语言?

程序设计其实是对复杂性的管理:待解决问题的复杂性,以及用来解决该问题的工具的复杂性。这种复杂性导致多数程序设计的失败

java减少了程序的复杂性。关心的是减少开发健壮代码所需的时间以及困难


一、抽象


1.1抽象的定义

1)万物皆为随想

对象是奇特的变量,可以存储数据,还可以要求自身的操作。 (万事可以是对象)

2)程序是对象的集合,通过发消息来告诉彼此需要的行为
3)每个对象都有自己的由其他对象构成的存储

也就是说可以通过简单的对象来创建新的复杂的对象。将复杂性隐藏于简单之后

4)每个对象都有类型
5)某个特定的类型的所有对象都可以接受同样的消息

这里应该指的是抽象和继承 
假设:形状的一些行为  正方形是不是也应该具有呢?


此外抽象还有更加简洁的描述:对象需要有状态、行为和标识



1.2每个对象都有一个接口

一个类创建处理就可以随心所欲的去使用它,使用的是他的接口。 例如:一个灯应该有开关接口

1.3每个对象都提供服务

将对象想想成服务提供者,程序本身向用户提供服务

1.4被隐藏的具体实现

通常被隐藏起来的是对象内部的脆弱成分。很容易被粗心的或者是不明内情的客户端程序员所毁坏。
因此引入了访问权限(access specifier)

好处:

1)你可能为了减轻开发任务而以某种简单的方式实现了某个特定类,之后你发现必须要重新改写他。
如果接口和实现可以清晰的分离并得以保护,你可以很简单的完成这个任务。
2)你可以不允许其他程序员去触及他们不应该触及的部分。

1.5复用

这个需要经验跟敏锐的洞察力

最简单的复用某个类的方式就是直接使用该类的一个对象,此外也可以将那个类的一个对象至于某个新类中去
这里运用到组合(composition) 。如果组合是动态发生的那么我们称之为聚合(aggregation)

组合的关系是 拥有has-a  汽车拥有引擎
实际上我们建立新类的时候应该首先考虑组合


1.6继承


对象将数据和功能封装到一起。但是遇到一个麻烦。新类跟这个类具有相似的功能

这个时候我们需要用到继承了

继承引发了某种讨论 (继承是不是应该只是覆盖基类的一些方法 而不是添加新的功能 也就是一个是和像的问题)

1.7伴随多态可以相互转换对象

在处理类型的层次结构的时候,经常把一个对象不当做它所属的特定类型来对待,而是将其当做基类的对象来看待。这样的好处是:可以编写出不依赖特定类型的代码
这里涉及到的技术叫后期绑定

在某些语言必须明确希望某个方法具备后期绑定属性所带来的灵活。例如C++ 使用virtual 这些语言中默认情况下不是动态绑定的。
在java中动态绑定是默认行为。不需要添加额外的关键字。

1.8单根继承结构

单根继承结构保证所有对象都剧本某些功能。C++为了兼容C并没有做这种保证 但是别的OOP语言基本上都是yes

1.9容器

通常来说,不知道解决某个特定问题时需要多少个对象,或者他们将存活多久,那么就不可能知道如何存储这些对象。如何才能知道需要多少空间来创建这些对象,答案也许你可能不知道。还好大部分OOP语言都提供了容器
List Map Set,以及队列、树、堆栈等更多的构建

参数化类型

1.10对象的创建和生命周期
1.11 异常处理 处理错误
1.12并发编程
1.13java和internet


1.客户/服务器技术
核心思想:系统有一个中央信息存储池,用来存储数据,通常存储在数据库中。
基本概念并不复杂关键是。问题是你只有的单一的服务器。却要同时为多个客户服务。通常这会涉及数据库管理系统。因此设计者把数据均衡分布于数据表中,以取得最优的使用效果。而且一般允许用户插入新的信息。这意味着必须保证插入新数据不会覆盖另一个客户插入的数据,也不会丢失。。
最重要的是性能问题:
任意时刻都可能有成千上万的客户向服务器发送请求。所以任何小的延迟都可能也有重大的影响。为了将延迟最小化,程序员努力减少处理任务的负载,通常是分散给客户端机器处理,但有时也会将中间件将负载分散给服务器端的其他机器(中间件也被用来提高可维护性)

分发信息这个简单思想的复杂性实际上是有很多不同层次的,这使得整个问题可能看起来高深莫测,但是仍然至关重要:








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值