8_14 日学到的新知识(简单的工厂模式的实现, MVC 模式的基本概念,软件工程中的四种开发模型, 以及软件工程中的一些小知识点)

1.今天看了一章的大话设计模式,把简单的工厂模式用C++终于做出来了,下面是我的学习笔记:

第一章主要讲的是用面向对象的方法实现一个计算器控制台程序,要求输入两个数和运算符,的到结果

》》在这之前先简单了解一下关于软件的可重用性, 可维护性, 可拓展性 , 灵活性?

书中用印刷术来作为背景:

(1)如果要该一句话中的几个字,直接修改即可(可维护)

(2)这些字并非用完这次就不会再用,完全可以在后来的印刷术中继续用(可复用)

(3)如果要加字,只需要另外印刷所要加的字(可拓展)

(4)字的排列可以是横排,也可以是竖排,只要将活字移动就可以达到排列的需求(灵活性)

》》什么是业务的封装?

答: 让业务逻辑和界面逻辑分开,让他们之间的耦合度降低,只有分开,才能达到容易维护或者容易拓展

下面是用C++实现的简单的工厂模式:

#include

#include
using namespace std;



class  Operation
{
public:

public:
	virtual double  GetResult() = 0;

public:
		double numberA;
		double numberB;
};

class AddOperation:public Operation
{
public:
	double GetResult()
	{
		double res = 0;
		res = numberA + numberB;
		return res;
	}
};


class SubOperation:public Operation
{
public:
	double GetResult()
	{
		double res = 0;
		res = numberA - numberB;
		return res;
	}

};

class MulOperation:public Operation
{
public:
	double GetResult()
	{
		double res = 0;
		res = numberA * numberB;
		return res;
    } 

};


class DivOperation:public Operation
{
public:
	double GetResult()
	{
		double res = 0;
		if(numberB == 0)
		{
			exit(-1);
		}
		res = numberA / numberB;
		return res;
	}
};

class OperationFactory
{
public:
    static  Operation* createOperate(char  operate)
  {
		Operation *oper;
		switch(operate)
		{
			case '+':
				oper = new AddOperation();
	           break;
			case'-':
				oper = new SubOperation();
				break;
			case'*':
				oper = new MulOperation();
				break;
			case'/':
				oper = new DivOperation();
				break;
		}
		return oper;
   }
};

//“简单工厂模式”:到底要实例化谁,将来会不会增加实例化的对象,应该考虑用单独的类
//来做这个创造实例的过程,这就是工厂:   总结:工厂的作用:如何创造实例
int main()
{
	Operation *oper;
	oper = OperationFactory::createOperate('+');
	oper->numberA = 10;
	oper->numberB = 20;
	double result = oper->GetResult();
	cout<
下面是运行的结果:

今天就只读了第一章~~~~~~

接下来总结我在牛客网上刷的一套软件工程的专项练习。。。。。今天学的东西还不少(~~~~~~~)

(2)C++中调用类的静态方法:应该用::来调用,而不应该用. 调用

(3)MVC设计模式

a.简介

Model-View-Control 的简称:  模型-------视图-----控制器:存在于服务器表达层的模型,将应用分开,改变应用之间的高度耦合

b.模式结构:(模型+视图+控制器)

1》》视图:数据的展现,是用户看到并与之交互的界面,视图向用户显示相关数据,并能接收用户的输入数据,但是不进行任何实际的业务处理,视图可以向模型查询业务状态,但是不能改变模型,视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新

2》》模型:应用对象

模型是应用程序的主体部分,代表了业务数据和业务逻辑,当数据发生改变时, 它要负责通知视图部分;一个模型能为多个视图提供数据

3》》控制器:逻辑处理,控制实体数据在视图上的显示,调用模型处理业务请求

当web 用户单击web 页面中的提交按钮来发送html表单时, 控制器接受请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据

8_14 日学到的新知识(简单的工厂模式的实现, MVC 模式的基本概念,软件工程中的四种开发模型, 以及软件工程中的一些小知识点)_第1张图片

在MVC 模式中,Web 用户向服务器提交的所有请求都由控制器接管,接受到请求之后,控制器负责决定该调用哪一个模型来进行处理,然后模型根据用户的需要进行相应的业务逻辑处理,并返回数据,最后控制器调用相应的视图来格式化模型返回的数据,并通过视图来展现给用户


(4)四种开发模型

a》瀑布模型:各项活动严格按照顺序执行,当前活动接受上一活动的工作结果,实施完成所需要的工作内容

b》原型模型:快速建立起可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集,主要目的是确定客户的需求

c》螺旋模型:将瀑布模型和原型模型结合起来,并且加入两种模型都忽略的风险分析,特点是螺旋模型是风险驱动的,关注风险,运行风险分析后决策是否继续进行项目

d》增量模型:融合了瀑布模型的基本成分和原型模型的迭代特征,采用随着日程时间进展而交错的线性序列,把软件产品作为一系列增量构件来进行分析,设计, 编码, 测试, 发布

选择的原则:

瀑布模型:需求明了,时间要求宽松, 功能单一, 项目规模 比较小

原型模型:适用于客户能提出一般性的目标,但是不能作出详细的输入,输出,或者开发者不能确定算法的有效性

螺旋模型:适用于大规模的软件项目,需求不明朗,风险比较高的项目

增量模型:适用于需求逐渐明朗清晰的软件项目

(5)接口的作用:契约式设计(要求软件设计者为软件组件定义正确的,精确的, 并且可验证的接口)以封装实现

(6)可移植性:指软件从一个运行环境到另一个环境下的难易程度,提高软件的可移植性应该提高它的设备不依赖性

(7)软件工程的三大要素 = 方法 + 工具 + 过程

(8)E-R 模型的组成:实体+属性+联系

如何将E-R模型转换为关系模型

a》一对一

独立对应一个关系模式,由各实体的主码构成关系模式, 关系模式的主码可以是任一个实体集的主码

b》一对多

与一对一情况相似,只是其主码不再是任一实体的主码,而必须是指定n 端的主码为关系模式的主码

c》多对多

每个实体集对应一个关系模式,多对多联系单独对应一个实体集,该实体集的主码由各实体集的主码共同构成

(9)构成计算机软件的是 计算机程序+ 处理的数据 +相关的文档






你可能感兴趣的:(每日新知识)