第3章面向对象(上)_补充案例

合集下载

面向对象实例

面向对象实例

面向对象设计(OOD)思想(C#)任务:设计媒体播放器软件如何设计:一、传统过程化设计思想假定该媒体播放器目前只支持音频文件MP3和wav。

按照结构化设计思想,设计出来的播放器的代码如下:public class MediaPlayer{private void PlayMp3(){MessageBox.Show("Play the mp3 file.");}private void PlayWav(){MessageBox.Show("Play the wav file.");}public void Play(string audioType){switch (audioType.ToLower()){case ("mp3"):PlayMp3();break;case ("wav"):PlayWav();break;}}}从传统的过程化设计思想来看,这是一段既实用又简洁的代码。

如果,客户又提出新的要求:要播放器不仅仅播放mp3和wav文件,还要播放其他音频文件如wma、MP4等,为此我们要不断地增加相应地播放方法和修改条件语句,直止条件语句足够长。

如果,客户感到这个媒体播放器功能太少了,只能闻其声,不能见其人,太单一。

如果在听着优美音乐的同时又能看到歌唱者潇洒、英俊的舞姿那就更好了。

从代码设计的角度看,他们希望媒体播放器支持视频文件了。

也许你会想,不会再增加视频这方面的代码,可以,在增加视频媒体的播放方法,在修改条件判断语句,如果还有其他,还可以同样地增加、修改。

到此你也许会提出,要是不修改或很少修改原来的代码就能增添其他功能该多好啊!这样看,原来的软件设计结构似乎有点问题。

事实上,随着功能的不断增加,你越来越发现这个设计非常的糟糕,因为它根本没有为未来的需求变更提供最起码的扩展。

为了应接不暇的变更需求,你不得不不厌其烦地修改原来的代码,使其适应需求变化,甚至在修改代码时,由于过多的代码依赖关系弄得人焦头烂额,直止一塌糊涂。

面向对象3最新PPT资料

面向对象3最新PPT资料
9
一、类和对象
▪ 对象
➢ 创建对象 Object push (Object element ) //将element压入堆栈,同时也返回element。
包括对象声明和对象初始化两个部分 类可以实现多个接口,但只有一个父类。
void removeElement(Object ob) //删除向量中一个指定的对象(仅删除第一次出现的对象)。
//声明mycircle对象
Circle mycircle=new Circle(); [public] [static] [final] 域类型域名=常量值;
void removeElementAt( int index) //删除向量中一个指定位置上的对象。
用s用iziaenb(te)srtrfaa/cc/方te修关法饰键返符字回修定表饰义中的接元➢类口素称。的为创声个抽数象明建类,对后象进时行,初也始可化以。将对象声明和对象初始化分开,先做
▪ 方法重载
➢ 同一个类中的两个或两个以上的方法可以有同一个名字, 只要它们的参数声明不同就是重载
➢ 当需要调用这些方法中的一种方法时,根据提供的参 数的类型选择合适的一种方法
▪ 构造方法
➢ 对象的创建通过构造方法完成的,当类实例化一个对象 时,类会自动调用构造方法,构造方法的特点如下:
构造方法没有返回值 构造方法的名称要与本类的类名相同 构造方法可以重载
Circle mycircle; //声明mycircle对象 Object remove(Object key) //删除key及其相应的值,返回与key相关联的值。
对于数值类型,会自动初始化成0
实参名与形参名可以相同也可以不同
package 包名;
mycircle=new Circle();

3面向对象程序设计概述

3面向对象程序设计概述

对象

什么是对象(object)? 现实世界中的任何一 个事物都可以看成是一个对象。
自然的实体: 一个人, 一辆汽车, 一个教师 抽象的逻辑结构: 一个银行帐号, 一个学生的学籍档案 一条客户通信录
对象的广义定义和特性
对象是人们要研究的任何事物 ,其特性是: 1、每一个对象必须有一个名字以区别于其它对 象; 2、用属性(或叫状态)来描述它的某些特征; 3、有一组操作,每一个操作决定对象的一种行 为。
类的确定和划分

另外,还要知道什么事物不能被划分为类。不 能把一组函数组合在一起构成类,也就是说, 不能把面向过程的若干个函数简单组合变成类, 类不是函数的集合。
对象与类的关系


类是对一组性质相同的对象的描述。 对象则是类的具体化,是类的实例。 例如:“学生”是一个类,是对所有学生个体 的共同特征的描述,张三、李四等学生个体则 是学生类的实例。
面向对象程序设计


用程序中的对象直接模拟现实世界中的对象, 将问题空间直接映射到软件空间。从而设计出 尽可能直接、自然地表示问题求解方法的软件。 它把求解问题中客观存在的事物看作各自不同 的对象,再把具有相同特性的一些对象归属为 一个类。 面向对象的这种设计方式符合人类的自然思维 习惯,使我们能够在程序中自然地描述现实世 界的实体和问题,增强了程序代码的可读性, 有利于控制软件的复杂性。
面向服务的程序设计




软件由一组可互操作的服务组合而成。这些服 务既可以灵活组合在一起,也可以单独运行。 服务之间通过定义良好的接口和契约联系起来。 接口是采用中立的方式进行定义的,它应该独 立于实现服务的操作系统和编程语言。 服务的使用者通常使用一种代理机制来找到服 务提供者,因此它们之间是松耦合的。 面向服务的程序设计主要是考虑如何把服务拆 分开发,如何把服务组合运行。

C++第一讲——面向对象的简单设计方法及示例PPT教学课件

C++第一讲——面向对象的简单设计方法及示例PPT教学课件

发现对象及其属性、行为定义
1.2 从系统责任发现对象 通过对问题领域的考虑,发现了许多对象,但是
可能还存在一些疏漏。通过考虑系统的责任可以检查 所存在的疏漏,发现遗漏的对象。可能无法从问题领 域中找到相应的对象来提供系统责任所要求的某些功 能(例如系统安装、配置、数据信息备份等),这说明我 们遗漏了对象,此时就必须按照系统责任所要求的每 一项功能,查看是否有相应的对象来实现,如果没有 就可以考虑增加一些对象来实现这些功能。
发现对象及其属性、行为定义
2.3 本问题领域中的属性 对象的有些属性,只有通过认真地研究当前问题
发现对象及其属性、行为定义
面向对象的简单设计方法及示例
1 怎样发现对象 2 定义属性 3 确定行为 4 C++编程
发现对象及其属性、行为定义
1 怎样发现对象Байду номын сангаас
我们在这里谈发现对象,是基于面向对象的基础 之上的。重点是在面向对象程序设计中如何去识别对 象。在面向对象程序设计中,问题域和系统责任是发 现对象的出发点。二者从不同的角度告诉分析员应该 设立哪些对象。前者侧重于客观存在的事物与系统中 对象的映射;后者侧重于系统责任范围内的每一个职 责都应落实到某些对象来完成。
发现对象及其属性、行为定义
(3) 推迟到OOD考虑的对象。候选对象中那些与具 体的实现条件密切相关的对象,如图形用户界面(GUI) 系统、数据管理系统、硬件及操作系统有关的对象应 该推迟到OOD阶段考虑,不要在OOA模型中建立这些 对象,这样可使OOA模型独立于具体的实现环境而只 与问题域有关。
上面已经为大家介绍了发现对象的方法,下面用 具体的例子实现上述方法。
发现对象及其属性、行为定义
public: float Average(int n);

面向对象ppt

面向对象ppt

1)实例构造函数的声明
语法形式:
[属性集信息] [构造函数修饰符] 标识符 ( [参数列表] ) [: base ( [参数列表] ) ] [: this ( [参数列表] ) ]
{
构造函数语句块 public 与类名相同 构造函数重载:
}
没有返回值 参数个数或类型不同
15
调用基类同参数列表的构造函数 调用本类同参数列表的构造函数
{
Radius=1.0;
// 通过构造函数对radius赋值
}
}
class Test
{
public static void Main( ) {
出错了!
Area s1 = new Area( );
//s1.Radius = 2;
无法修改只读字段
Console.WriteLine ("Radius={0},
其他特 VIP专享精彩活动

VIP专属身份标识
开通VIP后可以享受不定期的VIP随时随地彰显尊贵身份。
专属客服
VIP专属客服,第一时间解决你的问题。专属客服Q全部权益:1.海量精选书免费读2.热门好书抢先看3.独家精品资源4.VIP专属身份标识5.全站去广告6.名
using System;
public class Area
{
public readonly double Radius; // Radius是只读字段
private double x, y ;
public double Size ;
public static double Sum=0.0 ;
public Area ( )
Size={1},Sum={2}",s1.Radius,s1.Size , Area.Sum);

第三章 一个面向对象的C++程序实例

第三章  一个面向对象的C++程序实例

例如:一个圆类的定义(1)
class Circle :Public Point{ protected: int Radius; public: Circle (int InitX,int InitY,int InitRadius); void Show( ); void Hide( ); int GetRadius( ); };
3.1.2 面向对象分析 (4)
2.确定属性 圆的两个基本属性是圆心坐标和半径, 弧的基本属性有圆心坐标,半径,起始 角度和结束角度。不可能在需求陈述中 找到所有属性,还必须借助领域知识和 常识,才能分析得出所需要的全部属性。 圆和弧都应该再增加一个属性——可见 性
3.1.2 面向对象分析 (5)
3.1.3面向对象设计(2)
位置 坐标
点 可见性 显示 隐藏
圆 半径 显示 隐藏
弧 起始角度 结束角度 显示 隐藏 图3.2 简单图形程序的对象模型
3.1.3面向对象设计(3)
2.定义属性 所谓定义属性就是要确定每个属性的数据 类型和数据结构,同时还要确定每个属性的 访问权限(通常被定义在保护部分或私有部 分)。 3.定义服务 实现“显示”服务的算法概括来说就是, 把“可见性”属性设置为true,然后调用相应 的库函数用当前的前景颜色画出所要的图形。
3.1.2 面向对象分析 (6)
圆 圆心坐标 半径 可见性 读/写圆心坐标 读/写半径 读/写可见性 显示 隐藏 弧 圆心坐标 半径 起始角度 结束角度 可见性 读/写圆心坐标 读/写半径 读/写起始角度 读/写结束角度 读/写可见性 显示 隐藏
图3.1 圆类和弧类
3.1.3面向对象设计(1)
设计就是把通过分析得出的对程序的准确需求 转变成实现程序的方案的过程。主要完成下述 工作 : 1.建立类等级 面向对象程序的一个突出优点来源于继承性。 应该尽量抽取出相似类的公共属性和公共服务, 以建立这些相似类的父类,并在类等级的适当 层次中正确地定义各个属性和服务。 图3.2所示的对象 模型。为简明起见,图 中没有列出读/写属性值的常规服务。

第3章-面向对象程序设计(上)ppt课件(全)

第3章-面向对象程序设计(上)ppt课件(全)

面向对象的基本概念
❖ 对象(Object)是一个应用系统中用来描述客观 事物的实体,是具有特定属性(数据)和行为 (方法)的基本运行单位,是类的一个特定状态 下的实例。
❖ 类(Class)是Java代码的基本组织模块,是用 以描述一组具有共同属性和行为的对象的基 本原型,是对这组对象的概括、归纳与抽象 表达,它定义了本类对象所应拥有的状态属 性集及操作这组属性的行为方法集。
也可以一步完成,即:
类名称 对象变量 = new 类名称();
实例化对象(续)
❖ 一旦一个类的实例化对象产生,就可以通过该对象 访问类中定义的成员了。通过对象访问成员的基本 结构如下:
对象变量.属性 = 值; 对象变量.方法();
3.2 方法
任务2--Leabharlann 方法的定义【任务内容】给任务1中的媒体播放器类增加控制方 法
❖ JAVA的类由类的声明与类体两部分组成。
1、类的声明用来指定该类的访问修饰符、类的
名称、父类名称及实现接口等属性。声明类的完整 形式为: [public][abstract|final] class <类名> [extends<基类名> ]
[implements <接口列表>]
类名应该能够描述出类的 特征或作用,类名的第一 个字母通常要大写,如果 类名由多个单词组成,则 每一单词的首字母一般都
【范例 3-1】 设计一个媒体播放器类
class MediaPlayer{ //音乐文件路径 public String musicFile; //播放器音量,范围:0(静音)~100 public int soundLevel; //播放器状态 public boolean isPlaying;

03第三章面向对象基础

03第三章面向对象基础

public static void main(String[] args)
{
Vehicle v;
//声明Vehicle类型的引用
v = new Vehicle(); //创建Vehicle类型的对象
v.speed = 100.0; //为速度赋值
v.power = 2;
//为马力赋值
v.speedUp(10);
一个人类的对象 属性 方法
姓名:张三 体重:50kg …… 密码:******
走路 吃饭 ……
可以公开 无所谓 不可以公开
继承
继承就是重用现有的类来生成新类的一种特 征;
通俗地讲就是从现有的类(即父类或基类) 创建新类(子类或派生类)的过程;
现实生活中,继承可以达到财产重用的目的, 而在Java中,继承可以使代码重用。
定义类的语法
成员变量
在类体中并且在方法之外定义的变量称为成员变 量。
[修饰符] 变量类型 变量名; 例如: double speed; int power = 2;
定义类的语法
1.访问控制权限 public、private及protecte、默认的(friendly)
2.静态变量修饰符 又被称为类变量,静态变量用关键字static表示。
//构造方法,根据传递进来的参数,为数据成员赋值
public Student(String n, int a, float w) {
//分别为每个数据成员赋初始值
name = n;
age = a;
weight = w;
}
public void setName(String n) {……} //为姓名赋值的方法,公有,代码略
引用名 = new 类名();

Java基础案例教程第3章 面向对象(上)

Java基础案例教程第3章 面向对象(上)
玩具看作对象,从玩具模型和玩具之间的关 系便可以看出类与对象之间的关系。类用于
描述多个对象的共同特征,它是对象的模板
。对象用于描述现实中的个体,它是类的实 例。从图可以明显看出对象是根据类创
建的,并且一个类可以对应多个对象。
3.2 类与对象
类的定义
在面向对象的思想中最核心的就是对象,为了在程序中创建对象,
超市购物程序设计
构造方法
☞点击查看本小节知识架构
this关键字
垃圾回收 static关键字
☞点击查看本小节知识架构
成员内部类
银行新用户现金业务办理
3.1 面向对象的概念
面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态 不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来 映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就
是面向对象。
提到面向对象,自然会想到面向过程,面向过程就是分析出解决问题所需 要的步骤,然后用函数把这些步骤一一实现,使用的时候依次调用就可以
了。面向对象则是把构成问题的事务按照一定规则划分为多个独立的对象,
然后通过调用对象的方法来解决问题。当然,一个应用程序会包含多个对 象,通过多个对象的相互配合来实现应用程序的功能,这样当应用程序功 能发生变动时,只需要修改个别的对象就可以了,从而使代码更容易得到 维护。面向对象的特点主要可以概括为封装性、继承性和多态性,接下来 针对这三种特性进行简单介绍。
例如,创建Person类的实例对象代码如下:
上面的代码中,“new Person()”用于创建Person类的 一个实例对象,“Person p”则是声明了一个Person类型 的变量p。中间的等号用于将Person对象在内存中的地址 赋值给变量p,这样变量p便持有了对象的引用。在内存 中变量p和对象之间的引用关系如右图所示。

面向对象需求分析实例PPT

面向对象需求分析实例PPT
– 使用实际业务语言,不要抽象 – 条件分支不要太多,可用多个场景来描述 – 忘掉我们的系统,描述目前业务情况
• 演示
19
北京北大方正电子有限公司
三、业务用例描述
• 内容提要
– 描述业务目标 – 描述业务现状、数据结果要求 – 描述业务分析视角、列出典型业务场景 – 业务用例描述,详细介绍
• 演示
23
北京北大方正电子有限公司
UML常用视图分类
模型视图
1
用例图
2
需求图
3
活动图
4
序列图
5
状态图
6
类图
7
组件图
8
协作图
9
部署图
需求分析 ★ ☆ ★ ★
系统设计
★ ★ ★ ★ ★

详细设计
★ ★ ★ ★ ☆ ☆
24
北京北大方正电子有限公司
二、需求分析视图
• 用例建模的疑惑
– 快速原型,让用户先认同原型,再不断开发 – 软件就是设计很多功能,最终能满足需求 – 前期无法确定需求,先尽快完成再调整 – 用户不懂用例,我们也不懂,也没时间建模 – 直接告诉程序员要做什么,更准确快捷
5
北京北大方正电子有限公司
一、用例分析技术概述
• 快速原型法 vs 面向对象分析
– 快速原型法的前提是必须了解实际业务需求 – 前者是具体的一种实现方式,易丢失原始需求,
掺入过多细节、华丽功能、个人设计习惯 – 可结合起来,用后者来分析,当成编写电影脚
本,用前者来直观呈现和印证挖掘,佐证结果 按使用者角度记载下来,保留业务需求 – 不要以建模成本高而放弃OOA思想
• 用例
– 用例就是做一件事情,完成某个目标。 – 一件事要按一系列步骤完成活动 – 做事有不同的方式和相应的步骤用例场景

第3章补充案例

第3章补充案例

案例
一、案例描述
1、考核知识点
编号:2
名称:类和对象
2、练习目标
掌握类定义的方式
掌握如何在类中定义成员变量和成员方法
3、需求分析
在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。
}else{
age =a;
}
}
void speak() {
System.out.println("我的名字是" + name + ",今年" + age + "岁");
}
}
public class Example02{
public static void main(String[] args) {
Student s1 = new Student();
4、设计思路(实现原理)
1)编写测试类Example02,将属性age的值设为-30,演示不合理现象。
2)对Student类进行修改,将name和age属性使用private修饰,然后定义getName()、setName(String n)、getAge()和setAge(int a)四个对外访问name和age的方法。
图3-5运行结果
从运行结果可以看出,由于实现了Division类的封装,在setDivisor(int mDivision)方法中对传入的值进行检查,从而避免程序中出现除数为0的错误。
案例
一、案例描述

面向对象案例分析

面向对象案例分析

案例分析:《图书馆管理系统》一.系统描述:图书馆管理系统使对书记的借阅即读者信息进行统一管理的系统,具体包括读者的借书、还书、书籍订阅;图书馆管理员的书籍借出处理、书籍归还处理、预订信息处理;还有系统管理员的系统维护,包括增加书目、删除或更新书目、增加书籍、减少书籍、增加读者帐户信息、删除或更新读者帐户信息、书籍信息查询、读者信息查询等。

系统的总体信息确定以后,就可以分析系统的参与者、确定系统用例了。

二.确定系统的参与者:确定系统参与者首先需要分析系统所涉及的问题领域和系统运行的主要任务:分析使用该系统主要功能的是哪些人,谁需要该系统的支持以完成其工作,还有系统的管理者与维护者。

根据图书馆管理系统的需求分析,可以确定如下几点:✧作为一个图书馆管理系统,首先需要读者(借阅者)的参与,读者可以登录系统查询所需要的书籍,查到所需书籍后可以考虑预订,当然最重要的是借书、还书操作;✧对于系统来说,读者发起的借书、还书等操作最终还需要图书馆管理员来处理,他们还可以负责图书的预订和预订取消;✧对于图书馆管理系统来说,系统的维护操作也是相当重要的,维护操作主要包括增加书目、删除或更新书目、增加书籍、减少书籍等操作。

由以上分析可以得出,系统的参与者主要有3类:读者(借阅者)、图书馆管理员、图书馆关系系统维护者。

三.确定系统用例:1.借阅者请求服务的用例:1)登录系统;2)查询自己的借阅信息;3)查询书籍信息;4)预订书籍;5)借阅书籍;6)归还书籍。

2.图书馆管理员处理借书、还书等的用例:1)处理书籍借阅;2)处理书籍归还;3)删除预订信息。

3.系统管理员进行系统维护的用例:1)查询借阅者信息;2)查询书籍信息;3)增加书目;4)删除或更新书目;5)增加书籍;6)删除书籍;7)增加借阅者帐户;8)删除或更新借阅者帐户。

四.用例图:1)借阅者请求服务的用例:2)图书馆管理员处理借书、还书等的用例:3)系统管理员进行系统维护的用例:补充案例:《订货中心系统》一.系统简介:有这样一个订货中心,它接受客户的电话、传真、电子邮件、信件和web 主页表单形式的订货请求,形成货物订单,并告知客户订单的价钱。

第3章补充案例教学教材

第3章补充案例教学教材
二、案例实现
1、定义Example02类,代码如下所示:
public class Example02{
public static void main(String[] args) {
Student s1 = new Student();
= "小新";
s1.age = -30;
s1.speak();
double price;
void call(){
System.out.println("hi,how are you doing述
1、考核知识点
编号:00103003
名称:对象创建与使用
2、练习目标
掌握如何创建类的对象
掌握如何使用两个或者多个变量引用同一个实例对象。
3、需求分析
3)在setAge(int a)方法中对传入的参数进行检查,如果输入值为负数,则打印出“设置的年龄不合法”,如果不为负数,才将其设置为age属性的值。
4)对Example02类进行修改,在main()方法中创建Student类的实例对象,通过调用对象的setName(String n)和setAge(int a)方法来设置的name属性和age属性值,并调用speak()方法。
第3章补充案例

案例
一、案例描述
1、考核知识点
编号:00103002
名称:类和对象
2、练习目标
掌握类定义的方式
掌握如何在类中定义成员变量和成员方法
3、需求分析
在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。

第3章 面向对象(上)_补充案例

第3章 面向对象(上)_补充案例

v1.0 可编辑可修改第三章补充案例案例3-1 定义学生类一、案例描述1、考核知识点编号:00103002名称:类和对象2、练习目标掌握类定义的方式掌握如何在类中定义成员变量和成员方法3、需求分析在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。

为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。

4、设计思路(实现原理)1)使用class关键字定义一个表示学生类型的类,类名为Student。

2)在Student类中定义两个成员变量name和age,分别用来表示姓名和年龄。

