OOP作业总结(三)

关于OOP第三阶段的作业总结

阅读提示:本文目录导航,PC端页面位于文章右侧,移动端点击文章标题右侧小图标,需下滑后(顶部图片消失)目录才完全显示,可根据目录跳转文章位置。

一、前言

题目集七

  • 知识点: 类的继承、多态性使用方法以及接口的应用。
  • 题量: 较小
  • 难度:
    \( \begin{split} &7-1 \quad ★★✩✩✩ \\&7-2 \quad ★★✩✩✩ \end{split} \)

题目集八

  • 知识点: 设计模式的具体运用。
  • 题量: 较小
  • 难度:
    \( \begin{split} &7-1 \quad ★★★✩✩ \end{split} \)

题目集九

  • 知识点: 设计模式的具体运用。
  • 题量: 较小
  • 难度:
    \( \begin{split} &7-1 \quad ★★★✩✩ \end{split} \)

二、设计与分析

(1)题目集7(7-1)、(7-2)两道题目的递进式设计分析总结

(7-1):

(7-2):

分析:

(7-1):
设计父类Shape圆形(Circle)矩形(Rectangle)三角形(Triangl)梯形(Trapezoid)继承Shape,实现Comparable接口,重写CompareTo()方法实现排序,使用ArrayList存储对应图形。设计DealCardList类。

@Override   
public int compareTo(Card o) {
    return Double.compare(o.getShape().getArea(), shape.getArea());
}

(7-2):
在7-1的基础上,依照面向对象设计的单一职责原则开-闭原则,进行设计。使用ArrayList存储对应图形,重写toString()方法,遍历ArrayList输出时满足格式要求。

public void cardSort() {
    Collections.sort(circles);
    Collections.sort(rectangles);
    Collections.sort(trapezoids);
    Collections.sort(triangles);
}

(2)题目集8和题目集9两道ATM机仿真题目的设计思路分析总结

题目集8(7-1):

各类对应的static属性继承
UnionPayBankBankUserBankAccountUserAccountAccountCard均为一对多关系,通过ArrayList<>类型的属性实现。且上一级和下一级相互关联,双向绑定,查询时不用从顶层一直查到底层,极大的优化了时间复杂度。

例如通过Card查询其所属用户姓名时,因为Card关联了它对应的AccountAccount又关联了它对应的User,所以查询时只需要通过Card查到Account,再通过Account查到User,即可得到姓名,而不是通过for循环遍历一个一个比对。

class Card {
    //public static ArrayList<Card> cards = new ArrayList<>();
    private String cardNumber;
    private String passWord;
    private Account account;


    Card(String cardNumber, String passWord, Account account) {
        this.cardNumber = cardNumber;
        this.passWord = passWord;
        this.account = account;
    }

    public String getCardNumber() {
        return cardNumber;
    }

    public void setCardNumber(String cardNumber) {
        this.cardNumber = cardNumber;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public void setAccount(Account account) {
        this.account = account;
    }

    public Account getAccount() {
        return account;
    }
}

三、踩坑心得

题目集4(7-1) 水文数据校验:

题目集5(7-4)统计Java程序中关键词的出现次数:

题目集5(7-5)日期问题面向对象设计(聚合二):

四、改进建议

无。

五、总结

  • 学到了什么: 通过本阶段的学习,进一步掌握了接口的使用,类的设计,设计原则的好处。
  • 进一步学习: 七大设计原则的实际体现,体会其优点。
  • 课程建议及意见: 课程自由度高,给学生充分的自学时间,作业循序渐进,梯度适中,无需要改进的地方。
posted @ 2021-06-20 12:03  impJ  阅读(83)  评论(0)    收藏  举报