用源码论述Eclipse学习体会

摘要:

java语言作为一门世界上普及最快的语言,发展如此之快必有其自身特定的优势。其特点是可移植性强,与平台无关;面向对象,与C++不同的是,java支持单继承和多接口的实现,没有c++中的指针,这也使得java变的更加安全稳定。本文结合了Java编程技术,Java设计模式以及UML建模技术,通过Java代码实现了一个简单的为用户提供西服套装和牛仔套装的服装厂系统,并从源代码出发总结了Eclipse编译器编程的特点,Java编程之于C、C++的优越处,以及结合Java设计模式后Java编程的高灵活性。

关键字:

Java编程 Eclipse Java设计模式 UML建模技术 服装厂系统

Abstract

Java language as one of the world’s fastest universal language, is growing so fast must have its own specific advantages, which is characterized by strong portability, and platform-independent. Object-oriented, and C + + The difference is that, java support single inheritance and multiple interfaces to achieve, there is no pointer in c + +, which also makes the java become more security and stability. Combined with the Java programming technology, Java design patterns and UML modeling technology, through the Java code ,This article implements a simple provides users with suits and denim garment factory system, and summarizes the characteristics of the Eclipse compiler programming from the source code, and the superior of Java programming over C and C + + , and the high flexibility when Java design patterns is mixed in Java programming.

Keywords:

Java programming Eclipse Java design patterns
UML modeling technology UML modeling technology

正文:

Eclipse简介

Eclipse是一种通用工具平台—普遍适用的开放式扩展IDE。它提供了功能丰富的开发环境,允许开发者高效地创建一些能够无缝集成到Eclipse平台中的工具。Eclipse有极为强大的集成开发环境,它集成了CVS、Junit和Ant,强大的代码重构功能傲视群雄。因为Eclipse的安装包集成了Java开发环境的插件JDT。所以Eclipse默认是一个和Jbuilder类似的Java开发工具。Eclipse抽件扩展机制是其最突出的特点和优势,它使Eclipse提升到了一个平台的高度。我们可以利用Eclispe的插件开发环境(PDE)来开发自己的Eclispe插件,随己所需地扩展Eclipse的功能。

JAVA简介

Java编程语言的风格十分接近C语言、C++语言。Java是一个纯粹的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的性能

Java设计模式简介

由于这个为用户提供西服套装服装厂(上衣+裤子)和牛仔套装(上衣+裤子)的服装厂系统,是建立在抽象工厂模式上的Java程序。下面简单介绍一下抽象工厂模式:

抽象工厂模式(别名:配套)

提供一个创建一系列(相互依赖)对象的接口,而无需指定它们具体的类。当系统准备为用户提供一系列相关的对象,又不想让用户代码和创建这些对象的类形成耦合时,就可以使用抽象工厂方法模式来设计系统。抽象工厂模式的关键是在一个抽象类或接口中定义若干个抽象方法,这些抽象方法分别返回某个类的实例,该抽象类或接口让其子类或实现该接口的类重写这些抽象方法,为用户提供一系列相关的对象。

模式的结构中包括四种角色:

抽象产品(Prodcut)
具体产品(ConcreteProduct)
抽象工厂(AbstractFactory)
具体工厂(ConcreteFactory)

其UML类图如下:

这里写图片描述

在学习过程中,我发现设计模式与Java程序开发有着密切的关系。通过运用各种设计模式来对Java程序的结构进行定义,再结合Eclipse平台,可以同时从结构和平台两方面提高Java程序的可移植性、健壮性和安全性。下面我将分别从这四个方面来介绍我的程序.
这里写图片描述

1.建立工程

首先建立一个Java工作空间Factory-product,再建立一个包PKG,将所有的java类都放在这个包内。如图:
这里写图片描述

