程序设计
文章平均质量分 51
dadalan
这个作者很懒,什么都没留下…
展开
-
UML符号含义
类之间的关系 UML把类之间的关系分为以下5种. ● 关联:类A与类B的实例之间存在特定的对应关系 ● 依赖:类A访问类B提供的服务 ● 聚集:类A为整体类,类B为局部类,类A的对象由类B的对象组合而成 ● 泛化:类A继承类B ● 实现:类A实现了B接口 关联(Association) 关联指的是类之间的特定对应关系,在UML中用带实线的箭头表示。按照类之间的数量对比,关联可以分为以下三种: ● 一对一关联 ● 一对多关联 ● 多对多关联注意:关联还要以分为单向关联原创 2010-08-20 18:03:00 · 2565 阅读 · 0 评论 -
uml图形含义
类之间的关系 UML把类之间的关系分为以下5种. ● 关联:类A与类B的实例之间存在特定的对应关系 ● 依赖:类A访问类B提供的服务 ● 聚集:类A为整体类,类B为局部类,类A的对象由类B的对象组合而成 ● 泛化:类A继承类B ● 实现:类A实现了B接口 关联(Association) 关联指的是类之间的特定对应关系,在UML中用带实线的箭头表示。按原创 2009-03-27 16:27:00 · 4100 阅读 · 0 评论 -
设计方面的博客
http://www.cnblogs.com/leoo2sk/原创 2009-03-28 12:54:00 · 469 阅读 · 0 评论 -
多语言
程序运行效果图:VC中实现多语菜单非常容易,下面以英汉对照菜单为例说明多语菜单实现的方法。 一、建立工程项目文件 选择语言为中文,其余采用默认,添加中英文切换菜单IDD_MENU_CHANGE 二、用文本形式打开资源文件,找到IDR_MAINFRAME的菜单文本内容如下: IDR_MAINFRAME MENU PRELOAD DISCARDABLE BEGIN POPUP "文件(amp;原创 2009-03-21 00:54:00 · 582 阅读 · 0 评论 -
程序为什么要模块化
程序为什么要模块化,这是我这次进公司时,帮同事调程序时发自内心的一个感触,看到同事代码时,给我感觉第一:函数内代码太长,居然达400行。第二:代码太长导致变量命名不规范第三功能复杂第四可读性不好,看了好久才把整个函数的所有功能弄懂。其他就不写了,总之。。。。 程序模块化,这样使程序更加清晰便于程序改动”。除此之外,程序模块化有着更深的意义:(1)模原创 2008-12-18 09:35:00 · 11071 阅读 · 0 评论 -
程序库的设计
不同的程序库体现不同的设计决策, 这些决策包括效率,可扩张性,可移植性,类型安全和其他一些问题。通过切换到更注重性能的问题的程序库,你有可能大幅大地提供软件的运行效率。原创 2009-02-18 09:31:00 · 631 阅读 · 0 评论 -
C++中 替换string类型字符串中汉字的问题
:#include #include using namespace std; void main() { string s="你好世界"; for(int i=0;i{ string a=" "; a[0]=s[i]; a[1]=s[i+1]; if(a=="好") { a="坏"; s[i] = a[0]; s[i+1]=a[1]; } cout} coutsystem("pause");原创 2009-02-18 14:30:00 · 4227 阅读 · 0 评论 -
Adapter模式
GOF《设计模式》一书对Adapter模式是这样描述的: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。 这段话大致是说:我们需要一种方式,为一个功能正确但接口不合的对象创建一个新接口。例如,客户给我们如下需求:1) 为都有“显示”(display)行为的点、线、正方形分别创建类。2) 客户对象不必知道自原创 2009-02-15 00:51:00 · 2834 阅读 · 0 评论 -
嵌入式中地址-函数之间的转换
经常见到嵌入式设计中,将某一程序段的入口地址转换为一个函数,我们来分析一下它的成分: 如在bootloader的0x00000020地址上的双字单元中有这样一条语句:@Address is 0x00000020 b powerdown @Jump to the flag "powerdown"......powerdown:...... 然后在原创 2009-02-10 14:05:00 · 766 阅读 · 0 评论 -
类中使用模板
#include #include using namespace std; struct Student { int age; }; template class MyStudent { public: Student A[10]; MySt原创 2009-02-09 20:49:00 · 773 阅读 · 0 评论 -
class typename区别
class 可以用来定义类,也可用作模板参数类型,而typename只能用作参数类型原创 2009-02-10 23:21:00 · 640 阅读 · 0 评论 -
桥梁模式 一
桥梁模式的用意是将问题的抽象和实现分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题。 比如我们有一个画图程序 有2个图形(Circle Rectangle )和2种画图方法(Drawing1 Drawing2) 图形可能会使用Drawing1来画图 也可能使用Drawing2来画图 在这个画图程序中有两个可变因素 一个是图形的种类 有可能会增加新的图形 另一个是画图方法 可能会有Dra原创 2009-02-08 23:19:00 · 766 阅读 · 0 评论 -
在面向对象设计中有两条重要原则
1.找出变化并封装之 2.优先使用聚合而不是继承原创 2009-02-08 23:03:00 · 564 阅读 · 0 评论 -
观察者(Observer)模式
一、 观察者(Observer)模式观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。原创 2009-02-08 22:58:00 · 762 阅读 · 0 评论 -
优秀的程序
理解你的需求,仔细地总体设计,良好的程序实现经验,所有这些帮助你完成优秀的程序。 分层是必要的,但同时带来程序开销的增加,把握好分层带来的清晰性和你需要的效率,以及资源的限制的平衡,正是一个构架师水平的体现。原创 2009-02-08 22:08:00 · 744 阅读 · 0 评论 -
面向接口的编程
关键字: 接口 在项目中的意义: 在传统的项目开发过程中,由于客户的需求经常变化,如果不采用面向接口编程,那么我们必须不停改写现有的业务代码。改写代码可能产生新的BUG,而且改写代码还会影响到调用该业务的类,可能全都需要修改,影响系统本身的稳定性。而且为了将改写代码带来的影响最小,我们不得不屈服当前的系统状况来完成设计,代码质量和稳定性更低。当这种情况积累到一定程度时,系统就会出现不可预原创 2009-03-27 17:26:00 · 687 阅读 · 0 评论 -
工厂模式的思考
Factory Method模式相对于其他创建型模式,应该是最简单、最容易实现的模式,该模式定义了一个用于创建对象的接口,而让子类决定实例化哪一个类,这样就将实例化的过程延迟到了子类,从而提高了对象创建的灵活性,在这里一个最核心的特征就是为子类提供了一个挂钩。但是,该模式有一个潜在的缺陷,就是客户可能仅仅为了创建一个特定ConcreteProduct对象而不得不创建Creator的子类,原创 2009-03-27 17:27:00 · 652 阅读 · 0 评论 -
高层模块不应该依赖于底层模块。二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象
高层模块不应该依赖于底层模块。二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象原创 2009-03-27 17:48:00 · 5859 阅读 · 0 评论 -
使用动态库,让系统模块化
SimpleDLLClass.h #define SIMPLEDLL_EXPORT#ifdef SIMPLEDLL_EXPORT#define DLL_EXPORT __declspec(dllexport)#else#define DLL_EXPORT #endif#include #include extern "C" DLL_EXPORT void myPuts(LPS原创 2010-02-21 11:38:00 · 1105 阅读 · 0 评论 -
socket实现从http服务器上下载
1. 从http 发送回来的信息包中获取到端口以及ip地址2. 通过ip,端口去连接服务器3. 接收服务器信息。 // // GetHTTP.cpp // // Retrieves a file using the Hyper Text Transfer Protocol // and print原创 2009-06-17 11:03:00 · 2374 阅读 · 0 评论 -
Cocoa 框架
Cocoa 框架接下来的段落总结了 Cocoa 的类和一些重要的框架的示意图,特别是核心框架 Foundation (基础)和 Application Kit (应用程序工具箱)。内容: 介绍 基础框架 应用程序工具箱 其它 Cocoa API 框架 介绍是什么使得一个程序变成了一个 Cocoa 的程序?它其实不是编程语言,因为您可以在 Cocoa原创 2009-04-08 21:38:00 · 5545 阅读 · 2 评论 -
委托例子代码
#include "stdio.h"class CObject{};class Event{ public: unsigned long EventType; public: Event(unsigned long EventType) { this->EventType = EventType; }};class Handler{ publi原创 2009-04-07 19:28:00 · 655 阅读 · 0 评论 -
声明函数指针并实现回调
程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。声明函数指针 回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法,便会发现原创 2009-04-02 14:00:00 · 976 阅读 · 0 评论 -
C#委托之个人理解
什么是委托 首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西。如何使用委托 在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。声明,如:1 namespace Vczx.ProCSharp.Exc2 {3 delegate double原创 2009-04-02 11:13:00 · 609 阅读 · 0 评论 -
手机游戏该如何设计盈利模式?
1.手机游戏如何赚钱?相信这个是所有商家最头疼的事情。目前为止还没有一个主导的盈利模式。 2.手机游戏什么类型最流行?3.手机游戏做单机的还是做网络的?相信这个也是所有商家比较头疼的事情。4.手机游戏有什么优势?为什么用户会选择手机而不选择PC呢?这些都是非常严峻的问题。手机游戏的优势有那些呢?A.便捷,能随时玩游戏?希望大家帮忙共同解决这些问题。我遇到以下几种手机收费模式。原创 2009-03-31 13:47:00 · 1681 阅读 · 0 评论 -
根据字符串类名动态创建对象
根据字符串类名动态创建对象老板很无理的要求,硬是让程序能够根据给定的字符串类名来创建相应的对象,哎,为此折腾了几天!////////////////////////reflect.h文件#ifndef REFLECT_H#define REFLECT_Hclass ClassDef;class __ClassDefiner;原创 2009-03-31 01:07:00 · 4113 阅读 · 0 评论 -
在你的C++程序里实现委托
[说明] 本文不仅介绍了C++语言应用非常好的一种方法(我甚至觉得应该将它归结为一种设计模式),而且也是对C#语言中委托特性底层实现的一个很好的说明。 阅读本文,你应当对委托的概念有所了解;在讨论委托是实现时,你应当对标准模板库(STL)中的list容器以及迭代器(iterator)有所了解。在这篇文章中,暂不讨论类成员函数。 1.C#原创 2009-04-01 20:54:00 · 1295 阅读 · 0 评论 -
不用ID实现一个事件通过多个观察者
观察者模式在symbian里用得很多,都是用来回调的。很多情况下一个事件发生后,需要通知多个观察者,比如timer触发后,要对所有的观察者通知,这个怎么实现?方法当然很简单,把M类写成如下形式就可以了:MTimerNotify {void Notify() = 0;TInt& ID() = 0;};这样,每个观察者对应一个ID,实现通知就很简单了。但是有没有方法实现M类里只有回调没有ID函数呢。答原创 2009-04-13 20:21:00 · 881 阅读 · 0 评论 -
一篇关于虚函数的博客
http://blog.csdn.net/haoel/archive/2007/12/18/1948051.aspx原创 2009-03-30 20:20:00 · 536 阅读 · 0 评论 -
面向接口编程详解(二)——编程实例
通过上一篇文章的讨论,我想各位朋友对“面接接口编程”有了一个大致的了解。那么在这一篇里,我们用一个例子,让各位对这个重要的编程思想有个直观的印象。为充分考虑到初学者,所以这个例子非常简单,望各位高手见谅。问题的提出 定义:现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。 上下文(环境):已知要实现U盘、原创 2009-03-27 21:19:00 · 707 阅读 · 0 评论 -
一个软件设计的全过程(基于UML)
前段时间把一个界面框架完成了,今天基于这个框架开发一个小模块,在这里把这个模块设计的全过程记录下来,希望大家讨论并指正。一、起因公司交给我一个任务,为测试员写一个手机模拟界面,以方便她们的手机短信测试。过去她们都是用MC4J直接调用公司服务器的MBean服务来模拟进行测试,以验证我们整个系统平台。这种测试主要是检查收发短信是否正常,而我的要做的工作就是,让她们在测试的时候更方便更直观原创 2009-03-27 20:25:00 · 714 阅读 · 0 评论 -
真正理解面向接口编程
接口,就是对接的端口,模块与模块之间约定建立的交通路线。 面向对象设计里有一点大家已基本形成共识,就是面向接口编程,我想大多数人对这个是没有什么觉得需要怀疑的。问题是在实际的项目开发中我们是怎么体现的呢? 难道就是每一个实现都提供一个接口就了事了?反过来说,你有时候有没有觉得接口是多余的事? 又或者,你仅仅是觉得现在类似spring这样的框架已习惯用接口这种方式而心存当然。 设计模原创 2009-03-27 19:48:00 · 564 阅读 · 0 评论 -
依赖,关联,聚合,组合
1.实例化(依赖) A将B作为局部变量进行使用. 程序1 void A::foo() { B b; b.SomeMethod(); } 2.关联 A与B存在一定的关系. 这里只考虑单向导航. 关联在代码中有多种表现形式. 第一种, 作为参数: 程序2 void A::foo(B& b) // (B* b) or (B b) { b.SomeMethod(); } 第二种,原创 2009-02-08 20:45:00 · 776 阅读 · 0 评论 -
Template Method模式
在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。Template Method提供了这种情况的一个实现框架。 Template Method模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。 Strate原创 2009-02-08 13:38:00 · 5768 阅读 · 0 评论 -
你还在用if else吗?
你还在用if else吗?板桥里人 http://www.jdon.com 2006/1/11(转载请保留) 面向过程设计和面向对象设计的主要区别是:是否在业务逻辑层使用冗长的if else判断。如果你还在大量使用if else,当然,界面表现层除外,即使你使用Java/C#这样完全面向对象的语言,也只能说明你的思维停留在传统的面向过程原创 2009-02-08 11:00:00 · 828 阅读 · 0 评论 -
为数据库升级
判断数据库是否为最新数据库时候,可以通过判断是否存在该字段,第二就是判断是否字段个数比最新的要少,但是当我们要为新的数据库修改字段名字的时候此时第二种方法就不适用了。原创 2009-01-18 20:00:00 · 574 阅读 · 0 评论 -
关于指针,字符串,数据库文本默认值
指针的默认值是NULL 而不是0字符串的默认值是/0而不是0数据库文本的默认值是" 而不是NULL或者0也不是/0原创 2009-01-18 18:22:00 · 858 阅读 · 0 评论 -
查找汉字的拼音
Author: lixiaosanDate: 05/26/2006/********************************************************************************************/* Syntax/* GetFirstLetter(CString strName, CString& strFirstLette原创 2009-01-18 10:23:00 · 1099 阅读 · 0 评论 -
linux 的cp命令实现
最近苦读《Unix系统编程》便写了一些实例,逐步增加自己Unix程序设计的能力。首先来实现一个Unix下常用命令:cp先看代码: #include #include #include #define BUFSIZE 512#define PERM 0755/* copy file function */int copyfile(const char *原创 2009-01-18 20:57:00 · 1343 阅读 · 0 评论 -
如何获取数据库字段名字
我在数据库脚本编辑器中select * from TableName where 1 可以看到能查询得到所有字段名子,但是当使用一些api操作时候,发现并不能获取的到,此时得到的数据是0行0列。为此通过这种方式不是一个办法我用select * from TableName 此时数据的第一行就是字段了原创 2009-01-18 19:56:00 · 1361 阅读 · 1 评论