讨论四类和对象(二)
本次java讨论大家分工合作
请各题的负责人员把自己做好的题目和答案都发给徐刚,最后由徐刚发给郑碧川来做PPT请大家在明天晚上之前发给徐刚,辛苦了!
任务分工在word的最后面
演讲人:邱月
PPT 制作者:郑碧川
1. 什么是封装?面向对象程序设计中如何实现封装?
2.Java程序中使用的类分为哪两种?什么是系统定义的类?什么是用户自定义的类?
3.使用已经存在的类(包括类库中的系统类和已存在的用户类)有哪三种主要方式?如何在程序中引入已经存在的类?
4.很多时候,会把static和final连用来达到定义常量的目的。分析并判断下列程序中涉及final变量的加黑语句的正误,并说明理由。
class FinalExample{
static final int i;
static final int j;
public static final int TOTAL=10;
public FinalExample(int i){
this.i=1;
}
public static void main(Sring[ ] args){
FinalExample example=new FinalExample(1);
example.i=10;
example j=1;
}
}
5. 试讨论抽象类的概念和应用。
6.设计一个学生类Student2,包含的属性有name和年龄age。由学生类派生出本科生类Undergraduate和研究生类Postgraduate,本科生类包含的属性由专业specialty,研究生包含的属性有研究方向studydirection。每个类都有相关数据的输出方法。
7.简述构造函数的功能和特点。下面程序片段是某同学为student类编写的构造函数,请问有基础错误?
void Student(int sno, String sname)
{
studentNo=sno;
studentName=aname;
return sno;
}
8.设计并测试一个表示图书的Book类,它包含图书的书名、作者、月销售量等属性,另有两个构造方法(一个不带参数,另一个带参数)和两个成员方法setBook( ) (用于输出书名、作者、月销售量等数据)。
9. 源文件Test.java中,下面那一段类的定义代码是正确的。
A.public class test{
public int x=0;
public test(int x)
{
this.x=x;
}
}
B. public class Test{
public int x=0;
public Test(int x)
{
this.x=x;
}
}
C. public class Test extends T1,T2{
public int x=0;
public Test(int x)
{
this.x=x;
}
}
D. public class Test extends T1{
public int x=0;
public Test(int x)
{
this.x=x;
}
}
E. protected class Test extends T2{
public int x=0;
public Test(int x)
{
this.x=x;
}
}
10. 在下面程序中差错,讨论成员变量和局部变量的区别。
(1)class A{
int x;
int f(){
int a=5;
x=a; //合法,x在整个类中有效
}
int g(){
int y;
y=a; //非法,a已失效,方法g中没有定义变量a
}
}
提示:在方法中定义的变量和方法的参数为局部变量;成员变量在整个类中都有效,局部变量只在定义它的方法内有效。
(2)class Tom{
int x=98, y;
void f( ){
{ int x=3;
y=x; //y得到的值是3,不是98
}
}
提示:变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内展示失效。y得到的是3,不是98
11. 查阅资料,程序填空:
public class StringA{
public static void main(String[] args)
{
String str1="Hello";
String str2="Hello";
String str3=new String("Hello");
String str4=new String("Hello");
System.out.println("运算符==");
【代码1】/*用运算符“==”用运算符“==”比较tr1和str2,如果相等显示“tr1
和str2相等”,否则显示“tr1和str2不相等”*/
【代码2】/*用运算符“==”比较tr3和str4,如果相等显示“tr3和str4相等”,
否则显示“tr3和str4不相等”*/
【代码3】/*用运算符“==”比较tr2和str3,如果相等显示“tr2和str3相等”,
否则显示“tr2和str3不相等”*/
System.out.println("equals方法");
【代码4】/*用equals方法, 比较tr1和str2,如果相等显示“tr1和str2相等”,
否则显示“tr1和str2不相等”*/
【代码5】/*用equals方法, 比较tr3和str4,如果相等显示“tr3和str4相等”,
否则显示“tr3和str4不相等”*/
【代码6】/*用equals方法, 比较tr2和str3,如果相等显示“tr2和str3相
等”,否则显示“tr2和str3不相等”*/
}
}
1 2 3 题由郭亮和汪超杰来做
6 7徐刚做
5 由严家卓来做
第四题第8题由叶婷婷和张旋来做
第9题10题由李珊珊和邱月来做
11题最后看有时间叶婷婷和徐刚做
关于推进非4类重点对象农村危房改造的指导意见 为全面解决我省农村居民住房安全问题,推进贫困县“4类重点对象”(建档立卡贫困户、低保户、农村分散供养特困人员、贫困残疾人家庭)以外农村居民的危房改造工作,经省人民政府同意,现提出以下意见: 一、基本原则 (一)非“4类重点对象”农村危房改造,原则上以农户自筹资金、自行改造为主,对少数自身改造能力不足的农户,政府给予适当扶持。 (二)扶持的责任主体是县级政府,扶持改造面广量大、单纯依靠县级财政无法解决的,由所在州、市人民政府统筹予以支持。 (三)县级政府可为自身改造能力不足的危房户提供危房改造贷款贴息支持,或按照规定统筹有关财政资金等给予适当补助,具体扶持方式和标准,由有关县、市、区人民政府统筹确定,但要合理控制农户贷款数额,防止因贷致贫、因贷返贫,贴息支持标准不得超过“4类重点对象”危房改造贴息支持标准;使用财政资金等补助危房户时,补助标准不得超过“4类重点对象”的补助标准。省住房城乡建设厅、
财政厅、发展改革委等部门负责协调金融机构对危房改造尽可能给予优惠贷款支持。 (四)坚持保基本要求和“安全稳固、遮风避雨”基本标准,严格遵守有关规定。享受政府扶持的C级危房改造,只能采取加固方式改造;D级危房通过加固可以达到基本标准的,也应当采取加固方式改造;采取加固改造达不到基本标准的,可以拆除重建,但建新必须拆旧。新建住房要严格执行宅基地管理有关规定和农危改面积控制标准以及改造建设标准。新建住房特别是传统村落内的新建住房,应注意与原有村落风貌保持协调一致。 二、工作要求 (一)实事求是,严格扶持对象认定,把扶持政策用在真正需要扶持的农户上。各地对自身无力进行危房改造的农户,应纳入扶持范围。凡有下列情形的农户不得列为扶持改造对象:有其他安全住房、门面房及其他经营性用房的;常年外出务工或经商,农村住房虽为危房,但自身有能力改造而又不自己改造的;有家庭成员或户主的父母、配偶、子女为国家公职人员的;购买了价格3万元以上机动车的;在工商部门注册登记公司、企业并实际开展经营活动的。对具有历史地域文化和民族特色的合院式、干阑式(木楞房、垛木房、竹楼、吊脚楼)、土库房(碉房)、土掌房和蘑菇房等传统特色民居不能“一刀切”简单认定为D级危房。
Java iSW程序设il?(郑莉) 第二章习题答案 1.什么是对象、类,它们之间的联系 答:1)对象是包含现实世界物体特征的捕象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象二数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体:在程序中对象是指一组变量和相关方法的集合。 2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象! 3)两者的关系:对象是类的具体实例 2.什么是而向对象的程序设计方法它有那些基本特征 答:而向对象程序设计从所处理的数据入手,以数抵为中心而不是以服务为中心来描述系统。 它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳世性。 它的特征:抽象,封装,继承,多态。 3.在下而的应用中,找出可能用到的对象,对毎一个对象,列出可能的状态和行为。 1)模拟航空预订系统交易的程序 2)模拟银行交易的程序 答:1)航空预订交易: 状态:旅客姓名,身份证号,联系号码,出发地址,抵达地址,出发日期。 行为:订票,领票,买票,退票。 2)银行交易: 状态:客户姓名,账号,身份证号。 行为:存款,取款,『款。 4.请解释类属性、实例属性及其区别。 答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。 5.请解释类方法、实例属性及其区别。 答:实例方法表示特定对象的行为,在声明时前而不加static修饰符,在使用时需要发送给一个类实例。 类方法也称为静态方法,在方法声明时前而需加static修饰符,类方法表示具体实例中类对象的共有行为。 区别:实例方法可以宜接访问实例变量,调用实例方法,实例方法可以直接访问类变量, 调用类方法:类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法: 6.类的访问控制符有哪几种具体含义及其区别。 答:类的访问控制符只有public (公共类)及无修饰符(默认类)两种。 区別:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与
C++实验报告 实验4 类与对象 一、实验目的 1、掌握类的声明和使用 2、掌握类的声明和对象的声明 3、复习具有不同访问属性的成员的访问方式 4、观察构造函数和析构函数的执行过程 5、学习类的组合使用方法 6、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序 二、实验任务 1、声明一个CPU类,包含等级rank、频率frequency、电压voltage等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU-Rank,声明为enum CPU-Rank{P1=1,P2,P3,P4,P5,P6,P7}, frequency为MHz的整数型,voltage为浮点型的电压值。观察构造函数好析构函数的调用顺序。 2、声明一个简单的Computer类,有数据成员芯片cpu、内存ram、光驱cdrom 等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM 类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 3、设计一个用于人事管理的People类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number编号、sex性别、birthday出生日期、id身份证号等。其中出生日期声明为一个日期类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内嵌成员函数、组合。 三、实验内容 任务1:首先声明枚举类型,在这里出现了知识性错误,不清楚具体应如何声明,经查询相关书籍,知道应在类外进行声明。初次用类来进行编程,在概念上是有一些混乱的,例如构造函数和析构函数的调用顺序等。在用debug单步调试后,明白其中道理。 源程序: //Lab4_1.cpp #include
实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.wendangku.net/doc/4a5912545.html,); error!! } } class Account { private String account; private String name; private String address; private double balance;
这样子同你说吧。类,他就是讲的一个种类。不懂?OK,比如人类。 这个“人”他们都有思维,都有眼睛鼻子等等共同的特征。他就叫做一个类。叫做“人类”。 还有“植物类”,这个“植物”它们都有根,叶子等等共同的特征。它就叫做一个类。 “张三”是个人,他只是人类中的一个特例,我们就把他叫做一个具体的对象。也就是C#中的对象。 一句话说完了,类都是一群对象的集合,里面包含了N多的对象。而对象只是类的一个特例。比如学校里有1000个学生,然后校长在广播里面喊:请张三同学到校长室来一下。这时候“李四,王五,赵六”等等听到广播,就知道,校长叫的是张三,而不是自己。所以张三李四王五这些都是这个学生类的一些特例(也就是一个个对象),他们除了有眼睛鼻子思维这些共同的特征之外,还有其他不同的地方,例如名字就是不同的。这样子比较通俗了吧。 实例就是“张三”这个名字。比如Student stu = new Student();stu就是一个实例。这个stu他就已经被实例化了。表示他是这个Student类里的一个对象。new他是为了把他实例化,让电脑内存知道,现在已经存在一个这样的对象了,然后你就可以使用这个对象了。
我想大家都吃过月饼,不知可有人知道月饼是怎么做出来的。做月饼是用模具的,把配好的月饼陷放进模具里一磕,拿出来就是一个月饼了。做铁杯子是的要用模具的,把熔化的铁的液体放在铁杯的模具里,冷却后,出来就是铁杯子了。现在这个模具就有了类别的吧,做月饼的叫做月饼类模具,做铁杯的叫做铁杯类模具,程序中的类就和这个类是一个意思的。人类,植物类,猪类,狗类,猫类,猴子类。。。都和程序中的类是一个意思。可见,一个类就是一种东西,它和其他类的东西是不一样的,人类和猪类是一样的吗?说这类有何意义呢?大家都知道月饼类模具是做月饼的,这类的模具就是做月饼的,把原料放进模具不就能出来月饼吗?出来这个月饼,我们叫什么?就叫月饼!更高度点叫什么呢?叫对象! 记住啊,把月饼的料放进月饼的模具里,能做出来月饼,这个月饼就是对象!而把料放进模具里,到做出来这一个过程,我们就称为:对象的实例化! 至此我们要搞清三个问题: 一,类:就是那个月饼的模具 二,对象:就是那个月饼 三,对象的实例化:就是把料放进模具里到成品出来这一过程 那么这个类能吃吗?不能,因为它是模具啊,只有当实例化后我们才能吃这个类产生出来的对象也就是月饼。 程序中啊,我们说的类与对象其实都可以按上述比喻来类比的。 我们创造了一个类,也就相当于我们发明了一个模具,往往我们并不
宁夏师范学院数学与计算机科学学院《面向对象程序设计(C++)》实验报告
}*/ // ~CPU() {cout<<"析构了一个CPU!"< 类和对象 一、选择题 1.下列有关类的说法不正确的是()。 A.对象是类的一个实例 B.任何一个对象只能属于一个具体的类 C.一个类只能有一个对象 D.类与对象的关系和数据类型与变量的关系相似 2.下列表达方式正确的是()。 A.class P{ B. class P{ public: public: int x=15; int x; void show(){cout< 一、选择题 1定义类头时,不可能用到的关键字是()。 A) class B)private C)extends D)public 2.下列类定义中,不正确的是()。 A) class x { .... } B) class x extends y { .... } C) static class x implements y1,y2 { .... } D) public class x extends Applet { .... } 3.下列类头定义中,错误的是()。 A)public x extends y {...} B) public class x extends y {...} C)class x extends y implements y1 {...} D)class x {...} 4.设A为已定义的类名,下列声明A类的对象a的语句中正确的是( )。 A) float A a; B) public A a=A( ); C) A a=new int( ); D) static A a=new A( ); 5.设A为已定义的类名,下列声明A类的对象a的语句中正确的是()。 A) public A a=new A( ); B) public A a=A( ); C) A a=new class( ); D) a A; 6.设X 、Y均为已定义的类名,下列声明类X的对象x1的语句中正确的是()。 A) public X x1= new Y( ); B) X x1= X ( ); C) X x1=new X( ); D) int X x1; 7.设X 、Y为已定义的类名,下列声明X类的对象x1的语句中正确的是()。 A) static X x1; B) public X x1=new X(int 123); C) Y x1; D) X x1= X( ); 8.通过类MyClass中的不含参数的构造方法,生成该类的一个对象obj,可通过以下语句实现:_______________________________。 9. 设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是( )。 A) void X(int k ){ i=k; } B) X(int k ){ i=k; } C) X(int m, int n ){ i=m; j=n; } D) X( ){i=0;j=0; } 10. 有一个类A,以下为其构造方法的声明,其中正确的是( )。 A)public A(int x){...} B)static A(int x){...} C)public a(int x){...} D)void A(int x){...} 11.有一个类A,以下为其构造方法的声明,其中正确的是( )。 A)void A(int x){...} B)A(int x){...} C)a(int x){...} D)void a(int x){...} 12.设i、j、k为类X中定义的int型变量名,下列类X的构造方法中不正确的是( )。 A) X( int m){ ... } B) void X( int m){ ... } C) X( int m, int n){ ... } D) X( int h,int m,int n){ ... } 13. 设i , j为类X中定义的double型变量名,下列X类的构造方法中不正确的是( )。 A) double X(double k ){ i=k; return i; } C) X( ){i=6;j=8; } B) X(double m, double n ){ i=m; j=n; } D) X(double k ){ i=k; } 实验报告_实验3 类与对象(学生学号_姓 名) 一、实验目的 1.熟悉类的组成,掌握类的声明方法; 2.理解构造方法的作用,并掌握构造方法的定义; 3.熟练使用访问器和设置器实现信息隐藏和封装; 4.熟悉一般方法、构造方法的重载; 5.能够正确地区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用;6.掌握对象的创建、引用和使用及向方法传递参数的方式; 7.掌握this关键字的使用以及对象数组的创建和访问; 8.掌握Java包的创建、包成员的各种访问方式; 9.掌握一维数组:声明,创建,初始化,数组元素的访问; 10.掌握多维数组的概念:二维数组的声明,初始化,元素的访问。 二、实验内容与步骤 1.请回答下列问题: (1)Cirecle类定义了几个属性?它们的类型、访问权限各为什么? 答:两个PI,floatl类型,静态私有权限 Radius,float;类型,私有权限 (2)类中的“PI”的值可以在程序的方法中更改吗? 答:不可以,因为PI为静态变量 (3)Cirecle类定义了几个方法?它们的访问权限怎样? 答:四个,getRadius(),setRadius(float radius),getPerimeter(),getArea()都是公有权限 2.写出Rectangle类的程序代码: class Rectangle { private float width; private float length; public float getWidth( ) //获取矩形宽度 {return width;} public float getLength( ) //获取矩形长度 {return length;} public float getPerimeter( ) //获取矩形周长 {return 2*(width+length);} public float getArea( ) //获取矩形面积 {return (width*length);} public void setWidth(float w) //设置矩形宽度 {width=w;} public void setLength(float l) //设置矩形长度 {length=l;} } 3.回答下列问题: (1)该程序中有几个类?主类是什么?如果将这两个类放在一个文件中,源程序文件名应是什么?答:两个类:Circle、CircleTest;主类是CircleTest;源程序文件名是CircleTest。 实验四类与对象 1.实验目的 1、使用类来封装对象的属性和行为; 2、掌握对象的组合以及参数传递; 3、掌握类变量与实例变量,以及类方法与实例方法的区别 2.实验内容 1、参考教科书,完成下面实验: 1)实验1 Tank类 2)实验2 计算机与光盘 3)实验3 家族的姓氏 4)实验4 三角形、梯形和圆形的类封装 5)实验5 实例成员与类成员 2、完成习题: 1)根据要求修改实验1,改进speedUP方法,使得Tank类的对象加速时不能将speed值超过220;增加一个刹车方法:void brake(),Tank类的对象调用它能将speed的值变成0。 2)根据要求修改实验2,主类中再增加一个CD的对象,然后将计算机中的数据(data数组)复制到CD对象中。 3、提高题 编写储蓄账户类及测试类,模拟存款,参考以下运行方式: (1)新开5个储蓄账户,各储蓄账户的编号、户名在新开储蓄账户时初始化,假设每位用户新开储蓄账户时都存入了一笔钱。 (2)提示用户从键盘输入储蓄账户编号。 (3)若输入的储蓄账户编号与新开的5个储蓄账户编号之一匹配,则提示用户从键盘输入存款金额,存款金额必须大于0,否则显示错误提示,直到用户输入的存款金额大于0为止。 (4)相应储蓄账户的余额被更新。 (5)存款完成后,提示存款成功,显示该储蓄账户的编号、户名、余额。 (6)若输入的储蓄账户编号与新开的5个储蓄账户编号均无法匹配,显示错误提示,并询问是否还要继续存款。 (7)用户输入yes,继续执行步骤(2),否则显示退出信息。 最基本要求:绘制UML类图;储蓄账户的余额必须确保大于等于0。 3.实验步骤 参考教材中相关的实验。 4.评分标准习题七--类和对象
第4章 类与对象2
实验报告_实验3 类与对象
实验四-类与对象
C++实验二类与对象(附答案)