zoukankan      html  css  js  c++  java
  • Java 第二次实验20145104 张家明

    实验二 Java面向对象程序设计

    实验内容

    1. 初步掌握单元测试和TDD

    2. 理解并掌握面向对象三要素:封装、继承、多态

    3. 初步掌握UML建模

    4. 熟悉S.O.L.I.D原则

    5. 了解设计模式

    实验步骤

    (一)单元测试

    1.伪代码:

    百分制转五分制:

    如果成绩小于60,转成“不及格”

    如果成绩在60与70之间,转成“及格”

    如果成绩在70与80之间,转成“中等”

    如果成绩在80与90之间,转成“良好”

    如果成绩在90与100之间,转成“优秀”

    其他,转成“错误”

    2.产品代码:

    3.测试代码:

    (二)TDD(Test Driven Devlopment, 测试驱动开发)

    (1)概念:先写测试代码,然后再写产品代码的开发方法叫“测试驱动开发”(TDD)。

    (2)TDD的一般步骤如下:

    -明确当前要完成的功能,记录成一个测试列表

    -快速完成编写针对此功能的测试用例

    -测试代码编译不通过(没产品代码呢)

    -编写产品代码

    -测试通过

    -对代码进行重构,并保证测试通过(重构下次实验练习)

    -循环完成所有功能的开发

    具体执行步骤如下:

    (3)优势:基于TDD,我们不会出现过度设计的情况,需求通过测试用例表达出来了,我们的产品代码只要让测试通过就可以了。

    (4)将百分制转五分制改写成TDD

    (二)面向对象三要素

    1、抽象

    (1)“去粗取精、化繁为简、由表及里、异中求同”的能力

    (2)过程抽象、数据抽象

    2、封装、继承与多态

    (1)面向对象的三要素:封装、继承、多态。

    (2)面向对象的思想涉及到软件开发的各个方面,如面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程实现(OOP)。OOA根据抽象关键的问题域来分解系统,关注是什么(what)。贯穿OOA、OOD和OOP的主线正是抽象。

    OOD中建模会用图形化的建模语言UML(Unified Modeling Language),UML是一种通用的建模语言。

    (3)封装

    封装实际上使用方法(method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,从而带来模块化(Modularity)和信息隐藏(Information hiding)的好处;接口(interface)是封装的准确描述手段。
    三)设计模式初步

    1、S.O.L.I.D原则

    如何借助抽象思维用好三要素特别是多态是非常困难的,S.O.L.I.D类设计原则是一个很好的指导:

    • SRP(Single Responsibility Principle,单一职责原则)

    • OCP(Open-Closed Principle,开放-封闭原则)

    • LSP(Liskov Substitusion Principle,Liskov替换原则)

    • ISP(Interface Segregation Principle,接口分离原则)

    • DIP(Dependency Inversion Principle,依赖倒置原则)

    2、模式与设计模式

    模式是某外在环境(Context) 下﹐对特定问题(Problem)的惯用解决之道(Solution)。模式必须使得问题明晰,阐明为什么用它来求解问题,以及在什么情况下有用,什么情况下不能起作用。每个模式因其重复性从而可被复用,本身有自己的名字,有可传授性,能移植到不同情景下。模式可以看作对一个问题可复用的专家级解决方法。

    计算机科学中有很多模式:

    • GRASP模式

    • 分析模式

    • 软件体系结构模式

    • 设计模式:创建型,结构型,行为型

    • 管理模式: The Manager Pool 实现模式

    • 界面设计交互模式

    • …

    3、设计模式实示例

    (1)设计模式(design pattern)提供一个用于细化软件系统的子系统或组件,或它们之间的关系图,它描述通信组件的公共再现结构,通信组件可以解决特定语境中的一个设计问题。

    设计模式背后是抽象和SOLID原则。

    (2)设计模式有四个基本要素:

    • Pattern name:描述模式,便于交流,存档

    • Problem:描述何处应用该模式

    • Solution:描述一个设计的组成元素,不针对特例

    • Consequence:应用该模式的结果和权衡(trade-offs)

    (3)了解设计模式可能会存在的过度设计问题以及如何避免它。

    (四)练习

    1、使用TDD的方式设计关实现复数类Complex。

    (1)伪代码

    复数类Comple

    复数=实部数+虚部数i

    复数相加 = (实部+实部)+(虚部+虚部)i

    复数相减= (实部—实部)+(虚部—虚部)i

    打印复数:

    虚部大于0 “实部”+“实部”+““+”虚部“+”i“

    虚部大于0 ”实部“+”虚部“+”i“

    虚部为0 ”实部“

    (2)产品代码
    五、遇到的问题与解决方法

    遇到问题:

    1.在编写复数类Complex时出现了测试错误

    2..编写运行Animal代码有错,Dog和Cat需要在文件中被定义

    3.@Test不能忘了

    解决方法:

    1.反复比较产品代码和测试代码,不断完善修改

    2.将Animal和Dog、Cat放在不同的class文件中编译

    3.测试代码测试不同东西时,改变时增加@Test

    六、实验感悟

    通过这次实验,我熟练掌握了TDD方法,

    知道了伪代码—〉测试代码—〉产品代码的设计顺序,

    通过反复设计测试代码,比较产品代码,最终不断完善形成一个健壮的代码,

    设计时需要不重不漏,锻炼了我们的逻辑思维能力,收获很大!

  • 相关阅读:
    例题6-8 Tree Uva548
    例题6-7 Trees on the level ,Uva122
    caffe Mac 安装
    Codeforces Round #467 (Div. 1) B. Sleepy Game
    Educational Codeforces Round37 E
    Educational Codeforces Round 36 (Rated for Div. 2) E. Physical Education Lessons
    Good Bye 2017 E. New Year and Entity Enumeration
    Good Bye 2017 D. New Year and Arbitrary Arrangement
    Codeforces Round #454 D. Seating of Students
    浙大紫金港两日游
  • 原文地址:https://www.cnblogs.com/wodedadao/p/5402891.html
Copyright © 2011-2022 走看看