孙卫琴著《Java面向对象编程》学习笔记

更新时间:2024-05-30 20:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

面向对象编程思想 语法

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文件中的二进制数据,将类的类型信息存放到运行时数据区的方法区中。 ? 类验证及初始化

本文来源:https://www.bwwdw.com/article/70z6.html

Top