blog2

前言:

  这段时间做了许多次pta的作业,也在上面进行了期中考试,前两次作业其实还好,难度不是很大,都是一些比较简单和基础的题目,考察的也都是一些简单的输入输出,题量相对多;

后两次的作业就比较复杂了,好些题目都是点线形系列的题目,题量不大,但是测试点多且杂,对图形形状的判断和计算比较侧重,好难啊~

  题目的考查形式其实比较单一,无非就是输入点的坐标,判断是否为合法输入,用正确的格式输出题目要求的结果,判断是否能够成指定的图形,或者点是否在图形内部;大作业四的两个分值较小的题目给的提示也很多,根据题目内容一步一步写,其实是非常简单的。

设计与分析:

 

在该题目中,需要设计Point类与Line类,体现了JAVA设计原则中的单一职责原则。其中,输出格式保留两位小数可以用String类中的方法。

根据类图和题目信息,其实也比较容易得出结果,但是很遗憾,有些许测试点没有过,

导致没有得到分,也有可能是因为时间有限,基础不够扎实思绪一乱导致后面的题目都没有完成。

public double getX() {
        return x;
    }
    public double getY() {
        return y;
    }
    public void setX(double x) {
        this.x = x;
    }
    public void setY(double y) {
        this.y = y;
    }

这里利用封装将成员变量私有化,对外提供对应的set ,get方法对其进行访问,对数据的私密性有所提高。以下是运行结果:

 

  if(m > 200 || n > 200 || u > 200 || v > 200 || m < 0 || n < 0 || u < 0 || v < 0 ){
            System.out.println("Wrong Format");
        }

第二题在第一题的基础上修改,考试的时候没来得及提交

 

 

 

根据类图和题目意思,也不是不能做

public abstract class Element {
    public abstract void display();
}

 

public class Plane extends Element{
    private String color;
    Plane(){}
    Plane(Line line){
        this.color=line.getColor();
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public void display(){
        System.out.println("This Plane's color is:"+getColor());
    }
}

这是根据题意创建的一个两个类的共同父类Element(抽象类)以及一个Element类的子类面Plane,将display()方法在该方法中进行声明(抽象方法),将Point类和Line类作为该类的子类。

public class Point {
    private double x;
    private double y;
    Point(){}
    Point(double m,double n){
       
        this.x=m;
        this.y=n;

    }
    public double getX() {
        return x;
    }
    public double getY() {
        return y;
    }
    public void setX(double x) {
        this.x = x;
    }
    public void setY(double y) {
        this.y = y;
    }
    public void display(){
        System.out.println("横标:"+x+"纵标:"+y);
    }
}

这是进一步抽象后的Point类;

以下是运行结果:

 

 

 

采坑心得:

  未注意to string方法,导致输出结果乱码,后面再对to string方法进行补充,问题才得以解决。

  public String toString(){

    return String.format("Rectangle:%.2f",this.getArea());

  }

  世上无难事,只怕有心人,需要用心去做一件事才可以做好,就好像Java的学习,尽管不容易,但是还可以努力

import java.lang.StrictMath;
import java.util.Formatter;

import javax.lang.model.element.Element;

public class Line extends LuYu.Element{
    private Point point1;
    private Point point2;
    private String color;
    Line(){}
    Line(Point p1,Point p2,String color){
        this.point1=p1;
        this.point2=p2;
        this.color=color;
    }
    public Point getPoint1() {
        return point1;
    }
    public Point getPoint2() {
        return point2;
    }
    public String getColor() {
        return color;
    }
    public void setPoint1(Point point1) {
        this.point1 = point1;
    }
    public void setPoint2(Point point2) {
        this.point2 = point2;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public double getDistance(){
        double distance;
        distance=Math.sqrt((point1.getX()-point2.getX())*(point1.getX()-point2.getX())+(point1.getY()-point2.getY())*(point1.getY()-point2.getY()));
        return distance;
    }

    public void display(){
        System.out.println("("+String.format("%.2f",point1.getX())+","+String.format("%.2f",point1.getY())+")");
        System.out.println("("+String.format("%.2f",point2.getX())+","+String.format("%.2f",point2.getY())+")");
        System.out.println("The line's color is:"+getColor());
        System.out.println("The line's begin point's Coordinate is:"+"\n"+"("+String.format("%.2f",point1.getX())+","+String.format("%.2f",point1.getY())+")");
        System.out.println("The line's begin point's Coordinate is:"+"\n"+"("+String.format("%.2f",point2.getX())+","+String.format("%.2f",point2.getY())+")");
        System.out.println("The line's length is:"+String.format("%.2f",getDistance()));
       
    }
}

  根据不断进行的题目练习,从中汲取营养,更加深入地学习。

 

改进建议:

  不管怎么说,最近的实验和做作业,其实都没有做好,不论是什么原因,学习还是应该放在首位,在今后的学习中,我应该更自主地学习JAVA内容,并对自己认为较难的部分的设计多复习巩固,去搞清楚每一个知识点。并且在上课的过程中,应该更认真地进行学习,课后也要及时进行复习,对课内内容进行练习。

  

总结:

  近段时间,由于疫情的原因,大家伙都呆在寝室上网课,但Java的学习没有停止,我们还在马不停蹄的学习,大家都在积极配合防疫工作,但学习也一刻不得耽搁,我们学习了很多不同于c语言的东西,首先引入的是对象和类,我们这门课的名字就叫面向对象的程序设计嘛,所以说后面学习的面向对象这一知识点也是非常重要的;封装我们学习了数据域的封装,类的抽象和封装;继承与多态也没有错过;异常处理和文本I/O为我们降低工作量;抽象类和接口为日后维护和添加删除带来了便捷。

  • 注意对象的实例化和构造方法的使用

  •  封装提高了数据的安全性 别人不能够通过 变量名.属性名 的方式来修改某个私有的成员属性且操作难度不高

  • 继承与多态提高了程序的拓展性
  • 注意事项:

    1.多态是方法的多态,属性没有多态
    2.父类和子类有联系,
    3.存在条件:继承关系,方法需要被重写,父类的引用指向子类,也就是A a=B b;(A继承于B)这个意思,
    4.什么样子的方法不能被重写
    static:它属于类,不属于实例
    final: 是一个常量
    private:属于私有的,不能被重写

  • 异常处理的学习也是不可避免的:

    程序在运行过程中发生错误或异常情况是不可避免的,如果每一个运行时错误都由程序员手动控制和处理,其工作量是不可想象的。

    Java语言中的异常处理机制就解决的上述问题,把错误与异常的管理带到了面向对象的世界

  • 接口作为一个客观的规范,是一类事物所具有的属性的总结,相当于父类。根据接口,就知道一个实例所具有的方法,是一种声明。简而言之,接口的作用是“概括和声明”。
posted @ 2022-05-09 20:37  0^-^0  阅读(100)  评论(0)    收藏  举报