面向对象的开发方法(总结)

4、系统开发方法与面向对象系统基础解析 本文深入解析了主流系统开发方法,包括Scrum、RAD、敏捷、结构化和原型法,对比其在需求明确性、技术熟悉度、系统复杂度、可靠性、时间和进度可见性等方面的适用性,并提供选择建议。文章还详细介绍了系统分析师的五大角色及其协同工作流程,涵盖业务、系统、基础设施、变更管理和项目管理职能。最后,全面阐述了面向对象系统的核心特征,如类与对象、方法与消息、封装、继承、多态和动态绑定,结合代码示例和图表帮助读者理解现代信息系统开发的关键理念与实践路径。 阅读详情

面向对象分为面向对象的分析(OOA),面向对象的设计(OOD)和面向对象的程序设计(OOP)。
OOA的是利用抽象构造问题的对象模型
OOD是设计对象和对象之间的关系,如层次和集成;对象之间的通信方式,例如消息。对OOA的结果进行细化,使其可以被OOP接收
OOP指对系统功能的编码

面向对象是当前主流的开发方法,拥有很多不同的分支体系,
如OMT(对象建模技术),OOSE(面向对象的软件工程)和booch方法所同意为的统一建模语言。除此之外,还有caod/yourdon方法
1、基本概念
对象,类。集成,封装,消息,多态。
在UML的通用机制中,包用于将元素组织承租,构件是系统中遵从一组接口规范且付诸实现的物理的,可替换的软件模块。
UML用关系把事务结合在一起,主要包括:依赖,关联,泛化, 实现
UML采用4+1视图来描述软件和软件开发过程

UML中的建模元素
UML中的事务也被称之为建模元素,包括:
结构事务:类,接口,协作(定义了交互操作),用例,活动类,构件和节点
行为事务:交互(消息,动作次序,连接),状态机
分组事务:只有包
注释事务

UML采用4+1视图来描述软件和软件开发过程
逻辑视图:以问题域的语汇组成的类和对象的集合
进程视图:逻辑视图的一次执行实例,描述了所设计的并发和同步结构
实现视图:对组成的物理代码文件进行建模
部署视图:把构建部署到一组物理上,可计算的节点上,表示软件和硬件的映射结构
用例视图:最简单需求分析模型
这里写图片描述
这里写图片描述
和下面讲的有如下对应关系
这里写图片描述
UML2.0中定义了14种图

静态模型建模图包括:
类图,构件图,对象图,组合结构图,部署图,包图

动态模型:
用例图,状态图,活动图,定时图,顺序图,通信图,交互概念图,制品图

类图:类图描述一组类,接口,写作和他们之间的关系,属于静态设计图
对象图:一组对象和他们之间的关系,描述了类图中所建立事务的实例的静态快照
这里写图片描述
构件图:描述了一个封装的类和他的接口端口,以及有内嵌的构件和连接件组成的内部结构。构件图是类图的变体
这里写图片描述
组合结构图:是一种静态视图,以结构化的方法给出类型的内部结构
这里写图片描述

用例图:描述一组用例,参与者和他们之间的关系

顺序图:是一种交互图,强调次序
这里写图片描述
通信图(协作图):也是一种交互图,强调对象和参与者的结构组织,顶视图和顺序图可以认为是同构的,既相互变换没有数据丢失
这里写图片描述
定时图:是一种交互图,强调消息跨越不同参与对象或者参与者的实际时间,而不仅仅关心消息的相对顺序。
这里写图片描述
状态图:描述了一组状态机,对系统行为进行组织建模
活动图:将进程展示位内部一步步的控制流和数据流。竖格被称之为泳道,表示吧这一组指定给每个负责这组活动的业务组织,即对象。活动图可以看做状态图的特殊情况,其状态是活动状态。对系统功能进行建模。
这里写图片描述
部署图:描述在运行时的处理节点和在节点中生存的构件的配置
这里写图片描述
制品图:制品包括文件,数据库,可执行程序,文档等。通常和部署图一起使用
包图:模型本身分解而成的组织单元,以及他们相互之间的依赖关系
这里写图片描述
交互概念图:是活动图和顺序图的混合物
这里写图片描述

常见模型如下
(1)用例模型:
用例图用来描述系统与外部系统用户之间的交互视图
用例模型中主要有包含关系,扩展关系,和泛化关系,下图中对其分别作了示例。用例图中有三种元素,分别是参与者,用例和通信关联(图中普通黑线)
参与者可以是人,也可以是其他系统,硬件设备,时钟
对于听力的命名,最好餐区动词短语和名词短语相连
这里写图片描述

(2)分析模型
类图用来描述系统的静态对象结构
首先应该定义概念类的选取,然后确定类和类之间的关系。
类之间的关系主要有关联关系,依赖关系,泛化关系,聚合关系,组合关系,实现关系等等
分别如下图所示:
泛化关系:
泛化关系
依赖关系
这里写图片描述
是一种比较弱的依赖关系,反映在代码中,比如说一个类向另一个类发送消息,一个类是另一个类的数据成员,一个类是另一个类中某个方法的操作参数等
关联关系
这里写图片描述
是一种强依赖关系,反映在代码中,比如说类B的对象是类A的数据成员。或者类A中的方法中使用了作为全局变量的类B的对象
聚合关系
这里写图片描述
聚合关系是关联关系的特例,体现整体与部分的关系
组合关系
这里写图片描述
组合关系是关联关系的特例,是一种更强聚合关系,两者是不可分割的
实现关系
这里写图片描述
就是类实现接口

2、面向对象的分析方法
一般在软件需求工程中完成,面向对象分析中类分为三种类。
边界类:对外部系统环境和内部交互进行建模
控制类:对控制行为进行建模,多用来实现业务逻辑
实体类:存储信息和对相关行为进行建模

3、面向对象的设计
一般在系统设计中完后才能
一般包括实体类,软件类和边界类
设计原则有:
开闭原则:软件实体应该对扩展开放,对修改关闭,即尽量在不修改原有代码的情况
里氏替换原则:如果使用基类对象满足要求,那么使用子类一定也可以
依赖导致原则:抽象不应该依赖于细节,细节应该依赖于抽象,对接口编程,而不是对实现编程,当程序代码在中传递参数时,或者在使用组合或者聚合关系是,尽量使用层次更高的抽象了
组合/聚合复用原则:尽量使用组合和聚合的关系来使用一些原有的对象,使之成为新对象的一部分
接口隔离原则:使用多个专门的接口,而不是单一的总接口
最少知识原则(迪米特法则):软件尽可能的减少和其他实体的相互作用。

4、面向对象测试
OO方法将开发分为OOA,OOD,OOP,测试亦可以分为OOA测试,OOD测试,OOP测试
OOA测试:,分别测试分析模型是否满足软件的需求,以及分析模型是否满足OO方法要求
OOD测试:从设计模型本身,设计模型和分析模型的一致性,设计模型对编程的支持等方面测试。以上两种测试主要用文档审查的方式来完成
OOP测试:也分为单元测试和集成测试
整个面向对象的测试层次可以分为四层
算法层,测试大哥算法:相当于传统的单元测试
当个对象类:类层
测试对象集群,测试一组协同工作类之间的相互作用:模板层
测试整个面向对象系统:系统层

(1)面向对象系统的单元测试:
方法层次的测试:等价类划分测试,组合功能测试,递归函数测试,多态消息测试
类层次的测试:不变式边界测试和模态测试和非模态测试
类树层次的测试:多态服务测试和展评测试

(2)面向对象系统的集成测试
可以采用传统的大突击测试,自底向上和自顶向下集成,夹层式集成。
协作集成:针对系统已经完成的功能,将相互协作完成特定功能的类一起测试
基于使用的集成:先测试那些基本上不依赖其他类的类,在逐步测试依赖较多的类
类之间的连接性测试:如:类的关联的多重性测试,受控异常测试,往返场景测试,模态机测试。

一张图读懂 SAP S/4HANA Cloud 与 SAP BTP 的扩展版图 本文解析了SAP S/4HANA Cloud的扩展技术谱系,提出扩展应分为on-stack(系统内)和side-by-side(并行)两种路径,并沿着低代码到专业代码的能力梯度进行分层。on-stack扩展包括面向业务人员的Key User Extensibility和面向开发者的Developer Extensibility,强调贴近核心业务对象;side-by-side扩展则依托SAP BTP平台,提供SAP Build低代码工具、CAP开发框架和ABAP云环境三种方案,支持解耦创新。文章通过五个真实案 阅读详情

相关推荐

头歌操作系统 课堂练习4.2:页式内存管理 答案 无解析

头歌操作系统 课堂练习4.2:页式内存管理 答案 无解析

kercii的博客 1万+

【软件工程】面向对象开发全面总结

面向对象的含义、原则、方法

杰西笔记 1797

电路板功能测试系统-FCT for PCBA

电路板功能测试系统用于电路板组件(PCBA)的功能测试(FCT),满足自动化大批量生产的要求。  ● 用户根据自己需要定义测试步骤,灵活方便  ● 适合工业自动化大批量生产应用  ● 系统测试精度高,稳定可靠   一、电路板功能测试系统概述 电路板测试过程通常由多个步骤组成,每单个步骤中需要对多个物理量(电压、电流、电阻、频率、波形等)进行测试。在每个步骤测试时

6812

面向对象开发方法

系统架构师、软考、软考高级

犇叔的博客 3110

VMware Workstation 17 Pro 保姆级教程:手把手教你安装银河麒麟 Kylin V10 SP3 国产系统

本文提供VMware Workstation 17 Pro安装银河麒麟Kylin V10 SP3的详细教程,涵盖环境准备、虚拟机配置、系统安装及优化全流程。通过分步指导和实用技巧,帮助用户高效搭建国产操作系统开发测试环境,特别适合技术自主可控需求场景下的虚拟化实践。

weixin_30879169的博客 645

【RViz2】导入urdf模型时报错:Could not load resource xxx,Unable to open file xxx,Error retrieving file xxx

初学ROS2,想要在RViz2中显示urdf模型。其中.urdf文件引用了外部的meshes文件夹。

qq_43557907的博客 9487

面向对象的开发方法

面向对象方法的基本出发点就是尽可能地按照人类认识世界的方法和思维方式来分析和解决 问题。面向对象的方法以对象作为最基本得元素,它是分析问题、解决问题的核心。计算机 实现的对象与真实世界具有一一对应的关系。

Code365 1920

高斯投影坐标正反算算法(python)

高斯坐标正反算算法,在正算的时候,y的第一个数字表示是用几度带换算的,第二个数字和第三个数字表示带号。该程序是根据武汉大学出版社出版的第三版的《大地测量学基础》编写, 用于课程实验学习。

weixin_64338372的博客 4588

结构化开发方法vs面向对象开发方法

众所周知,在目前的软件开发领域存在两种比较主流的开发方法:结构化开发方法和面向对象开发方法。早期的C,Pascal和Basic等都是结构化的编程语言,而像C++,Java,C#和Ruby则属于面向对象的范畴。 1.结构化设计方法 所谓结构化程序设计方法主张把软件系统按功能(对应结构化程序中的最小单元函数)进行逐步的细分,因此也被称为面向功能的程序设计方法。这种设计方法的每个功能都负责都数据进行

cruise技术博客 9002

Weaxor勒索病毒实战分析:从加密算法到防御策略(附检测工具清单)

本文对Weaxor勒索病毒进行了深度实战剖析,详细拆解了其采用ChaCha20与AES-CTR的混合加密算法、横向移动手法及数据回传行为。文章重点分析了其密钥生成机制的“漏洞修复”,并提供了从主机加固、网络监控到基于IOC威胁狩猎的立体化企业级防御策略与检测工具清单。

weixin_29233333的博客 262

C#上位机实战:Modbus RTU串口通信(CRC校验+超时重发完整实现)

在工业自动化上位机开发中,Modbus RTU是串口通信的事实标准协议,SerialPort是 .NET 平台操作串口的原生类,无需依赖第三方库即可实现基础通信。实际项目中,工控现场存在电磁干扰、串口丢包、设备响应延迟等问题,CRC 数据校验用于保证报文完整性,超时重发机制用于提升通信稳定性。本文从零封装一套可直接落地的 Modbus RTU 通信组件,包含完整的校验算法、超时控制、重发逻辑,并配套 WinForm 演示界面。本文基于 C# 原生SerialPort类,实现了一套生产可用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 387

面向对象常见的4种开发方法

<br />目前,面向对象开发方法的研究已日趋成熟,国际上已有不少面向对象产品出现。面向对象开发方法有Coad方法、Booch方法和OMT方法等。   <br /><br />1.Booch方法   <br /><br />Booch最先描述了面向对象的软件开发方法的基础问题,指出面向对象开发是一种根本不同于传统的功能分解的设计方法。面向对象的软件分解更接近人对客观事务的理解,而功能分解只通过问题空间的转换来获得。   <br /><br />2.Coad方法   <br /><br />Coad方法是19

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 8210

计算机毕设:线性回归 Xgboost LSTM 预测黄金价格实战 完整代码数据视频讲解 可直接运行

线性回归 Xgboost LSTM 预测黄金价格实战 完整代码数据视频讲解 可直接运行

1761