其中,name的数据类型为String,变量age的数据类型为int。

3)在Student类中定义一个表示说话行为的speak()方法,用于输出学生的姓名和年龄。

二、案例实现class Student{String name;int age;1void speak() {"我的名字是 "+name+",今年 "+age+"岁");}}三、案例总结1、Java语言严格区分大小写,class和Class是不同的,在定义类时只能使用class关键字2、在Student类中,成员变量name是String类型,String表示一个字符串,后面的章节会详细讲解3、思考一下:自己定义一个手机(Phone)类,在类中定义品牌(brand)和价格(price)属性,定义打电话的call()方法,代码如下所示public class Phone {String brand;double price;void call(){"hi,how are you doing");}}案例3-2 同一对象被多个变量引用一、案例描述1、考核知识点编号:00103003名称:对象创建与使用2、练习目标2掌握如何创建类的对象掌握如何使用两个或者多个变量引用同一个实例对象。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章补充案例案例3-1 定义学生类一、案例描述1、考核知识点编号:00103002名称:类和对象2、练习目标掌握类定义的方式掌握如何在类中定义成员变量和成员方法3、需求分析在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。

为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。

4、设计思路(实现原理)1)使用class关键字定义一个表示学生类型的类,类名为Student。

2)在Student类中定义两个成员变量name和age,分别用来表示姓名和年龄。

其中,name的数据类型为String,变量age的数据类型为int。

3)在Student类中定义一个表示说话行为的speak()方法,用于输出学生的姓名和年龄。

二、案例实现class Student{String name;int age;void speak() {"我的名字是 "+name+",今年 "+age+"岁");}}三、案例总结1、Java语言严格区分大小写,class和Class是不同的,在定义类时只能使用class关键字2、在Student类中,成员变量name是String类型,String表示一个字符串,后面的章节会详细讲解3、思考一下:自己定义一个手机(Phone)类,在类中定义品牌(brand)和价格(price)属性,定义打电话的call()方法,代码如下所示public class Phone {String brand;double price;void call(){"hi,how are you doing");}}案例3-2 同一对象被多个变量引用一、案例描述1、考核知识点编号:00103003名称:对象创建与使用2、练习目标掌握如何创建类的对象掌握如何使用两个或者多个变量引用同一个实例对象。

3、需求分析在程序中,一个对象可能在多处使用,这样就可能需要有多个变量来引用这个对象。

为了让初学者更好地掌握对象的创建和使用,本案例将基于案例3-1,创建三个学生对象,它们的引用变量分别是s1、s2和s3,首先分别使用s1和s2引用,为name和age赋值,然后调用speak()方法,最后将s2变量赋值给s3, s3也调用speak()方法。

4、设计思路(实现原理)1)编写Example01类2)在main()方法中,创建Student类的第一个对象,其引用变量为s1,使用s1调用name和age 变量分别为它们赋值为“张三”和“19”,然后调用speak()方法。

3)创建Student类的第二个对象,其引用变量为s2,使用s2分别为name和age赋值为“李四”和“20”,然后调用speak()方法。

4)创建Student类的第三个对象,其引用变量为s3,将s2的值赋给s3,然后使用s3调用speak()方法。

二、案例实现public class Example01 {public static void main(String [] args) {Student s1 = new Student();="张三";=19;();Student s2 = new Student();="李四";=20;();Student s3 = new Student();s3=s2;();}}运行结果如图3-1所示。

图3-1运行结果三、案例总结1、Student s3 = s2这句代码的作用是将s2引用的内存地址赋值给s3,换句话说,就是使变量s3和s2引用了同一个Student对象,因此()方法和()方法打印的结果相同。

为了更加深刻地了解这句代码的含义,下面通过一张内存图来演示,具体如图3-2所示。

new Student()s1内存name=张三age=19speak()s2name=李四age=20speak()new Student()s3图3-2内存图2、可以使用两个或者多个变量引用同一个实例对象,只要通过其中一个变量对该对象的属性进行修改,使用其它引用变量访问时,访问的都是修改后的属性。

案例3-3 类的封装一、案例描述1、考核知识点编号:00103004名称:类的封装2、练习目标了解为什么要对类进行封装了解如何实现类的封装3、需求分析在案例3-2中,s1对象的年龄是可以随便赋值的,如果将age的值赋值为-30,显然违背了事实。

为了解决这类问题,我们需要对类进行封装,防止外界对类中的成员变量随意访问。

为了让初学者更好地掌握类的封装,本案例将使用private关键字对成员变量name和age进行私有化,同时分别提供一个setName(String n)和setAge(int a)方法用于外界的访问,其中setAge(inta)中需要对age进行判断。

4、设计思路(实现原理)1)编写测试类Example02,将属性age的值设为-30,演示不合理现象。

2)对Student类进行修改,将name和age属性使用private修饰,然后定义getName()、setName(String n)、getAge()和setAge(int a)四个对外访问name和age的方法。

3)在setAge(int a)方法中对传入的参数进行检查,如果输入值为负数,则打印出“设置的年龄不合法”,如果不为负数,才将其设置为age属性的值。

4)对Example02类进行修改,在main()方法中创建Student类的实例对象,通过调用对象的setName(String n)和setAge(int a)方法来设置的name属性和age属性值,并调用speak()方法。

二、案例实现1、定义Example02类,代码如下所示:public class Example02 {public static void main(String[] args) {Student s1 = new Student();= "小新";= -30;();}}运行结果如图3-3所示。

图3-3运行结果从上图可以看出,当将age的值设置为-30后,程序不会报错,但却违背了现实。

2、对Student类进行封装,其代码如下:class Student {private String name = "张三";private int age = 19;public String getName() {return name;}public void setName(String n) {name = n;}public int getAge() {return age;}public void setAge(int a) {Student(String name,int age)this(name)Student(String name)Student()this()执行顺序法名([参数…])的方式调用普通的成员方法,但是在普通的成员方法中不能使用this([参数…])的方式来调用构造方法。

案例3-7 垃圾回收机制一、案例描述1、考核知识点编号:00103008名称:垃圾回收机制2、练习目标掌握垃圾回收机制的特点掌握垃圾回收相关的方法3、需求分析垃圾对象会占用一定的内存空间,当垃圾对象积累到一定程度后,Java虚拟机会自动进行垃圾回收。

但是,如果希望程序可以及时通知Java虚拟机回收垃圾对象,可以通过()方法强制启动垃圾回收器回收垃圾。

为了让初学者熟悉垃圾回收机制,本案例将演示如何通过()方法强制启动垃圾回收器回收垃圾。

4、设计思路(实现原理)1)对Student类进行修改,在类中对finalize()方法进行重写。

2)编写测试类Example07,创建若干个Student对象,然后调用()方法通知垃圾回收期回收垃圾,为了确保可以看到垃圾回收的过程,可以在类中编写一个简单的循环语句,延长程序执行时间。

二、案例实现1、对Student类进行修改,代码如下所示:class Student {public void finalize() {"垃圾对象被回收了");}}2、定义Example07类,代码如下所示:public class Example07 {public static void main(String[] args) {new Student();new Student();();for (int i = 0; i < 1000000; i++) {className{Student三年级二班namename nameStudent实例对象{s1s2s3态方法名”的方式访问,也可以通过“对象引用变量.静态方法名”的方式访问,例如本例中的静态变量className,通过或者这两种方式访问都是可以的,不过更推荐使用前一种方式。

3、思考一下:定义一个Person类,在类中定义两个String类型的成员变量name和nationality(国籍),变量nationality使用static关键字修饰为静态变量,其值为“中国”。

定义Example09类,在类的main()方法中创建Person类的两个实例对象,并打印出这两个对象的姓名和国籍。

(1)定义Person类,代码如下所示:class Person {String name;static String nationality = "中国";}(2)定义Example09类,代码如下所示:public class Example09{public static void main(String[] args) {Person lily = new Person();= "丽丽";Person lucy = new Person();= "露西";+ "的国籍是" + ;+ "的国籍是" + ;}}运行结果如图3-14所示。

图3-4运行结果案例3-9 静态方法中访问类的成员一、案例描述1、考核知识点编号:00103010名称:静态方法2、练习目标了解在静态方法中只能访问类的静态成员,而不能访问非静态成员。

3、需求分析在程序中经常会调用方法,但静态方法之间、静态方法和非静态方法之间,它们是否能够互相调用呢请编写一个测试类,在类中定义若干个静态方法和非静态方法,通过方法之间的相互调用,演示静态方法和非静态方法的调用情况。

相关文档
最新文档