发表时间:2022-03-24来源:网络
了解设计模式
先写出程序的伪代码,伪代码是一个程序最好的注释,有助于我们理解问题和解决问题,改程序伪代码如下:
百分制转五分制: 如果成绩小于60,转成“不及格” 如果成绩在60与70之间,转成“及格” 如果成绩在70与80之间,转成“中等” 如果成绩在80与90之间,转成“良好” 如果成绩在90与100之间,转成“优秀” 其他,转成“错误” 产品代码 public class MyUtil{ public static String percentage2fivegrade(int grade){ //如果成绩小于60,转成“不及格” if (grade < 60) return "不及格"; //如果成绩在60与70之间,转成“及格” else if (grade < 70) return "及格"; //如果成绩在70与80之间,转成“中等” else if (grade < 80) return "中等"; //如果成绩在80与90之间,转成“良好” else if (grade < 90) return "良好"; //如果成绩在90与100之间,转成“优秀” else if (grade < 100) return "优秀"; //其他,转成“错误” else return "错误"; } } 测试代码:


循环完成所有功能的开发
源代码/** * Created by zx on 17-4-21. */ public class StringBufferDemo{ public static void main(String [] args){ StringBuffer buffer = new StringBuffer(20); buffer.append("Java ke "); buffer.append("shi yan er "); System.out.println(buffer.charAt(0)); System.out.println(buffer.capacity()); System.out.println(buffer.indexOf("1")); System.out.println("buffer = " + buffer.toString()); System.out.println(buffer.length()); } }进行Junit测试后结果:

右键到类,找其中go to,然后选test,
再建立一个新directory,将test放进去
import org.junit.Test;
import junit.framework.TestCase;
/**
* Created by zx on 17-4-21.
*/
public class StringBufferDemoTest extends TestCase {
@Test
public void test(){
StringBuffer buffer = new StringBuffer(20);
buffer.append("Java ke ");
buffer.append("shi yan er ");
System.out.println(buffer.charAt(0));
System.out.println(buffer.capacity());
System.out.println(buffer.indexOf("1"));
System.out.println("buffer = " + buffer.toString());
System.out.println(buffer.length());
}
public void test1() {
StringBuffer buffer = new StringBuffer(20);
buffer.append("Java ke ");
buffer.append("shi yan er ");
assertEquals('J', buffer.charAt(0));
}
}
客户如果要求系统支持Float类,这是一个合理的要求,要支持Float类,Document类要修改两个地方,这违反了OCP原则,使用多态可以解决部分问题:

面向对象三要素是“封装、继承、多态”,任何面向对象编程语言都会在语法上支持这三要素。如何借助抽象思维用好三要素特别是多态还是非常困难的,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,依赖倒置原则)OCP是OOD中最重要的一个原则,OCP的内容是:
software entities (class, modules, function, etc.) should open for extension,but closed for modification.软件实体(类,模块,函数等)应该对扩充开放,对修改封闭。对扩充开放(Open For Extension)要求软件模块的行为必须是可以扩充的,在应用需求改变或需要满足新的应用需求时,我们要让模块以不同的方式工作; 对修改封闭(Closed for Modification )要求模块的源代码是不可改动的,任何人都不许修改已有模块的源代码。基于OCP,利用面向对象中的多态性(Polymorphic),更灵活地处理变更拥抱变化,OCP可以用以下手段实现:(1)抽象和继承,(2)面向接口编程。
以TDD的方式开发一个复数类Complex产品代码如下:/** * Created by zx on 17-4-21. */ public class MyComplex { //定义属性并生成getter,setter double RealPart; double ImagePart; public double getRealPart() { return RealPart; } public void setRealPart(double realPart) { RealPart = realPart; } public double getImagePart() { return ImagePart; } public void setImagePart(double imagePart) { ImagePart = imagePart; } //定义构造函数 public MyComplex(double R, double I) { RealPart = R; ImagePart = I; } //Override Object public boolean equals(MyComplex obj1) { if (this.getRealPart () == obj1.getRealPart () && this.getImagePart () == obj1.getImagePart ()) return true; else return false; } //定义公有方法:加减乘除 public String toString() { return RealPart + " + " + ImagePart + "i"; } public MyComplex ComplexAdd(MyComplex obj) { return new MyComplex ( RealPart + obj.getRealPart (), ImagePart + obj.getImagePart () ); } public MyComplex ComplexSub(MyComplex obj) { return new MyComplex ( RealPart - obj.getRealPart (), ImagePart - obj.getImagePart () ); } public MyComplex ComplexMulti(MyComplex obj) { return new MyComplex ( RealPart * obj.getRealPart () - ImagePart * obj.getImagePart (), RealPart * obj.getImagePart () + ImagePart * obj.getRealPart () ); } } 测试代码如下:/** * Created by zx on 17-4-21. */ import junit.framework.TestCase; import org.junit.Test; public class ComplexTest extends TestCase{ Complex c1 = new Complex(0, 3); Complex c2 = new Complex(-1, -1); Complex c3 = new Complex(2,1); @Test public void testgetRealPart() throws Exception { assertEquals(-1.0, Complex.getRealPart(-1.0)); assertEquals(5.0, Complex.getRealPart(5.0)); assertEquals(0.0, Complex.getRealPart(0.0)); } @Test public void testgetImagePart() throws Exception { assertEquals(-1.0, Complex.getImagePart(-1.0)); assertEquals(5.0, Complex.getImagePart(5.0)); assertEquals(0.0, Complex.getImagePart(0.0)); } @Test public void testComplexAdd() throws Exception { assertEquals("-1.0+2.0i", c1.ComplexAdd(c2).toString()); assertEquals("2.0+4.0i", c1.ComplexAdd(c3).toString()); assertEquals("1.0", c2.ComplexAdd(c3).toString()); } @Test public void testComplexSub() throws Exception { assertEquals("1.0+4.0i", c1.ComplexSub(c2).toString()); assertEquals("-2.0+2.0i", c1.ComplexSub(c3).toString()); assertEquals("-3.0 -2.0i", c2.ComplexSub(c3).toString()); } @Test public void testComplexMulti() throws Exception { assertEquals("3.0 -3.0i", c1.ComplexMulti(c2).toString()); assertEquals("-3.0+6.0i", c1.ComplexMulti(c3).toString()); assertEquals("-1.0 -3.0i", c2.ComplexMulti(c3).toString()); } @Test public void testComplexComplexDiv() throws Exception { assertEquals("-1.5 -1.5i", c1.ComplexDiv(c2).toString()); assertEquals("1.2+0.6i", c1.ComplexDiv(c3).toString()); assertEquals("-0.6 -0.6i", c2.ComplexDiv(c3).toString()); } }
选择Design Model
选择Design Model 新建class
添加Attribute

添加测试类并建立关系
设计模式初步
(1)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,依赖倒置原则)因为S.O.L.I.D原则在之前的学习中已经阐述了就不在赘述了。(2)模式与设计模式 模式是某外在环境(Context) 下﹐对特定问题(Problem)的惯用解决之道(Solution)。模式必须使得问题明晰,阐明为什么用它来求解问题,以及在什么情况下有用,什么情况下不能起作用,每个模式因其重复性从而可被复用,本身有自己的名字,有可传授性,能移植到不同情景下。模式可以看作对一个问题可复用的专家级解决方法。计算机科学中有很多模式:GRASP模式分析模式软件体系结构模式设计模式:创建型,结构型,行为型管理模式: The Manager Pool 实现模式界面设计交互模式…这里面最重要的是设计模式,在面向对象中设计模式的地位可以和面向过程编程中的数据结构的地位相当。(3)设计模式实示例设计模式可以帮我们以最好的方式来设计系统。设计模式背后是抽象和SOLID原则。
设计模式有四个基本要素:
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务