几种典型的面向对象开发方法

摘 要 自80年代后期以来,相继出现了多种面向对象开发方法,文章主要介绍了其中六种典型的面向对象开发方法,并对它们进行了比较。UML的出现意味着开发方法统一化、标准化的新发展,标志着软件自动化的进程又迈进了一步。关键字 面向对象开发方法 典型 比较 一、引言随着计算机科学的发展和应用领域的不断扩大,对计算机技术的要求越来越高。特别是当计算机硬件有了飞速发展之后,各种应用领域对软件提

苏的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

80、面向对象开发方法

面向对象开发方法通过对象、类、封装、继承和多态等机制,提供了一种高效、灵活的软件开发方式。它尤其适合复杂系统的设计,但需合理应用设计原则以避免过度复杂化。在实际项目中,常与其他方法(如函数式编程)结合使用,以发挥各自优势。

qq_27678663的博客 858

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

结构化开发方法&面向对象开发方法

结构化开发方法和面向对象开发方法之比较: 结构化方法是一种基于如下概念的开发策略,即一个系统应该被划分为两个部分:数据和功能,且数据和加工数据的功能是分离的。而面向对象方法解决问题的思路是从现实世界中的客观对象(如人或事物)出发,尽量运用人类的思维方式(如抽象和分类)来构造软件系统。面向对象开发方法不是把系统定义为两个分离的部分(数据和功能),而是把它们定义为一组正在交互的对...

weixin_30808253的博客 544

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

结构化开发方法与面向对象开发方法的比较

结构化开发方法与面向对象开发方法的比较 我们百度软件开发方法,在百科中列举了8种软件开发方法,而其中最为被广泛使用的就是结构化开发方法和面向对象开发方法,这二者也是被人们讨论的最多的。在这篇博客中,我们将介绍这两种开发方法并且将二者进行比较。 结构化开发方法 结构化方法(SD方法)是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。它的基本思想...

weixin_30767921的博客 1517

面向对象开发方法-发现对象步骤总结

面向对象开发方法总结步骤:1、从需求中寻找对象2、从需求中寻找对象的属性(认真仔细读需求有助于从问题域中发现属性,这个步骤和自己的经验有直接关系)3、从需求中捕获对象应该提供的服务。4、分析服务由哪些具体的动作组合而成。5、将对象进行归纳分组,发现对象的共同点进行抽象。6、如果问题域关系复杂,要结合用例进行清晰化,结合用例再进行1~4步。

曲径通幽,冥思致远 2006

java八股文之第零篇:结构化开发方法、面向对象开发方法、编译型语言、解释性语言

前期知识 结构化开发方法和面向对象开发方法  软件开发方法指在项目投资规模和时间限制内,设计、实现符合用户需求的高质量软件,根据软件开发的特点,提出的多种软件开发策略。结构化方法和面向对象方法都是计算技术中常用的软件开发方法,两种开发方法各有利弊,选择哪一种方法要根据分析者的熟练程度和项目的具体类型而定。 结构化开发方法  结构化开发方法是一种传统的软件开发方法,用系统工程的思想和工程化的方法,按用户至上的原则,结构化、模块化、自顶向下地对系统进行分析和设计。结构化开发方法又称生命周期法

rs_gis的博客 633

软件工程——快速掌握面向对象开发方法

在《软件工程——快速掌握结构化开发方法》一文中,我们讲述了如何用结构化开发方法开发一个简单的项目案例,并重点讨论了在结构化分析和结构化设计阶段使用事件、数据流图模型、数据字典、ER模型、结构图模型完成项目的分析与设计的整个过程。 在结构化开发方法中,利用数据流图模型对系统进行层层分解,将一个大的系统分解为多个程序模块,数据流图中需要存储的信息通过ER图建立数据模型,其功能模型和数据模型是分离的,...

smilejiasmile的博客 1099

面向对象的开发方法(Object Oriented,OO)

面向对象的开发方法(Object Oriented,OO)认为是好文章吧,拿来与大家分享一下(转载) 现在每个程序员都会说:OO思想,OO开发,呵呵,是真的理解了嘛?看看下面的文章就知道啦。。。 面向对象的开发方法(Object Oriented,OO) 从事软件开发的工程师们常常有这样 的体会:在软件开发过程中,使用者会不断地提出各种更改要求,即使在软...

anku0825的博客 884
上一篇: RADIUS协议
下一篇: 设计模式(总结)---创建型设计模式
define_us
博客等级 码龄14年 157粉丝 531原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值