﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-AngelLee2009</title><link>http://www.cppblog.com/AngelLee2009/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 10 Apr 2026 04:10:34 GMT</lastBuildDate><pubDate>Fri, 10 Apr 2026 04:10:34 GMT</pubDate><ttl>60</ttl><item><title>UML解析Hello World</title><link>http://www.cppblog.com/AngelLee2009/archive/2009/08/18/93750.html</link><dc:creator>AngelLee2009</dc:creator><author>AngelLee2009</author><pubDate>Tue, 18 Aug 2009 15:54:00 GMT</pubDate><guid>http://www.cppblog.com/AngelLee2009/archive/2009/08/18/93750.html</guid><wfw:comment>http://www.cppblog.com/AngelLee2009/comments/93750.html</wfw:comment><comments>http://www.cppblog.com/AngelLee2009/archive/2009/08/18/93750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AngelLee2009/comments/commentRss/93750.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AngelLee2009/services/trackbacks/93750.html</trackback:ping><description><![CDATA[<p>得在学习C语言的时候，教科书上的第一个程序就是叫Hello world，一个在屏幕上简单地打印出“Hello world!”语句的例子。在系统的学习UML语言之前我们来看一个简单的例子，让大家有一个系统的认识。<br>在java中一个在浏览器中显示“Hello World!”的Applet代码如下：<br>import java.awt.Graphics;<br>class HelloWorld extends java.applet.Applet{<br>public void paint( Graphics g ){<br>g.drawString("Hello World!", 10,10 );<br>}<br>}<br>代码的第一行：<br>import java.awt.Graphics;<br>使得程序可以使用Graphics类。前缀 java.awt指出了类Graphics所在的包。<br>第二行代码：<br>class HelloWorld extends java.applet.Applet{<br>从Applet类派生出新的类HelloWorld，Applet类在java.applet包中。<br>接下来的三行代码：<br>public void paint( Graphics g ){<br>g.drawString("Hello World!", 10,10 );<br>}<br>声明了类HelloWorld的方法paint，在他的实现中调用了另一个方法drawString来输出“Hello World!”。<br>我们可以很直接地为这个程序用UML建立模型。如图2-1。<br><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://www.uml.org.cn/OObject/images/umlcon14.gif" border="0"></p> <p align="center">图2-1<br>图2-1表达了最基本的HelloWorld模型，但它还有很多东西没有表示出来。在我们的程序中Applet类和Graphics类的使用是不相同的。Applet用作HelloWorld类的父类，而Graphics类用在方法paint的实现中。在UML模型中可以将这些关系表示为图2-2:<br></p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://www.uml.org.cn/OObject/images/umlcon15.gif" border="0"> <p align="center">图2-2<br>在图2-2的类关系图中，我们用简单的矩行图标表示类Applet和Graphics类，没有将它们的属性和方法显露出来是为了简化。图中的空心箭头表示HelloWorld类是Applet类的子类，代表一般化。HelloWorld和Graphics之间的虚线箭头表示依赖关系，表示HelloWorld类使用了Graphics类。<br>到这里或许你认为已结束了，其实不然，如果认真研究java库中的Applet类和Graphics类会发现他们都是一个庞大的继承关系中的一部分。追踪Applet的实现可以得到另外一个类图，如图2-3所示：<br></p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://www.uml.org.cn/OObject/images/umlcon16.gif" border="0"> <p align="center">图2-3<br><img src="http://www.uml.org.cn/OObject/images/umlcon17.gif" border="0"></p><img src ="http://www.cppblog.com/AngelLee2009/aggbug/93750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AngelLee2009/" target="_blank">AngelLee2009</a> 2009-08-18 23:54 <a href="http://www.cppblog.com/AngelLee2009/archive/2009/08/18/93750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UML中常用的类图元素介绍</title><link>http://www.cppblog.com/AngelLee2009/archive/2009/08/17/93659.html</link><dc:creator>AngelLee2009</dc:creator><author>AngelLee2009</author><pubDate>Mon, 17 Aug 2009 15:18:00 GMT</pubDate><guid>http://www.cppblog.com/AngelLee2009/archive/2009/08/17/93659.html</guid><wfw:comment>http://www.cppblog.com/AngelLee2009/comments/93659.html</wfw:comment><comments>http://www.cppblog.com/AngelLee2009/archive/2009/08/17/93659.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AngelLee2009/comments/commentRss/93659.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AngelLee2009/services/trackbacks/93659.html</trackback:ping><description><![CDATA[<p><strong>类（Class）</strong></p> <p>类（<strong>图A</strong>）是对象的蓝图，其中包含3个组成部分。第一个是Java中定义的类名。第二个是属性（attributes）。第三个是该类提供的方法。 <br>属性和操作之前可附加一个可见性修饰符。加号（+）表示具有公共可见性。减号（-）表示私有可见性。#号表示受保护的可见性。省略这些修饰符表示具有 package（包）级别的可见性。如果属性或操作具有下划线，表明它是静态的。在操作中，可同时列出它接受的参数，以及返回类型，如图A的“Java” 区域所示。 </p> <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" height="153" src="http://tech.ccidnet.com/col/attachment/2007/7/1127935.gif" width="543"></p> <p align="center">图A</p> <p><strong>包（Package）</strong></p> <p>包（图<strong>B</strong>）是一种常规用途的组合机制。UML中的一个包直接对应于Java中的一个包。在Java中，一个包可能含有其他包、类或者同时含有这两者。进行建模时，你通常拥有逻辑性的包，它主要用于对你的模型进行组织。你还会拥有物理性的包，它直接转换成系统中的Java包。每个包的名称对这个包进行了惟一性的标识。</p> <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://tech.ccidnet.com/col/attachment/2007/7/1127937.gif"></p> <p align="center">图B <br></p> <p><strong>接口（Interface）</strong></p> <p>接口（<strong>图C</strong>）是一系列操作的集合，它指定了一个类所提供的服务。它直接对应于Java中的一个接口类型。接口既可用图C的那个图标来表示，也可由附加了&lt;&gt;的一个标准类来表示。通常，根据接口在类图上的样子，就能知道与其他类的关系。</p> <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://tech.ccidnet.com/col/attachment/2007/7/1127939.gif"></p> <p align="center">图C <br></p> <p><strong>关系</strong></p> <p>后面的例子将针对某个具体目的来独立地展示各种关系。虽然语法无误，但这些例子可进一步精炼，在它们的有效范围内包括更多的语义。</p> <p><strong>依赖（Dependency）</strong></p> <p>实体之间一个“使用”关系暗示一个实体的规范发生变化后，可能影响依赖于它的其他实例（<strong>图D</strong>）。更具体地说，它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量，对通过方法调用而获得的一个对象的引用（如下例所示），或者对一个类的静态方法的引用（同时不存在那个类的一个实例）。也可利用“依赖”来表示包和包之间的关系。由于包中含有类，所以你可根据那些包中的各个类之间的关系，表示出包和包的关系。</p> <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://tech.ccidnet.com/col/attachment/2007/7/1127941.gif"></p> <p align="center">图D <br></p> <p><strong>关联（Association）</strong></p> <p>实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的，它用于指定导航能力。如果没有箭头，暗示是一种双向的导航能力。在Java中，关联（<strong>图E</strong>）转换为一个实例作用域的变量，就像图E的“Java”区域所展示的代码那样。可为一个关联附加其他修饰符。多重性（Multiplicity）修饰符暗示着实例之间的关系。在示范代码中，Employee可以有0个或更多的TimeCard对象。但是，每个TimeCard只从属于单独一个 Employee。</p> <p><br><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://tech.ccidnet.com/col/attachment/2007/7/1127943.gif"></p> <p align="center">图E</p> <p><strong>聚合（Aggregation）</strong></p> <p>聚合（<strong>图F</strong>）是关联的一种形式，代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别，而关联暗示两个类在概念上位于相同的级别。聚合也转换成Java中的一个实例作用域变量。 <br>关联和聚合的区别纯粹是概念上的，而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之，只能是一种单向关系。</p> <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://tech.ccidnet.com/col/attachment/2007/7/1127945.gif"></p> <p align="center">图F <br></p> <p><strong>合成（Composition）</strong></p> <p>合成 （<strong>图G</strong>）是聚合的一种特殊形式，暗示“局部”在“整体”内部的生存期职责。合成也是非共享的。所以，虽然局部不一定要随整体的销毁而被销毁，但整体要么负责保持局部的存活状态，要么负责将其销毁。局部不可与其他整体共享。但是，整体可将所有权转交给另一个对象，后者随即将承担生存期职责。</p> <p>Employee和TimeCard的关系或许更适合表示成“合成”，而不是表示成“关联”。</p> <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://tech.ccidnet.com/col/attachment/2007/7/1127947.gif"></p> <p align="center">图G <br></p> <p><strong>泛化（Generalization）</strong></p> <p>泛化（<strong>图H</strong>）表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的UML元素。在Java中，用<em>extends</em>关键字来直接表示这种关系。</p> <p><br><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://tech.ccidnet.com/col/attachment/2007/7/1127949.gif"></p> <p align="center">图H</p> <p><strong>实现（Realization）</strong></p> <p>实例（<strong>图I</strong>）关系指定两个实体之间的一个合同。换言之，一个实体定义一个合同，而另一个实体保证履行该合同。对Java应用程序进行建模时，实现关系可直接用<em>implements</em>关键字来表示。</p> <p><br><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://tech.ccidnet.com/col/attachment/2007/7/1127951.gif"></p> <p align="center">图I</p> <p><strong>精确映射</strong></p> <p>如本文所述，UML类图上的元素能精确映射到Java编程语言。开发团队的成员可利用这种精确性来加强沟通，取得对系统结构化设计的共识。</p><img src ="http://www.cppblog.com/AngelLee2009/aggbug/93659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AngelLee2009/" target="_blank">AngelLee2009</a> 2009-08-17 23:18 <a href="http://www.cppblog.com/AngelLee2009/archive/2009/08/17/93659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么是模式，什么是框架</title><link>http://www.cppblog.com/AngelLee2009/archive/2009/08/16/93507.html</link><dc:creator>AngelLee2009</dc:creator><author>AngelLee2009</author><pubDate>Sun, 16 Aug 2009 11:08:00 GMT</pubDate><guid>http://www.cppblog.com/AngelLee2009/archive/2009/08/16/93507.html</guid><wfw:comment>http://www.cppblog.com/AngelLee2009/comments/93507.html</wfw:comment><comments>http://www.cppblog.com/AngelLee2009/archive/2009/08/16/93507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AngelLee2009/comments/commentRss/93507.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AngelLee2009/services/trackbacks/93507.html</trackback:ping><description><![CDATA[<p>1．什么是模式？  <p>模式，即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度，那就是模式。  <p>Alexander给出的经典定义是：每个模式都描述了一个在我们的环境中不断出现的问题，然后描述了该问题的解决方案的核心。通过这种方式，你可以无数次地使用那些已有的解决方案，无需在重复相同的工作。  <p>模式有不同的领域，建筑领域有建筑模式，软件设计领域也有设计模式。当一个领域逐渐成熟的时候，自然会出现很多模式。  <p>2.什么是框架？  <p>框架，即framework。其实就是某种应用的半成品，就是一组组件，供你选用完成你自己的系统。简单说就是使用别人搭好的舞台，你来做表演。而且，框架一般是成熟的，不断升级的软件。  <p>3．为什么要用模式？  <p>因为模式是一种指导，在一个良好的指导下，有助于你完成任务，有助于你作出一个优良的设计方案，达到事半功倍的效果。而且会得到解决问题的最佳办法。  <p>4.为什么要用框架？  <p>因为软件系统发展到今天已经很复杂了，特别是服务器端软件，设计到的知识，内容，问题太多。在某些方面使用别人成熟的框架，就相当于让别人帮你完成一些基础工作，你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟，稳健的，他可以处理系统很多细节问题，比如，事物处理，安全性，数据流控制等问题。还有框架一般都经过很多人使用，所以结构很好，所以扩展性也很好，而且它是不断升级的，你可以直接享受别人升级代码带来的好处。  <p>框架一般处在低层应用平台（如J2EE）和高层业务逻辑之间的中间层。  <p>5.软件为什么要分层？ 。  <p>为了实现“高内聚、低耦合”。把问题划分开来各个解决，易于控制，易于延展，易于分配资源…总之好处很多啦：）</p><img src ="http://www.cppblog.com/AngelLee2009/aggbug/93507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AngelLee2009/" target="_blank">AngelLee2009</a> 2009-08-16 19:08 <a href="http://www.cppblog.com/AngelLee2009/archive/2009/08/16/93507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>灵魂架构师论坛 正在崛起</title><link>http://www.cppblog.com/AngelLee2009/archive/2009/08/14/93384.html</link><dc:creator>AngelLee2009</dc:creator><author>AngelLee2009</author><pubDate>Fri, 14 Aug 2009 15:53:00 GMT</pubDate><guid>http://www.cppblog.com/AngelLee2009/archive/2009/08/14/93384.html</guid><wfw:comment>http://www.cppblog.com/AngelLee2009/comments/93384.html</wfw:comment><comments>http://www.cppblog.com/AngelLee2009/archive/2009/08/14/93384.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AngelLee2009/comments/commentRss/93384.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AngelLee2009/services/trackbacks/93384.html</trackback:ping><description><![CDATA[<p>灵魂架构师，是一个IT技术论坛，正在崛起，网址：<a href="http://www.bbssa.net/">http://www.bbssa.net/</a> 。</p> <p>具体含义为：BBS+SoulArchitect简写 <br>简单记忆方法： bbs(论坛) + sa（MSSQL数据库账号） <br>灵魂架构师总群：52233236(满) <br>灵魂架构师SEO群：28026778 <br>灵魂架构师PHP群：46297554 <br>灵魂架构师Oracle群：7405133 <br>灵魂架构师ASP群：57729153 <br>灵魂架构师ASPNET群：6368534(满) <br>灵魂架构师OFFICE群：22612834(满) <br>灵魂架构师MSSQL群：38697281 <br>灵魂架构师C#.NET群：4724162 <br>灵魂架构师之VC学习群：57881024(满) <br>灵魂架构师.net崛起1：38382341 <br>灵魂架构师.net崛起2：57881098 <br>灵魂架构师.net崛起3：57881040 <br>灵魂架构师AJAX群：18455991 <br>灵魂架构师JAVA群：19000156 <br>灵魂架构师JSP群：84065867 <br>灵魂架构师MVC群：47103438&nbsp; </p> <p>真诚希望各位IT爱好者前来，共同壮大灵魂架构师论坛，与灵魂架构师共同成长。</p><img src ="http://www.cppblog.com/AngelLee2009/aggbug/93384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AngelLee2009/" target="_blank">AngelLee2009</a> 2009-08-14 23:53 <a href="http://www.cppblog.com/AngelLee2009/archive/2009/08/14/93384.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RPG Maker XP</title><link>http://www.cppblog.com/AngelLee2009/archive/2009/08/14/93267.html</link><dc:creator>AngelLee2009</dc:creator><author>AngelLee2009</author><pubDate>Thu, 13 Aug 2009 17:19:00 GMT</pubDate><guid>http://www.cppblog.com/AngelLee2009/archive/2009/08/14/93267.html</guid><wfw:comment>http://www.cppblog.com/AngelLee2009/comments/93267.html</wfw:comment><comments>http://www.cppblog.com/AngelLee2009/archive/2009/08/14/93267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AngelLee2009/comments/commentRss/93267.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AngelLee2009/services/trackbacks/93267.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 说实话，我不会写游戏，学习写游戏是一个漫长的过程，在会写游戏之前，写个简单的游戏也许能满足我一小小的虚荣心。和大家介绍一下，RPG Maker XP是个不错的RPG游戏制作软件。虽然游戏不怎么样，但毕竟做的也是游戏，还是能够满足我小小的虚荣心。</p> <p>&nbsp;&nbsp;&nbsp; 在网上的视频教程有不少，大家可以搜索下。文字方面的教程，可以看下<a title="http://tieba.baidu.com/f?kz=243729827" href="http://tieba.baidu.com/f?kz=243729827">http://tieba.baidu.com/f?kz=243729827</a>，还有<a href="http://www.66rpg.com">http://www.66rpg.com</a>是RPG不错的网站。</p> <p>&nbsp;&nbsp;&nbsp; 好了，就写到这里了，希望大家能写出自己的小游戏。</p><img src ="http://www.cppblog.com/AngelLee2009/aggbug/93267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AngelLee2009/" target="_blank">AngelLee2009</a> 2009-08-14 01:19 <a href="http://www.cppblog.com/AngelLee2009/archive/2009/08/14/93267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>03系统下离线BLOG写作工具Windows Live Writer</title><link>http://www.cppblog.com/AngelLee2009/archive/2009/08/12/93104.html</link><dc:creator>AngelLee2009</dc:creator><author>AngelLee2009</author><pubDate>Wed, 12 Aug 2009 15:47:00 GMT</pubDate><guid>http://www.cppblog.com/AngelLee2009/archive/2009/08/12/93104.html</guid><wfw:comment>http://www.cppblog.com/AngelLee2009/comments/93104.html</wfw:comment><comments>http://www.cppblog.com/AngelLee2009/archive/2009/08/12/93104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AngelLee2009/comments/commentRss/93104.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AngelLee2009/services/trackbacks/93104.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 我的XP系统重装后，在装Visual studio2008时，数据库的安装总是出问题，我想还是用03系统吧。在装上03系统后，Visual studio 2008的安装挺好，没有任何问题，可是在装Windows Live Writer时就出现了问题。我Baidu了一下，发现只能装MSI，不能装EXE的。以前听朋友说在Windows server 2003下，有些软件不能用，现在真的遇到了。</p> <p>&nbsp;&nbsp;&nbsp; 总结：在Windows server 2003系统下，离线Blog写作工具Window Live Writer工具装MSI格式的。</p><img src ="http://www.cppblog.com/AngelLee2009/aggbug/93104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AngelLee2009/" target="_blank">AngelLee2009</a> 2009-08-12 23:47 <a href="http://www.cppblog.com/AngelLee2009/archive/2009/08/12/93104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>