面向对象编程思想 语法
Java虚拟机执行程序的原理 项目运用 设计模式 性能优化
? 熟悉Java语法,熟练地编译和调试程序。
? 按照面向对象的思想来快速理解JDK类库及其他第三方提供的类库,通过阅读JavaDoc
和相关文档,知道如何正确地使用这些类库。
? 按照面向对象的思想来分析问题领域,设计对象模型。
? 在开发过程中运用现有的一些优秀设计模式,提高开发效率。 ? 当一个方法有多种实现方式时,能够从可维护、可重用及性能优化的角度选择最佳的实
现方式。
? 理解Java虚拟机执行Java程序的原理,从而更深入地理解Java语言的各种特性和
语法规则。
软件开发生命周期: 软件分析 软件设计 软件编码 软件测试 软件部署 软件维护
软件开发效率: 可重用性 可扩展性 可维护性
结构化开发:
SA:Structure Analysis SD:Structure Design
SP:Structure Programming
DFD:Data Flow Diagram 数据流图
结构化开发中,方法是最小的子系统; 面向对象开发中,对象是最小的子系统。
建立对象模型:自底向上的抽象 + 自顶向下的分解
抽象:问题 –> 对象 -> 类 -> 父类
? 把 问题领域中的事物 抽象为 具有特定属性和行为的对象 ? 把 具有相同属性和行为的对象 抽象为 类
? 若多个类之间存在一些 共性(具有相同属性和行为),把这些共性抽象到 父类 中
UML:Unified Modeling Language 统一建模语言 Rational Rose 可视化建模工具:用于绘制UML图
万物皆为对象 对象具有唯一性
对象具有属性和行为(成员变量和成员方法) 对象具有状态(即属性取值) 对象都属于某个类
Java虚拟机是Java程序的解析器和执行器
Java虚拟机提供的运行环境中,保证每个对象唯一性的手段是为它在内存中分配唯一的地址
对象模型中的类可以看做是开发人员自定义的数据类型,Java虚拟机的运行时环境 封装了 将自定义数据类型映射到计算机内置数据类型的过程。这使得开发人员不受计算机内置数据类型的限制,对于任意一种问题领域,都可以方便地根据 先识别对象,再进行分类(创建任意的数据类型)的思路 来建立对象模型。
每个对象都是服务提供者,对象通过 接口 对外提供服务 Java语言中,接口有两种意思:
? 指概念性的接口,在对象中表现为public类型的方法的声明 ? 指用interface关键字定义的实实在在的接口(接口类型),它用于明确地描述系统对
外提供的所有服务,更清晰地将系统的实现细节与接口分离
封装:隐藏对象的属性和实现细节,仅对外公开接口
面向对象的编程语言主要通过 访问控制机制 来进行封装,有效控制对象的属性和方法的可访问性: ? Public
? Protected 只对同一个包中的类或子类公开 ? 默认 只对同一个包中的类公开 ? Private 只能在对象内部访问
封装原则:所有属性private;尽可能对外提供简洁接口 Java语言中,抽象有两种意思:
? 当抽象作为动词时,指抽象思维过程
如:从子类到父类的抽象。
不同子类具有相同功能,且功能实现方式一样,将功能放在父类中实现;
不同子类具有相同功能,但功能实现方式不一样,父类中仅声明此功能,但不提供具体实现(多态、动态绑定)。
? 当抽象作为形容词时,用来修饰类和方法
abstract修饰方法,表明此方法没有具体的实现; abstract修饰类,表明此类不能被实例化。
继承、扩展、覆盖
通用软件架构提供专门让用户继承和扩展的类,用户只需创建这些类的子类,在子类中扩展或覆盖实现某些功能,保证自定义的子类能顺利与软件架构中其他类协作即可。
Java领域主流架构软件:
? J2EE 分布式分层 企业应用软件架构(Sun) ? Struts JavaWeb应用通用框架(Apache) ? JSF JavaWeb应用界面通用框架(Sun) ? Spring 企业应用服务层通用框架(Spring)
J2EE架构
? JavaWeb层扩展点:Servlet类和JSP ? 应用服务层扩展点:EJB组件
? 企业应用分为客户层、JavaWeb层、应用服务层、数据库层 Structs架构
? MVC(Model-View-Controller)设计模式 ? 控制器层扩展点:Action类
Servlet是J2EE架构在JavaWeb层的扩展点,通过这个扩展点,开发人员能方便地在JavaWeb层添加与特定问题领域相关的服务。Servlet是供用户扩展的组件,运行在Servlet容器中。Servlet容器负责接收并响应Web客户的HTTP请求,Servlet负责提供所请求的特定服务。
开发JavaWeb应用时,可以选择第三方提供的Servlet容器(如Tomcat),开发人员的主要任务是扩展javax.servlet.http.HttpServlet接口,创建能提供特定服务的Servlet子类。将自定义的Servlet类发布到Servlet容器中,Servlet容器就能与这些Servlet协作,Servlet容器根据Web客户的请求,调用相关Servlet对象的方法来响应请求。
类之间的关系:
? 关联:类A与类B的实例之间存在特定的对应关系 ? 依赖:类A访问类B提供的服务
? 聚集:类A为整体类,类B为局部类,类A的对象由类B的对象组合而成 ? 泛化:类A继承类B
? 实现:类A实现了B接口
//从控制台读取用户输入形状类型
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
int shapeType=Integer.parseInt(input.readLine());
----------------------------------------------------------------------- private static Properties shapes=new Properties();
static{ try{
InputStream
in=ShapeFactory.class.getResourceAsStream(\);
shapes.load(in); //把配置信息加载到shapes对象中
}catch(IOException e){throw new RuntimeException(e);} }
----------------------------------------------------------------------- try{
//获得与形状类型匹配的形状类名
String className=(String)shapes.get(String.valueOf(type)); //运用Java反射机制构造形状对象
return (Shape)Class.forName(className).newInstance(); }catch(Exception e){return null;}
Java源文件结构: ? 包声明语句 ? 包引入语句 ? 类的声明 ? 接口声明
Package Statement Import Statement Class Declaration
Interface Declaration
源文件可定义多个类或接口,至多只有一个是public类型,以public类名对文件命名。
Java基本包: java.lang java.awt java.io java.util java.net
Thread、Exception、System、Integer、String 自动引入 Abstract Window ToolKit GUI界面类、绘图类 FileInputStream、FileOutputStream Date、Collection
Socket类、URL 支持TCP/IP网络协议,用于网络编程
else:java.sql、java.rmi、javax.swing、javax.sound
import语句不会导致类的初始化,即Java虚拟机不会将包中的类加载到内存中并初始化。
JDK:Java虚拟机、JDK类库、开发工具
用JDK管理Java应用
? 目录结构 src、classes、lib、doc、doc/api、deploy ? 编译 javac.exe ? 运行 java.exe ? 发布 jar.exe
运行:类加载->字节码检验->解析->执行指令
JVM提供了程序运行时环境,其中最重要的一个资源是运行时数据区。
运行时数据区是操作系统为JVM进程分配的内存区域,JVM将该区域划分为多个子区域: ? 堆区 存放对象
? 方法区 存放类的类型信息(静态变量和方法信息等) ? Java栈区
? 类加载
运行程序->启动JVM进程->进程从classpath中找到.class文件,读取.class文件中的二进制数据,将类的类型信息存放到运行时数据区的方法区中。 ? 类验证及初始化
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库孙卫琴著《Java面向对象编程》学习笔记在线全文阅读。
相关推荐: