当前位置:   article > 正文

头歌 实验三 Java面向对象编程_头歌java实验三

头歌java实验三

第一题:编写一个计算各种形状的面积和周长的程序

任务描述

本关任务:编写一个计算各种形状的面积和周长的程序。

要求

父类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

  1. package step1;
  2. public abstract class Shape2D{
  3. //在这完成Shape2D类的程序的编写
  4. abstract public double getArea();
  5. abstract public double getL();
  6. }

Circle.java

  1. package step1;
  2. //在这完成Circle类的编写
  3. public class Circle extends Shape2D{
  4. private double r;
  5. public Circle(double r){
  6. this.r = r;
  7. }
  8. public double getArea(){
  9. return Math.PI*r*r;
  10. //return 3.14159*r*r;
  11. }
  12. public double getL(){
  13. return 2*r*Math.PI;
  14. }
  15. }

Triangle.java

  1. package step1;
  2. //在这完成Triangle类的编写
  3. public class Triangle extends Shape2D{
  4. private double a;
  5. private double b;
  6. private double c;
  7. public Triangle(double a,double b,double c){
  8. this.a=a;
  9. this.b=b;
  10. this.c=c;
  11. }
  12. public double getArea(){
  13. if(a+b>c && a+c>b && b+c>a){
  14. double p=(a+b+c)/2.0;
  15. return Math.sqrt(p*(p-a)*(p-b)*(p-c));
  16. }else{
  17. return -1;
  18. }
  19. }
  20. public double getL(){
  21. if(a+b>c && a+c>b && b+c>a){
  22. return a+b+c;
  23. }else{
  24. return -1;
  25. }
  26. }
  27. }

Rectangle.java

  1. package step1;
  2. //在这完成Rectangle类的编写
  3. public class Rectangle extends Shape2D{
  4. public static double a;
  5. public static double b;
  6. public Rectangle(double a,double b){
  7. this.a=a;
  8. this.b=b;
  9. }
  10. public double getArea(){
  11. return a*b;
  12. }
  13. public double getL(){
  14. return (a+b)*2;
  15. }
  16. }

Square.java

  1. package step1;
  2. //在这完成Square类的编写
  3. public class Square extends Rectangle{
  4. private double a;
  5. public Square(double a){
  6. super(a,b);
  7. this.a=a;
  8. }
  9. public double getArea(){
  10. return a*a;
  11. }
  12. public double getL(){
  13. return 4*a;
  14. }
  15. }

第二题 (Java)类

任务描述

本关任务:设计并实现三个类:班级(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

  1. package step2;
  2. //在这些Class类
  3. import java.util.Arrays;
  4. class Class {
  5. private String name;
  6. private int num;
  7. private Student[] students;
  8. private int cont=0;
  9. public Class(int num,String name) {
  10. this.name = name;
  11. this.num = num;
  12. this.students = new Student[num];
  13. }
  14. public void addStudent (Object student){
  15. this.students[cont] = (Student)student;
  16. cont++;
  17. }
  18. public int GetStudentNum(){
  19. return num;
  20. }
  21. public Object GetStudent(int index){
  22. return students[index];
  23. }
  24. public String toString() {
  25. return "Class{" +"name='" + name + '\'' +", num=" + num +", students=" + Arrays.toString(students) +'}';
  26. }
  27. }

Student.java

  1. package step2;
  2. //在这儿些Student类
  3. import java.util.Arrays;
  4. class Student {
  5. private int id;
  6. private String name;
  7. private int nCourse;
  8. private Course[] courses;
  9. private int cont;
  10. public Student(int id, String name, int nCourse) {
  11. this.id = id;
  12. this.name = name;
  13. this.nCourse = nCourse;
  14. this.courses = new Course[nCourse];
  15. }
  16. //添加
  17. public void addCourse(Object course){
  18. if(course instanceof Course){
  19. this.courses[cont] = (Course)course;
  20. cont++;
  21. }else {
  22. return;
  23. }
  24. }
  25. public int GetCourseNum(){
  26. return nCourse;
  27. }
  28. public Object GetCourse(int index){
  29. return courses[index];
  30. }
  31. public int calculateAvgGrade(){
  32. int sum=0;
  33. int contCourse=0;
  34. for (Course course:courses) {
  35. if(course.gethk()){
  36. continue;
  37. }else {
  38. sum+=course.getcj();
  39. contCourse++;
  40. }
  41. }
  42. return sum/contCourse;
  43. }
  44. public String toString() {
  45. return "Student{" + "id=" + id + ", name='" + name + '\'' + ", nCourse=" + nCourse + ", courses=" + Arrays.toString(courses) + "}";
  46. }
  47. }

Course.java

  1. package step2;
  2. //在这些Course类
  3. class Course {
  4. private int id;
  5. private String name;
  6. private int credit;
  7. private boolean hk;
  8. private int cj;
  9. public Course(int id, String name, int credit) {
  10. this.id = id;
  11. this.name = name;
  12. this.credit = credit;
  13. }
  14. public int getCredit() {
  15. return credit;
  16. }
  17. public boolean gethk() {
  18. return hk;
  19. }
  20. public void sethk(boolean hk) {
  21. this.hk = hk;
  22. }
  23. public int getcj() {
  24. return cj;
  25. }
  26. public void setcj(int cj) {
  27. this.cj = cj;
  28. }
  29. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/717128
推荐阅读
相关标签
  

闽ICP备14008679号