包作为Eclipse平台的一大特色,有着其独特的作用。
包说得简单一点就是文件夹,可以把包看作是管理类文件的文件夹,使用原因是项目越来越大,文件和类越来越多。使用包的好处也很明显:
(1)当Java源文件多时,可以通过声明包的形式分类存放,这样有利于查找;
(2)当有Java源文件同名时,通过使用声明包的形式存放,这样也可以不免同名冲突。
同样,使用包的好处自然也有很多,如对于包a(package a;),如果包b在其中(package a.b;),那么语句”import a.*;”可以导入a包中的类,但无法导入a.b包中所包含的类。这样就能轻易地在多个程序间共享同一函数。

2. 建立抽象类

其实刚接触到抽象类的时候,我经常会想为什么要用抽象类,一般的类就能满足应用,而且现实中确实有些父类中的方法没有必要写,因为各个子类中的这个方法肯定会有不同,所以没有必要再父类里写。但是,抽象类其实有着其特殊的作用,举个例子:
“麻烦你,小王。帮我把那个东西拿过来好吗” 小王:“你要让我帮你拿那个水杯吗?”
在生活中,你肯定用过这个词--东西。 你要的是水杯类的对象。而东西是水杯的父类。通常东西类没有实例对象,但我们有时需要东西的引用指向它的子类实例。

这就是抽象类存在的意义。

抽象产品:

UpperClothes.java

package PKG;
public abstract class ClothesFactory {
     public abstract UpperClothes createUpperClothes(int chestSize,int height);
        public abstract Trousers createTrousers(int waistSize,int height);
}

Trouser.java

package PKG;
public abstract class Trousers {
    public abstract int getWaistSize();
       public abstract int getHeight();
       public abstract String getName(); 
}

抽象工厂
ClothesFactory.java

package PKG;
public abstract class ClothesFactory {
     public abstract UpperClothes createUpperClothes(int chestSize,int height);
        public abstract Trousers createTrousers(int waistSize,int height);
}

3.建立继承关系,即父类。

继承机制也是Java的一大特色,Java通过继承实现代码复用。
若类C继承类B,类B继承类A,则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。同时,继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系;通过增强一致性减少模块间的接口和界面,大大增加了程序的易维护性。   
  
具体产品:

WesternUpperClothes.java

package PKG;
public class WesternUpperClothes extends UpperClothes {
    
    
        private int chestSize;
        private int height;
        private String name;
        WesternUpperClothes(String name,int chestSize,int height){
            this.name=name;
            this.chestSize=chestSize;
            this.height=height;
        }
        public int getChestSize() {
                return chestSize;
        }

    public int getHeight() {
                return height;
    }

    public String getName() {
                return name;
    }

}

CowboyUpperClothes.java

package PKG;
public class CowboyUpperClothes extends UpperClothes {
    
    
    private int chestSize;
    private int height;
    private String name;
    CowboyUpperClothes(String name,int chestSize,int height){
        this.name=name;
        this.chestSize=chestSize;
        this.height=height;
    }
    public int getChestSize() {
                return chestSize;
    }

    public int getHeight() {
                return height;
    }

    public String getName() {
                return name;
    }
}

WesternTrouser.java

package PKG;
public class WesternTrousers extends Trousers {
    
    
    private int waistSize;
    private int height;
    private String name;
    WesternTrousers(String name,int waistSize,int height){
        this.name=name;
        this.waistSize=waistSize;
        this.height=height;
    }
    public int getWaistSize() {
                return waistSize;
    }

    public int getHeight() {
            return height;
    }

    public String getName() {
                return name;
    }
}

CowboyTrouser.java

package PKG;
public class CowboyTrousers extends Trousers {
    
    
    private int waistSize;
    private int height;
    private String name;
    CowboyTrousers(String name,int waistSize,int height){
        this.name=name;
        this.waistSize=waistSize;
        this.height=height;
    }
    public int getWaistSize() {
                return waistSize;
    }

    public int getHeight() {
                return height;
    }

    public String getName() {
                return name;
    }
}

具体工厂:
BeijingClothesFactory.java

package PKG;
public class BeijingClothesFactory extends ClothesFactory {
    
    

