<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    邋遢居

    我的Java天堂

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      61 Posts :: 2 Stories :: 90 Comments :: 0 Trackbacks

    #

         摘要: OOD實例閱讀筆記(二) Use case 圖包括的內容 Use case圖是用于需求分析的工具。他和實現技術沒有任何關聯。他的目的寫出特定情況下的需求。 首先就是要有一定的場景。場景包括特定的環境(case 發生的條件),參與的人(action)和系統所做的響應。 一般情況下回采用黑箱的use case(blak – box use case)。黑箱的us...  閱讀全文
    posted @ 2006-01-10 19:11 Jet Geng 閱讀(1124) | 評論 (0)編輯 收藏

    OOD實例閱讀筆記

    說明:我閱讀的這個例子是密爾沃基工程學校(Milwaukee School of Engineering)的學生于2000做的課程(CS400 – Senior Design設計。看上去很不錯。設計報告可以通過下面的地址可以獲得。http://www.uml.org.cn/appCase/pdf/resource-management-software-design.pdf

    1.         設計步驟

    1.1.        確定系統為用戶提供的所有服務。并建立Use cases

    1.2.        建立概念模型。確定主要的類以及他們的屬性。主要類來源主要有兩個:

    l         Use Cases中的名詞。英文的原話為:

    by looking at the nouns in the use cases, it was possible to pick out a number of classes for possible implementation.

    l         從用戶提供的信息中提取類的信息。英文的原文為:

    by going back to the proposal and examining other information provided by the client, additional classes and the data to be stored in these classes were obtained.

     

    1.3.        畫出概要的sequence圖。用于描述類之間的互動關系。Sequence圖是和Use Case圖一一對應的。用Sequence來描述Use Case的具體實現。  

    1.4.        建立類圖。類圖要包括系統中所有的類,以及各個類之間的關系。

    在于上面的步驟進行的過程中。文檔的起草需要同步進行。

    2.         Use case的建立

    Use case只是單純的描述domain處理。他描述的是系統和用戶的交互。為確定類,以及類的方法屬性做準備。

           建立Use case 的步驟用例建模(Use Case Modeling)--捕獲用戶需求se_case.html 一文有了很詳細介紹。我就不多說了(主要原因是沒有人家說的好)。


    posted @ 2006-01-08 10:07 Jet Geng 閱讀(1475) | 評論 (1)編輯 收藏

    這個周末去了一趟上海。

    最有感觸的就是上海新開通的軌道交通4號線。我乘坐的區間是臨平路~火車站。在這個短短的幾站路的過程中。我看到了地鐵(地下),清軌(空中),鐵路(地面上)這三種方式。從臨平路到寶山路是采用的新建的地下軌道。當到了寶山路這一段是就充分利用3號線已有的資源。這就是我看到的清軌了。進了火車站后又直接利用火車的軌道。完成著一段路程。真的可算做到充分利用現有資源。

    其實在我們現在的軟件開發的過程中。完全是可以借鑒這個觀點的(其實很多地方已經這么干了)。

    但是在利用現有資源的前提是要了解現有資源。評估他帶來的好處。
    如果能夠解決評估現有資源和采用現有資源的總代價和采用傳統方式的代價的比較。那就比較爽了。現在我對這個一點頭緒都沒有。
    歡迎你的任何意見。謝謝了先。


    line4.gif
    posted @ 2006-01-03 16:07 Jet Geng 閱讀(634) | 評論 (1)編輯 收藏

    Hibernate Tool 使用說明

    使用環境:

    Eclipse 3.2M3 (http://www.eclipse.org)

    HibernateTools-3.1.0.beta2(http://www.hibernate.org/255.html)

    插件的安裝就不用多說了吧。

    1、  創建cfg文件。

    Ctrl + N 帶出如下窗體。
    New.gif

    選中Hibernate Configuration File(cfg.xml)項。并Next下去。

    選擇配置文件的路徑。

    Next后就可以看到具體的配置窗體。

    newcfg.gif

    在這個界面中你可以配置你的SessionFactory的一些屬性。這個就不用多說了吧。不過有一點還是要多說一下的。就是你可以選擇同時創建一個Console。如果你不選中的話,cfg文件就創建完成了。

    創建Hibernate Console Configuration。其他應用的基礎。當然以cfg文件為基礎的。可以通過Ctrl + N 帶出如下窗體中選擇Hibernate Console Configuration帶出創建的界面。
    new console.gif
    最初的時候Mapping file可以不選。只要填上Configuration file(就是我們剛才創建的那個J)。另外需要在Classpath中加入你jdbc driver。這樣的話你就可以按Finish了。
    產生代碼和Map文件。
    gencode.gif
    點擊Hibernate Code Generation……后會進入如下的界面
    createcode.gif
    點擊New,右邊會出現如下界面
    gencodemain.gif

    在這個tab頁里你可以設置對于那個Console來產生代碼。以及代碼輸出目錄。如果你想通過reverse來確定產生那些代碼,那你就勾上reverse engineer from jdbc connection吧。

    另外插件還允許你使用自己的代碼產生模板(模板引擎是使用的apachevelocity

    gencodeconfig.gif

    這里你可以設置你需要產生的內容。具體的我就不羅嗦了。

    這些都設好以后你就可以通過 Run button來產生代碼了。

    3.         使用Console

    我們現在可以把剛才生成的java classmapping文件加到console中來了。

    打開Hibernate console透視圖。
    consolepresi.gif

    在這里你可以執行Hql.查看查詢結果。查看對象屬性,等等。

    我們現在就先看一下執行hql.
    executehql.gif
    這樣就會打開hql的編輯器。
    hqleditor.bmp

    編輯其中提供了三個比較好用的功能,Content Assist,Content Tip,Format Hql.具體的有哪些功能可以自己看看。

    在執行前是否想看一下最終的sql是什么樣的,那就看看好了。通過Hibernate Dynamic Query Translator可以辦到。
    hibernatedynamicquerytranslator.gif

    還有我的hql中有參數,如何對這些參數賦值呢。

    那就通過Query Parameters視圖吧。這個特別對于需要多次執行的hql是不是很方便。(是我個人比較喜歡的一個功能)。queryparameters.gif

    所了這么多,到底如何執行啊,如何看結果啊。

    看看這個就好了。run.gif
    至于結果你可以通過Hibernate Query Result視圖來查看。如果配合上屬性視圖那你可以看得更清楚。
    queryresult.gif
    最后還送一個視圖。
    model.gif


    posted @ 2005-12-29 17:17 Jet Geng 閱讀(18507) | 評論 (19)編輯 收藏

    昨天把spring文擋中的MVC-step-by-step看了一遍。感覺很爽。以前沒有在web項目中使用spring的經驗。通過昨天的學習,感覺挺方便的。想好好的看一下。
    posted @ 2005-12-27 12:19 Jet Geng 閱讀(915) | 評論 (1)編輯 收藏

    EMF不光為我們生成了模型類的代碼。還為我們提供了一個默認的模型編輯器。要看到這個模型編輯器我們只需要運行一下就可以看到了(用Eclipse Application的方式)。

    他默認的編輯器如下圖所示viewer.gif

    共有三個部:

    1.         編輯器的主體。包括六種呈現方式。

    a)         Selection.

    b)        Parent.

    c)        List.

    d)        Tree

    e)         Table

    f)         Tree With Columns.

    2.         Outline部分。

    Properties,會根據選擇不同的對象而改變顯示的內容。關于Jface部分的工作模式我在《Table View 的合作類的模式》一文中有提到,不過需要說明的是,在Jface中的Viewer他們的ContentProvider可能不一樣的。

    要完成這部分的功能emf的產生代碼中分別放到了兩個插件里實現了他們分別是editeditor

    Edit提供了Item Provider,他存在的意義就在于把邏輯對象和UI分割開。而Editor通過使用edit提供的Provider實現了一個編輯器的UICommand部分,他是正真的用戶界面部分。

    下面我們就先來看看edit中的類。

    好了,首先edit中使用的是adapt模型。所以edit中的插件對象會實現所有的viewer,Properties所需要的接口。

    Emf為我們實現通用的接口。所以這絕對是一個學習的好機會。

    廢話不多說了,來看代碼把。

    首先看聲明:

    public class FamilyItemProvider
        
    extends ItemProviderAdapter
        
    implements    
            IEditingDomainItemProvider,    
            IStructuredItemContentProvider,    
            ITreeItemContentProvider,    
            IItemLabelProvider,    
            IItemPropertySource {
    他的繼承關系可以用下圖來表示:
    providerh.gif

    他們之間的職能以及實現的接口可用下圖來描述:

    itemprivdelayer.gif
    AdapterImpl是為了實現Adapter模式而設定.

    ItemProviderAdapter完成一些基本功能。下面就分別從不同的接口來說明

    1.         ResourceLocator:該接口是用來進行資源定位的。

    2.         IDisposable emf框架提供的一種析構接口。

    3.         IChangeNotifier 為"Notification and Adapters"模式提供必需的方法。

    CreateChildCommand.Helper

    最下面的EMF根據我們的模型產生的Provider的了。他實現了5個接口。

     

    1.         IEditingDomainItemProvider

    這部分我還清楚,懷疑和command有關。

    2.         IStructuredItemContentProvider

    該接口為TableViewer,ListViewer,TreeViewer提供服務。

    This is the interface needed to populate  the top level items in a TreeViewer,  the items of a ListViewer,  or the rows of a TableViewer.

    3.         ITreeItemContentProvider

    This is the interface needed to populate subtrees in a TreeViewer

    4.         IItemLabelProvider

    This is the interface implemented to provide a label text and even a label icon for an item;

    it receives delegated calls from ILabelProvider.

    5.         IItemPropertySource

             This is the interface is needed to populate property sheet itemsit is the same as IpropertySourceexcept that the object is          passed as the first parameter for each method.

    這一篇還只是edit部分剛開一個頭。

    下一期會介紹一下他的command部分。

    posted @ 2005-12-25 13:36 Jet Geng 閱讀(1741) | 評論 (0)編輯 收藏

    又是周末。在過去的一周里一直在和wtp較勁.不過還好在周末前找到了答案.算是一點安慰吧.
    這個周末還是西方的圣誕節.在這個圣誕節里打算接著寫EMF 生成的Model Code閱讀筆記(一) 系列.這一期會把精力放在editor上.
    并為下周的uml分享做點準備.
    如果可能的話會給遠方的她打個電話...



    posted @ 2005-12-23 18:34 Jet Geng 閱讀(505) | 評論 (0)編輯 收藏

    在八進制的中講述了從模型到應用程序的生成過程。我通過類似的方法生成了一個應用程序。

    代碼生成后,我就想看看EMF為我生成了什么樣的代碼。我如果需要修改的話該如何修改。

    我的“Hellow world”是采用的“Using EMF”文中的模型。
    familytree.JPG
    根據這個模型建立了一個EMF Model
    family model.gif
    根據這個模型生成model class的結構如下圖所示:
    class code.gif

    從圖中我們可以看到有三個包:

    他們分別是:family,family.implfamily.util

    familyfamily.impl包之間的差別就是一個是Interface,另外一個是這些Interface的實現。

    我們先來看看我們模型中出現過的類:

    Family,FamilyTree,Female,Male以及Individual

    由于我是采用Annotated Java的方式生成的模型。所以在family包中的代碼并沒有太多的變化。
    /**
         * Return the father
         * 
    @return the father
         * @model
         
    */
        Male getFather();
        
        
    /**
         * Sets the value of the '{
    @link com.jet.swt.emf.family.Family#getFather <em>Father</em>}' reference.
         * <!-- begin-user-doc -->
         * <!-- end-user-doc -->
         * 
    @param value the new value of the '<em>Father</em>' reference.
         * 
    @see #getFather()
         * @generated
         
    */
        
    void setFather(Male value);

    他只是為我提供了Set方法。接口的繼承也沒有做修改。但是他對應的實現類就有了很多變化。

    首先從類的申明來看:

    public class FamilyImpl extends EDataObjectImpl implements Family {
    我們可以看到我們的FamilyImpl是從EdataObjectImpl類繼承而來。處于好奇我有在Hiberarchy中打開他的繼承關系看了一下。hiberarchy.gif

    這里有一張圖可以清晰的說明這個繼承關系的職能。

    hiberachyfunction.gif
    我例子中的Business Layer是FamilyImpl類。

    這樣我們的就可以不寫一行代碼就可以使我們的對象具有Notification/Common的功能(關于NotificationCommon的功能到底是怎樣的,我會在后續的學習筆記中記下來。呵呵,是不是很爽啊)。另外在《Eclipse Modeling Framework: A Developer's Guide》一書的第二章也有提到這部分的內容,不過由于他講解的EMF的版本比較老和我現在使用的版本有點出入,不過基本的功能還是講到了。

    好了,看完申明我們就來繼續往下看吧。

    Family下面有三個屬性,father,motherchildren

    EMF給我們生成的對應的代碼為:

    protected Male father = null;

        
    /**
         * The cached value of the '{
    @link #getMother() <em>Mother</em>}' reference.
         * <!-- begin-user-doc -->
         * <!-- end-user-doc -->
         * 
    @see #getMother()
         * @generated
         * @ordered
         
    */
        
    protected Female mother = null;

        
    /**
         * The cached value of the '{
    @link #getChildren() <em>Children</em>}' containment reference list.
         * <!-- begin-user-doc -->
         * <!-- end-user-doc -->
         * 
    @see #getChildren()
         * @generated
         * @ordered
         
    */
        
    protected EList children = null;

    以及一些getset方法。

    對于set方法中除了基本的賦值以外還加上了向所有對這次變動感興趣觀察者發送一個變更消息:

    public void setFather(Male newFather) {
            Male oldFather 
    = father;
            father 
    = newFather;
            
    if (eNotificationRequired())
                eNotify(
    new ENotificationImpl(this, Notification.SET, FamilyPackage.FAMILY__FATHER, oldFather, father));
        }

    對于get方法要分基本類型還是對象這兩種類型來處理。

    如果是基本類型,直接返回就好了。

    如:

    public String getName() {
            
    return name;
        }
    如果是對象的話就有點麻煩了。先要判斷該對象是否使用了代理(這一部分我還不是太清楚)如果是的話就獲得他的代理對象,并判斷獲得代理對象是否和當前對象是否相等,如果不等就發送一個變更消息。最終返回對象(肯能是一個代理對象)。
    public Male getFather() {
            
    if (father != null && ((EObject)father).eIsProxy()) {
                Male oldFather 
    = father;
                father 
    = (Male)eResolveProxy((InternalEObject)father);
                
    if (father != oldFather) {
                    
    if (eNotificationRequired())
                        eNotify(
    new ENotificationImpl(this, Notification.RESOLVE, FamilyPackage.FAMILY__FATHER, oldFather, father));
                }
            }
            
    return father;
        }

    還有其他類將在下一篇記下。

    1、  Using EMF,  Author :Catherine Griffin

    2、   EMF介紹系列(二、從模型生成應用程序) Author:八進制

    3、  Mastering Eclipse Modeling FrameworkAuthor:Vladimir Bacvanski(Vladimir@inferdata.com) Petter Graff(petter@inferdata.com)

    Eclipse Modeling Framework: A Developer's Guide Author:Frank Budinsky, David Steinberg, Ed Merks, Raymond Ellersick, Timothy J. Grose
    posted @ 2005-12-18 13:12 Jet Geng 閱讀(3962) | 評論 (4)編輯 收藏

    在中國Eclipse社區中,看到了很多關于EMF的帖子。會來寫了一個“Hellow world”樣的東西果然很爽。想近一步學習一下。并想把學習的過程通過這個Blog記錄下來。
    在這里先感謝一下八進制。從他的blog中學到不少東西。

    posted @ 2005-12-18 10:41 Jet Geng 閱讀(709) | 評論 (0)編輯 收藏

    由于開發項目要求jdk配置比較低,所以Eclipse中的WorkSpace default jre設得比較低。如果自己想測試一下高版本得jdk內容得話,就需要切換jdk得配置。

    3.2中我發現了一個很有方便功能,用來完成這個功能。
    選中項目中的jre,通過右鍵帶回菜單:

    jrealert1.gif
    選中Configure后就會有如下的對話框:

    jrealert2.gif

    通過Alernate jar就可以達到為該項目設定jre了。

    這樣是不是很爽啊。呵呵。


    posted @ 2005-12-17 10:23 Jet Geng 閱讀(2129) | 評論 (6)編輯 收藏

    僅列出標題
    共7頁: 上一頁 1 2 3 4 5 6 7 下一頁 
    主站蜘蛛池模板: 亚洲精品福利你懂| 成年网在线观看免费观看网址 | 看一级毛片免费观看视频| 亚洲国产精品综合久久一线 | 97在线视频免费播放| 久久久久久亚洲精品影院| 国产精品亚洲美女久久久| 免费观看美女用震蛋喷水的视频| 欧美激情综合亚洲一二区| 亚洲大尺度无码无码专区| 韩国日本好看电影免费看| 伊人免费在线观看高清版| 亚洲综合色婷婷在线观看| 国产gv天堂亚洲国产gv刚刚碰 | 国产亚洲精品激情都市| 成人免费黄色网址| 一个人免费观看视频在线中文| 91在线亚洲精品专区| 亚洲?V无码成人精品区日韩| 18女人腿打开无遮掩免费| 男人免费视频一区二区在线观看 | 亚洲五月综合缴情在线观看| 久久不见久久见免费影院| 十八禁视频在线观看免费无码无遮挡骂过 | 无码一区二区三区免费| 国产成人精品亚洲| 亚洲1234区乱码| 亚洲成人在线电影| 亚洲熟妇无码乱子AV电影 | 亚洲国产成人精品无码区在线秒播 | a视频在线免费观看| 美女被羞羞网站免费下载| 亚洲妇女水蜜桃av网网站| 亚洲欧洲∨国产一区二区三区| 国产男女性潮高清免费网站| 天天影视色香欲综合免费| 国产成人AV免费观看| 一级女性全黄生活片免费看| 亚洲国产精品美女久久久久| 亚洲国产精品yw在线观看| 久久久久久亚洲Av无码精品专口|