收藏 分享(赏)

7(类和对象)编程.doc

上传人:gnk289057 文档编号:8181048 上传时间:2019-06-13 格式:DOC 页数:12 大小:95.50KB
下载 相关 举报
7(类和对象)编程.doc_第1页
第1页 / 共12页
7(类和对象)编程.doc_第2页
第2页 / 共12页
7(类和对象)编程.doc_第3页
第3页 / 共12页
7(类和对象)编程.doc_第4页
第4页 / 共12页
7(类和对象)编程.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、7.1(矩形类 Rectangle)编写名为 Rectangle 的类表示矩形,这个类包括: 两个 double 类型的数据域 width 和 height 表示矩形的宽和高,它们的默认值都为 1; String 类型的数据域 color 表示矩形的颜色,进一步假设所有矩形的颜色都是相同的,默认颜色为白色; 无参构造方法创建默认矩形; 一个构造方法创建指定 width 和 height 的矩形; 所有三个数据域的访问器和修改器方法; getArea()方法返回该矩形的面积; getPerimeter()方法返回它的周长;编写一个测试程序,创建两个 Rectangle 对象,设置第一个对象的宽为

2、 4,高为 40,第二个对象的宽为 3.5,高为 35.9,所有 Rectangle对象的颜色为红色。显示两个对象的属性并求它们的面积和周长。7.2(风扇类 Fan)设计一个名为 Fan 的类模拟风扇。这个类包括: 三个常量 SLOW,MEDIUM ,和 FAST,其值分别为 1,2,3,表示风扇的速度; int 类型的数据域 speed 表示风扇的速度(默认值为 SLOW) ; boolean 类型的数据域 on 表示风扇是否打开(默认值为 false) ; double 类型的数据域 radius 表示风扇的半径( 默认值为 5); String 类型的数据域 color 表示风扇的颜色(

3、默认值为 blue) ; 无参构造方法创建默认风扇; 四个参数的访问器和修改器方法; toString()方法返回描述风扇的字符串。如果风扇打开,该方法用一个组合的字符串返回风扇的速度、颜色和半径;否则,用一个组合的字符串和“fan is off ”一起返回风扇的颜色和半径。编写一个测试程序,创建两个 Fan 对象,将第一个对象设置为最大速度,半径为 10,颜色为 yellow,打开状态;第二个对象为中等速度,半径为 5,颜色为 blue,关闭状态。通过调用toString 方法显示该对象。7.3(账户类 Account)设计一个名为 Account 的类模拟账户,它包括: int 类型数据域

4、 id 表示帐号(默认值为 0) ; double 类型数据域 balance 表示账户余额(默认值为 0) ; double 类型数据域 annualInterestRate 存储当前年利率(默认值为0) ; Date 型数据域 dateCreated 存储账户开户的日期; 无参构造方法创建一个默认的账户; id,balance 和 annualInterestRate 的访问器和修改器; dateCreated 的访问器; getMonthlyInterestRate()方法返回月利率; withDraw 方法从账户提取特定数额的款; deposite 方法向账户存特定数额的款;编写一个测

5、试程序,创建一个帐号为 1122、余额为 20000、年利率为 4.5%的 Account 对象。使用 withDraw 方法提款 2500 美元,使用deposite 方法存款 3000 美元,并打印余额和月利率,以及该账户的开户日期。7.4(股票类 Stock)设计名为 Stock 的类模拟股票,该类包括: String 类型数据域 symbol 表示股票代号; String 类型数据域 name 表示股票的名称; double 型数据域 previousClosingPrice 存储前一天的股票价格; double 型数据域 currentPrice 存储当前时间的股票价格; 一个构造方

6、法根据指定的股票代号和名称创建股票; 所有数据域的访问器方法; previousClosingPrice 和 currentPrice 的修改器方法; changePercent()方法返回从 previousClosingPrice 变为currentPrice 的百分比; 编写一个测试程序创建 Stock 对象,其股票代号为 SUNW、名称为 SunMicrosystem Inc.、上期收盘价为 100。设置新的当前价为90,显示价格变化百分比。7.5(使用 GregorianCalendar 类)Java API 在包 java.util 中有一个GregorianCalendar 类,

7、使用它可以得到日期的年月日。它的无参构造方法构建一个当前日期的实例,get(GregorianCalendar.YEAR), get(GregorianCalendar.MONTH) ,get(GregorianCalendar.DAY_OF_MONTH)方法返回年、月和日。编写程序测试这个类,显示当前日期的年月日。7.6(显示日历) 重写类 PrintCalendar,在信息对话框中显示日历。因为输出是由该类中多个静态方法产生的,所以,应该定义一个静态String 型变量 output 存储输出结果,并在信息对话框中显示它。public class PrintCalendar /* Main

8、 method */public static void main(String args) / Prompt the user to enter yearString yearString = JOptionPane.showInputDialog(“Enter full year (e.g., 2001):“);/ Convert string into integerint year = Integer.parseInt(yearString);/ Prompt the user to enter monthString monthString = JOptionPane.showInp

9、utDialog(“Enter month as number between 1 and 12:“);/ Convert string into integerint month = Integer.parseInt(monthString);/ Print calendar for the month of the yearprintMonth(year, month);/* A stub for printMonth may look like this */public static void printMonth(int year, int month) System.out.pri

10、nt(month + “ “ + year);/* A stub for printMonthTitle may look like this */public static void printMonthTitle(int year, int month) /* A stub for getMonthName may look like this */public static String getMonthName(int month) return “January“; / a dummy value/* A stub for getMonthNmae may look like thi

11、s */public static int getStartDay(int year, int month) return 1; / a dummy value/* A stub for getNumberOfDaysInMonth may look like this */public static int getNumberOfDaysInMonth(int year, int month) return 31; / a dummy value/* A stub for getTotalNumberOfDays may look like this */public static int

12、getTotalNumberOfDays(int year, int month) return 10000; / a dummy value/* A stub for getTotalNumberOfDays may look like this */public static boolean isLeapYear(int year) return true; / a dummy value7.7(时间类 Time)设计名为 Time 的类。该类包含: 数据域 hour、minute 和 second 表示时间; 无参构造方法为当前时间创建 Time 对象; (数据域的值表示当前的时间) 一

13、个构造方法在指定以毫秒表示的、从 1970 年 1 月 1 日午夜开始已逝去的时间时,创建一个 Time 对象; (数据域的值表示该时间) 三个 get 方法分别获得数据域 hour,minute,和 second;编写测试程序创建两个 Time 对象(使用 new Tme()和 new Time(5555500000),并显示它们的小时、分钟和秒。提示 无参构造方法可以使用当前时间,当前时间可以通过System.currentTimeMillis()获得。另外一个构造方法为指定逝去的时间设置小时、分钟和秒的值。例如,如果逝去的时间为毫秒,那么小时为,分钟为,秒为;7.8(课程类 Course

14、)在程序清单1 public class Course 2 private String name;3 private String students = new String1004 private int numberOfStudents;56 public Course(String name) 7 this.name = name;8 910 public void addStudent(String student) 11 studentsnumberOfStudents = student;12 numberOfStudents+;13 1415 public String get

15、Students() 16 return students;17 1819 public int getNumberOfStudents() 20 return numberOfStudents;21 2223 public String getName() 24 return name;25 26 数组的大小是固定的,对它进行改进,通过创建新的更大的数组并复制当前数组的内容来实现数组尺寸的自动增长。7.9(整数类 MyInteger)设计名为 MyInteger 的类,它包括: int 数据域 value 存储该对象表示的 int 值; 一个构造方法,当指定 int 值时,创建 MyInte

16、ger 对象; 一个 get 方法返回 int 的值; 静态方法 isEven(), isOdd()和 isPrime(),如果 value 的值为偶数,奇数,或素数时返回 true; 静态方法 isEven(MyInteger),isOdd(MyInteger)和isPrime(MyInteger),如果指定的值为偶数,奇数,或素数时返回 true; equals(int)和 equals(MyInteger)方法,如果该对象的值与指定的值相等,返回 true; 静态方法 parseInt(int)将字符串转变成 int 值;编写测试程序运行该类中的所有方法。7.10 改写以下 Loan 类

17、,增加两个计算月支付额和总支付额的静态方法,如下所示:1 public class Loan 2 private double annualInterestRate;3 private int numberOfYears;4 private double loanAmount;5 private java.util.Date loanDate;67 /* Default constructor */8 public Loan() 9 this(7.5, 30, 100000);10 1112 /* Construct a loan with specified annual interest

18、rate,13 number of years and loan amount14 */15 public Loan(double annualInterestRate, int numberOfYears,16 double loanAmount) 17 this.annualInterestRate = annualInterestRate;18 this.numberOfYears = numberOfYears;19 this.loanAmount = loanAmount;20 loanDate = new java.util.Date();21 2223 /* Return ann

19、ualInterestRate */24 public double getAnnualInterestRate() 25 return annualInterestRate;26 2728 /* Set a new annualInterestRate */29 public void setAnnualInterestRate(double annualInterestRate) 30 this.annualInterestRate = annualInterestRate;31 3233 /* Return numberOfYears */34 public int getNumberO

20、fYears() 35 return numberOfYears;36 3738 /* Set a new numberOfYears */39 public void setNumberOfYears(int numberOfYears) 40 this.numberOfYears = numberOfYears;41 4243 /* Return loanAmount */44 public double getLoanAmount() 45 return loanAmount;46 4748 /* Set a newloanAmount */49 public void setLoanA

21、mount(double loanAmount) 50 this.loanAmount = loanAmount;51 5253 /* Find monthly payment */54 public double getMonthlyPayment() 55 double monthlyInterestRate = annualInterestRate / 1200;56 return loanAmount * monthlyInterestRate / (1 -57 (Math.pow(1 / (1 + monthlyInterestRate), numberOfYears * 12);5

22、8 5960 /* Find total payment */61 public double getTotalPayment() 62 return getMonthlyPayment() * numberOfYears * 12;63 6465 /* Return loan date */66 public java.util.Date getLoanDate() 67 return loanDate;68 69 public static double monthlyPayment(double annualInterestRate,int numOfYears, double loan

23、Amount)public static double totalPayment(double annualInterestRate,int numOfYears, double loanAmount)编写测试程序运行所有方法。7.11(平面点的类 MyPoint)设计名为 MyPoint 的类表示一个具有 x 坐标和 y 坐标的点,该类包括: 两个数据域 x 和 y 表示坐标; 无参构造方法创建点(0,0); 一个构造方法根据指定坐标创建一个点; 两个 get 方法分别得到数据域 x 和 y; distance 方法返回 MyPoint 类型的两个点之间的距离; distance 方法返回从

24、这一点到另一个指定 x 和 y 坐标的点之间的距离;编写测试程序创建两个点(0,0)和(10 ,30.5) ,并显示它们之间的距离。7.12(显示素数因子) 编写程序,读入一个正整数并按降序显示它的所有素数因子。例如,输入的整数为 120,显示的素数因子为5,3,2,2,2。使用 StackOfIntegers 类存储因子(如 2,2,2,3,5) ,提取并按倒序显示这些因子。1 public class StackOfIntegers 2 private int elements;3 private int size;4 public static final int DEFAULT_CAP

25、ACITY = 16;56 /* Construct a stack with the default capacity 16 */7 public StackOfIntegers() 8 this(DEFAULT_CAPACITY);9 1011 /* Construct a stack with the specified maximum capacity */12 public StackOfIntegers(int capacity) 13 elements = new intcapacity;14 1516 /* Push a new integer into the top of

26、the stack */17 public int push(int value) 18 if (size = elements.length) 19 int temp = new intelements.length * 2;20 System.arraycopy(elements, 0, temp, 0, elements.length);21 elements = temp;22 2324 return elementssize+ = value;25 2627 /* Return and remove the top element from the stack */28 public

27、 int pop() 29 return elementssize;30 3132 /* Return the top element from the stack */33 public int peek() 34 return elementssize - 1;35 3637 /* Test whether the stack is empty */38 public boolean empty() 39 return size = 0;40 4142 /* Return the number of elements in the stack */43 public int getSize

28、() 44 return size;45 46 7.13(显示素数) 编写程序,按降序显示所有小于 120 的素数。使用StackOfIntegers 类存储这些素数(如 2,3,5,7)提取并按倒序显示它们。7.14(税款类 Tax)设计名为 Tax 的类,该类包含下列实例数据域: int filingStatus: 四种纳税人状态之一: 0 单身纳税人, 1 已婚共缴纳税人, 2 已婚单缴纳税人, 3 家庭纳税人. 使用公用静态常量 SINGLE_FILER (0), MARRIED_JOINTLY (1), MARRIED_SEPARATELY (2), HEAD_OF_HOUSEHOL

29、D (3) 表示这些状态。 int brackets:存储每种纳税人的纳税等级 (参见程序 6.11, ComputeTax.java). double rates: 存储每种纳税等级的税率 (参见程序 6.11). double taxableIncome: 存储可征税收入 该类给每个数据域提供 get 和 set 方法,提供返回税款的 getTax()方法,提供无参构造方法和构造方法. Tax(filingStatus, brackets, rates, taxableIncome).编写测试程序使用 Tax 类对所给四种纳税人打印 2001 年和 2002 年的税款表,可征税收入为$50

30、000 到$60000,步长区间为$10002001 年的税率为表 7.1表 7.1. 2001 年美国个人所得税率表税率 单身纳税人已婚共缴纳税人或合法寡妇 已婚单缴纳税人 家庭纳税人15% $27,050 以下 $45,200 以下 $22,600 以下 $36,250 以下27.5% $27,051$65,550 $45,201$109,250 $22,601$54,625 $36,251$93,65030.5% $65,551$136,750 $109,251$166,500 $54,626$83,250 $93,651$151,65035.5% $136,751$297,350 $1

31、66,501$297,350 $83,251$148,675 $151,651$297,35039.1% $297,351 以上 $297,351 以上 $148,676 以上 $297,351 以上2002 年的税率为表 7.1表 7.2. 2002 年美国个人所得税率表税率 单身纳税人已婚共缴纳税人或合法寡妇 已婚单缴纳税人 家庭纳税人10% $6,000 以下 $12,000 以下 $6,000 以下 $10,000 以下15% $6,001$27,950 $12,001$46,700 $6,001$23,350 $10,001$37,45027% $27,951$67,700 $46,701$112,850 $23,351$56,425 $37,451$96,70030% $67,701$141,250 $112,851$171,950 $56,426$85,975 $96,701$156,60035% $141,251$307,050 $171,951$307,050 $85,976$153,525 $156,601$307,05038.6% $307,051 以上 $307,051 以上 $153,526 以上 $307,051 以上

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报