赞
踩
本关任务:编写一个计算各种形状的面积和周长的程序。
父类Shape2D为一个抽象类,其中包含计算周长和计算面积两个抽象方法。其他形状圆(Circle),三角形(Triangle)和长方形(Rectangle)类均继承自Shape2D类。而正方形Square类继承自Rectangle类。编写计算这些形状的面积和周长的各类的程序。
abstract public double getArea();//计算面积的方法 abstract public double getL();//计算周长的方法 如果三角形的边不满足要求,这两方法都返回-1 PI=3.14159 各类的构造函数如下: public Circle(double r);r为圆的半径 public Triangle(double a,double b,double c);a,b,c为三边的长 public Rectangle(double a,double b);a,b为长宽 public Square(double a);a为边长 ####提示: 不同的形状包含的属性应该不同,构造函数应该不同,计算周长和面积的方法也应该不同。
Shape2D.java
- package step1;
- public abstract class Shape2D{
- //在这完成Shape2D类的程序的编写
- abstract public double getArea();
- abstract public double getL();
- }
Circle.java
- package step1;
- //在这完成Circle类的编写
- public class Circle extends Shape2D{
-
- private double r;
-
- public Circle(double r){
- this.r = r;
- }
-
- public double getArea(){
- return Math.PI*r*r;
- //return 3.14159*r*r;
- }
-
- public double getL(){
- return 2*r*Math.PI;
- }
- }
Triangle.java
- package step1;
- //在这完成Triangle类的编写
- public class Triangle extends Shape2D{
-
- private double a;
- private double b;
- private double c;
-
- public Triangle(double a,double b,double c){
- this.a=a;
- this.b=b;
- this.c=c;
- }
-
- public double getArea(){
- if(a+b>c && a+c>b && b+c>a){
- double p=(a+b+c)/2.0;
- return Math.sqrt(p*(p-a)*(p-b)*(p-c));
- }else{
- return -1;
- }
- }
-
- public double getL(){
- if(a+b>c && a+c>b && b+c>a){
- return a+b+c;
- }else{
- return -1;
- }
- }
- }
Rectangle.java
- package step1;
- //在这完成Rectangle类的编写
- public class Rectangle extends Shape2D{
-
- public static double a;
- public static double b;
-
- public Rectangle(double a,double b){
- this.a=a;
- this.b=b;
- }
-
- public double getArea(){
- return a*b;
- }
-
- public double getL(){
- return (a+b)*2;
- }
-
- }
Square.java
- package step1;
- //在这完成Square类的编写
- public class Square extends Rectangle{
-
- private double a;
-
- public Square(double a){
- super(a,b);
- this.a=a;
- }
-
-
- public double getArea(){
- return a*a;
- }
-
- public double getL(){
- return 4*a;
- }
-
- }
本关任务:设计并实现三个类:班级(Class)、学生(Student)、课程(Course)。然后计算班上每个同学的平均成绩。
班级类的私有属性包含班级名称、学生人数以及学生列表(用对象数组表示)。班级类的方法包括:
构造函数Class(int num,String name) //num学生人数,name班级名称
void addStudent (Object student) //往班级中添加学生。Student学生对象
int GetStudentNum() //返回班级人数
Object GetStudent(int index) //返回对应下标的学生对象
重写toString()方法来将班级有关信息转换成字符串.
学生类的私有属性包含学生的学号、姓名、所选课程数量、所选课程(用对象数组表示)。学生类的方法包括:
构造函数Student(int id, String name, int nCourse) //id学号,name学生姓名,nCourse所学课程数
void addCourse(Object course) 往学生类中添加课程对象
int GetCourseNum() 返回所学课程数
Object GetCourse(int index) 返回对应下标的课程对象
int calculateAvgGrade() 计算该每个学生的平均成绩(取整)
重写toString()方法来将学生有关信息转换成字符串。
课程类包含私有属性课程编号、课程名称、学分、是否缓考以及成绩(成绩要求在0到100分之间)。课程类方法包括:
构造函数public Course(int id,String name,int credit) 分别为课程编号、课程名称、学分
void sethk(boolean hk) hk=true代表缓考
boolean gethk() 返回是否学生缓考
void setcj(int cj) 设置成绩
int getcj() 返回成绩
int getCredit() 返回该课程的学分
重写toString()方法来将课程有关信息转换成字符串。
编写一个测试类来测试这三个类的使用。往班级中创建多个学生,学生可以选修多门课程。计算班级中每个同学的平均成绩。 注意:如果某生某课程缓考,则该门课成绩不能计入平均成绩内。此外,类中不可出现公用属性,必须使用封装。
Class.java
- package step2;
- //在这些Class类
- import java.util.Arrays;
-
- class Class {
- private String name;
- private int num;
- private Student[] students;
- private int cont=0;
- public Class(int num,String name) {
- this.name = name;
- this.num = num;
- this.students = new Student[num];
- }
- public void addStudent (Object student){
- this.students[cont] = (Student)student;
- cont++;
-
- }
- public int GetStudentNum(){
- return num;
- }
- public Object GetStudent(int index){
- return students[index];
- }
-
- public String toString() {
- return "Class{" +"name='" + name + '\'' +", num=" + num +", students=" + Arrays.toString(students) +'}';
- }
- }
Student.java
- package step2;
- //在这儿些Student类
- import java.util.Arrays;
-
- class Student {
- private int id;
- private String name;
- private int nCourse;
- private Course[] courses;
- private int cont;
- public Student(int id, String name, int nCourse) {
- this.id = id;
- this.name = name;
- this.nCourse = nCourse;
- this.courses = new Course[nCourse];
- }
- //添加
- public void addCourse(Object course){
- if(course instanceof Course){
- this.courses[cont] = (Course)course;
- cont++;
- }else {
- return;
- }
- }
- public int GetCourseNum(){
- return nCourse;
- }
- public Object GetCourse(int index){
- return courses[index];
- }
- public int calculateAvgGrade(){
- int sum=0;
- int contCourse=0;
- for (Course course:courses) {
- if(course.gethk()){
- continue;
- }else {
- sum+=course.getcj();
- contCourse++;
- }
- }
- return sum/contCourse;
- }
-
- public String toString() {
- return "Student{" + "id=" + id + ", name='" + name + '\'' + ", nCourse=" + nCourse + ", courses=" + Arrays.toString(courses) + "}";
- }
- }
Course.java
- package step2;
- //在这些Course类
- class Course {
- private int id;
- private String name;
- private int credit;
- private boolean hk;
- private int cj;
-
- public Course(int id, String name, int credit) {
- this.id = id;
- this.name = name;
- this.credit = credit;
- }
-
- public int getCredit() {
- return credit;
- }
-
- public boolean gethk() {
- return hk;
- }
-
- public void sethk(boolean hk) {
- this.hk = hk;
- }
-
- public int getcj() {
- return cj;
- }
-
- public void setcj(int cj) {
- this.cj = cj;
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。