    public UpperClothes createUpperClothes(int chestSize, int height) {

        return new WesternUpperClothes("北京牌西服上衣",chestSize,height);
    }

    public Trousers createTrousers(int waistSize, int height) {
        return new WesternTrousers("北京牌西服裤子",waistSize,height);
    }

}

ShanghaiClothesFactory.java

package PKG;
public class ShanghaiClothesFactory extends ClothesFactory {
    
    

    public UpperClothes createUpperClothes(int chestSize, int height) {
        return new CowboyUpperClothes("上海牌牛仔上衣",chestSize,height);
    }

    public Trousers createTrousers(int waistSize, int height) {
        return new CowboyTrousers("上海牌牛仔裤",waistSize,height);
    }
}

4.编写主函数

应用:

Shop.java

package PKG;
public class Shop {
    UpperClothes cloth;
    Trousers trouser; 
    public void giveSuit(ClothesFactory factory,int chestSize,int waistSize,int height){
       cloth=factory.createUpperClothes(chestSize,height);
       trouser=factory.createTrousers(waistSize,height);
       showMess();
    }
    private void showMess(){
       System.out.println("<套装信息>");
       System.out.println(cloth.getName()+":");
       System.out.print("胸围:"+cloth.getChestSize());
       System.out.println("身高:"+cloth.getHeight());
       System.out.println(trouser.getName()+":");
       System.out.print("腰围:"+trouser.getWaistSize());
       System.out.println("身高:"+trouser.getHeight());
    }
}

Application.java

package PKG;
public class Application {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
         Shop shop=new Shop();
           ClothesFactory factory=new BeijingClothesFactory(); 
           shop.giveSuit(factory,110,82,170);
           factory=new ShanghaiClothesFactory(); 
           shop.giveSuit(factory,120,88,180);
}
    }

5.运行结果:

这里写图片描述

心得体会

Eclipse是一个很好的编程工具,通过这半个学期的学习 ,我们学习了以Eclipse为工具的Java编程,认识到了Eclipse在编译Java程序方面所带来的方便,经过一个学期的学习,对Eclipse有了一定的了解,并且通过多次试验,对Eclipse编程也有了较深的感触。
在刚开始《软件开发工具》这门课的学习时,我认为这门学科就是介绍一些常用的软件开发工具。但在学习的过程中,我慢慢发现光学会这些是不够的,我们应该通过学习这门学科,完善自己的思维方式,增进自己的专业能力。
通过这一学期对《软件开发工具》 、《JAVA程序设计》以及《软件体系架构》这三门课的学习,我了解到了Java作为一门新的编程语言,与C 、C++的不同之处;Eclipse作为一个开放源代码、基于Java的可扩展开发平台,相对于VC++编译器的强大。通过对这门课更深入的学习,我了解到了,在其开发平台Eclipse下,Java编写的程序相比其他语言拥有极强的可移植性。同时,同样作为一门面向对象的语言,由于Java删除掉了C++中容易令人混淆的功能,使得Java是一种相对C++而言更为简单的一门语言。而Eclipse平台中强大的库的存在,为Java编程提供了健壮的后台支持,使得Java编程可以直接调用已有的函数,更有利于编程者编写程序。
在学习过程中,我发现设计模式与Java程序开发有着密切的关系。通过运用各种设计模式来对Java程序的结构进行定义,再结合Eclipse平台,可以同时从结构和平台两方面提高Java程序的可移植性、健壮性和安全性。无论是从效率上还是可读性上都给人一种很舒服的感觉。可见,Java与设计模式的结合,为Java的发展带来了更大的活力,也为设计模式提供了一个宽阔的舞台.
虽然,从解决问题的角度出发,直接编写代码更为简单,但站在更高的角度,结合Java设计模式编写出来的代码,可读性更强,程序的结构更为清晰,可移植性更好,代码更健壮。这一点与Eclipse平台结合起来,更能促进我们写出更高水平的代码。

猜你喜欢

转载自blog.csdn.net/SkullSky/article/details/52244640
今日推荐