当前位置:首页 > 全部子站 > IT > 思科认证

没有RailsJava程序员如何使用Ruby[1]

来源:长理培训发布时间:2017-12-22 10:17:39

 百度广告

  一、 引言

  Ruby on Rails仅是使Ruby成为伟大的一个因素,这就象EJB仅是Java企业平台的一个组成部分一样。将带你一同讨论,作为一名Java开发者,仅利用Ruby自身所能够实现的功能。

  首先让我先澄清一些问题。第一,这不是一篇关于Ruby on Rails的文章。如果你想了解Rails,那么每周都出版新的文章和博客来颂扬这种令人激动的框架及其各种特征。第二,并非在预告,在目前出现一些更好的语言、工具和框架(如Ruby on Rails)时,Java平台即将崩溃。因此,与最近有关Ruby的主题并无多大关系。

  别误会我-在我看来,Rails还是相当绝妙的!它是如此惊人地有力以致明显地影响了Web开发的许多方面。我的唯一看法是,有更多的关于Ruby而不是Rails的东西,特别是当从一个Java开发者的角度来看问题时。

  Rails的特长是网站开发;然而,我发现自己在构建网站时并没有经常使用这种技术。我所构建的大多数网站主要使用了Struts,Tapestry或其它一些技术。当我利用Ruby时,我仅把它作为开发实践的一部分来使用。因此,在中我将讨论,如果你主要是一位Java开发者,那么如何用Ruby来进行开发。

  二、 初步感觉

  Ruby的语法与Java语言存在明显区别。首先,Ruby没有括号或分号,并且它的类型完全是可选的。一些人可能说Ruby的语法相当精炼,并且它的目的之一就是用短命令编写简明的代码。

  通过比较实现一个功能相对完善的类你就可以体会到这一点,在中我们先用Java语言定义它,然后再用Ruby来实现。中我先使用两个类:Word和Definition。在图1的简单类图中,你可以看到两个类共享一些关系:

  ·一个Word拥有一个同义词(也称作Word实例)集合。

  ·一个Word还可以拥有一个Definition集合。

  ·一个Definition有一个到Word的聚合关联(aggregation association)。

  三、 在Java语言中的类定义

  在列表1中,我用Java语言定义了Word类。请注意,我必须实现我的集合中Definition和同义词的关系确认。这是必要的,因为在这个示例中,Definition的创建不需要用一个Word关系来初始化,而Word也可以在不使用Definition初始化的情况下定义。

  列表1.用Java语言实现的一个类Word

 

package com.vanward.dictionary;
import java.util.Collection;
public class Word { 
private String partOfSpeech;
private Collection synonyms;
this.spelling = spelling;
this.definitions = new ArrayList();

this(spelling, partOfSpeech);
for(Iterator iter = definitions.iterator(); iter.hasNext();){
}

public Word(String spelling, String partOfSpeech, Collection definitions, Collection synonyms) {
if(synonyms != null){
}
private void validateRelationship(Definition def){
def.setWord(this);
}
return definitions;
public void addDefinition(Definition definition) {
this.definitions.add(definition);
public String getPartOfSpeech() {
}
this.partOfSpeech = partOfSpeech;
public String getSpelling() {
}
this.spelling = spelling;
public Collection getSynonyms() {
}
this.synonyms.add(synonym);
}
||| 
  列表2.用Java语言实现的一个Definition类

 

package com.vanward.dictionary;
public class Definition {
private String definition;
public Definition(String definition){
this.exampleSentences = new ArrayList();
public Definition(String definition, Word word) { 
this.word = word;
public Definition(String definition, Word word,Collection exampleSentences) {
if(exampleSentences != null){
}
public String getDefinition() {
}
this.definition = definition;
public Collection getExampleSentences() {
}
this.exampleSentences.add(exampleSentence);
public Word getWord() {
}
this.word = word;
}

  在列表3中,你可以看见以Ruby定义的两个相同的类;然而,列表3看上去与上面相当不同,对不对?

  列表3.用Ruby定义的两个与前面功能相同的类

 

module Dictionary
attr_reader :spelling, :part_of_speech, :definitions, :synonyms
def initialize(spelling, part_of_speech, definitions = , synonyms = )
@part_of_speech = part_of_speech 
@definitions = definitions 
end

def add_definition(definition)
@definitions

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)