2004-11-20

Head First Design Patterns

這本書就是我們這幾次要上的很有趣的東西
相關的連結就看一下我的Blog吧:
Book : Head First Design Patterns

2004-11-12

XML作業 by qazwe

1.XML文件
<?xml version="1.0" encoding="UTF-8"?>
<櫻桃小丸子>
  <小丸子人物介紹>
    <名字>
      櫻 桃子
      <成員>
        小丸子本人
        <年紀>
          9歲
          <血型>A型</血型>
        </年紀>
      </成員>
    </名字>
  </小丸子人物介紹>
  <小丸子人物介紹>
    <名字>
      櫻 幸子
      <成員>
        姐姐
        <年紀>
          12歲
          <血型>A型</血型>
        </年紀>
      </成員>
    </名字>
  </小丸子人物介紹>
  <小丸子人物介紹>
    <名字>
      櫻桃廣志
      <成員>
        爸爸
        <年紀>
          40歲
          <血型>A型</血型>
        </年紀>
      </成員>
    </名字>
  </小丸子人物介紹>
  <小丸子人物介紹>
    <名字>
      小林瑾
      <成員>
        媽媽
        <年紀>
          40歲
          <血型>A型</血型>
        </年紀>
      </成員>
    </名字>
  </小丸子人物介紹>
</櫻桃小丸子>
2.剖析結果
姓名:櫻 桃子
成員:小丸子本人
年紀:9歲
血型:A型
姓名:櫻 幸子
成員:姐姐
年紀:12歲
血型:A型
姓名:櫻桃廣志
成員:爸爸
年紀:40歲
血型:A型
姓名:小林瑾
成員:媽媽
年紀:40歲
血型:A型

2004-11-11

XML作業 by shumi

1.造出來的XML文件
<?xml version="1.0" encoding="UTF-8"?>
<Party506>
  <成員>
    <年級>
      大四
      <名字>
        swanky
        <星座>巨蟹</星座>
      </名字>
    </年級>
  </成員>
  <成員>
    <年級>
      大三
      <名字>
        shumi
        <星座>水瓶</星座>
      </名字>
    </年級>
  </成員>
  <成員>
    <年級>
      大三
      <名字>
        qazwe
        <星座>巨蟹</星座>
      </名字>
    </年級>
  </成員>
  <成員>
    <年級>
      大三
      <名字>
        queena
        <星座>射手</星座>
      </名字>
    </年級>
  </成員>
</Party506>
2.結果
大四
swanky
巨蟹

大三
shumi
水瓶

大三
qazwe
巨蟹

大三
queena
射手

2004-10-29

畫圖小程式範例 by swanky

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

import javax.swing.*;

public class DrawCircle extends JApplet{

   boolean drawable = false;

   public void init(){
      super.init();

      getContentPane().add(new DrawPanel(), BorderLayout.CENTER);

      Action drawAction = new DrawAction();
      Action cancelAction = new CancelAction();

      JPanel p = new JPanel();
      p.add(new JButton(drawAction));
      p.add(new JButton(cancelAction));
      getContentPane().add(p, BorderLayout.NORTH);

      JMenu actionMenu = new JMenu("Action");
      actionMenu.add(drawAction);
      actionMenu.add(cancelAction);
      JMenuBar menuBar = new JMenuBar();
      menuBar.add(actionMenu);
      setJMenuBar(menuBar);
   }

   public static void main(String[] args){
      JApplet applet = new DrawCircle();
      JFrame frame = new JFrame("DrawCircle");

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(applet);

      frame.setSize(500, 500);
      applet.init();
      applet.start();
      frame.setVisible(true);
   }

   class DrawAction extends AbstractAction{
      public DrawAction(){
         putValue(Action.NAME, "Draw");
         putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl D"));
      }

      public void actionPerformed(ActionEvent e){
         drawable = true;
      }
   }

   class CancelAction extends AbstractAction{
      public CancelAction(){
         putValue(Action.NAME, "Cancel");
         putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl C"));
      }

      public void actionPerformed(ActionEvent e){
         drawable = false;
      }
   }

   class DrawPanel extends JPanel implements MouseListener, MouseMotionListener{
      Point2D p1, p2;

      public DrawPanel(){
         addMouseListener(this);
         addMouseMotionListener(this);
      }

      protected void paintComponent(Graphics g){
         super.paintComponent(g);
         Graphics2D g2d = (Graphics2D)g;

         if(drawable){
            if((p1 != null) | (p2 != null)){
               Ellipse2D e = new Ellipse2D.Double(p1.getX(), p1.getY(),
                     p2.getX() - p1.getX(), p2.getY() - p1.getY());
               g2d.draw(e);
            }
         }
      }

      public void mouseClicked(MouseEvent e){}

      public void mousePressed(MouseEvent e){
         if(drawable){
            p1 = (Point2D)e.getPoint();
         }
      }

      public void mouseReleased(MouseEvent e){
         if(drawable){
            p2 = (Point2D)e.getPoint();
            repaint();
         }
      }

      public void mouseEntered(MouseEvent e){}
      public void mouseExited(MouseEvent e){}
      public void mouseDragged(MouseEvent e){}
      public void mouseMoved(MouseEvent e){}
   }
}

畫圓小程式 by shumi

程式碼~
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

import javax.swing.*;

public class DrawCircleApp extends JApplet{

   boolean type = false;

   public void init(){
      super.init();
      getContentPane().add(new DrawPanel(), BorderLayout.CENTER);
      Action c = new CircleAction();
      Action a = new CancleAction();

      JPanel p = new JPanel();
      p.add(new JButton(c));
      p.add(new JButton(a));
      getContentPane().add(p, BorderLayout.NORTH);
      final JMenu fileMenu = new JMenu("Action");
      fileMenu.add(c);
      fileMenu.add(a);
      final JMenuBar menuBar = new JMenuBar();

      menuBar.add(fileMenu);
      setJMenuBar(menuBar);
   }

   public static void main(String[] args){
      JApplet applet = new DrawCircleApp();
      JFrame frame = new JFrame("DrawCircle");
      // To close the application:
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(applet);
      frame.setSize(100, 50);
      applet.init();
      applet.start();
      frame.setVisible(true);
   }

   class CircleAction extends AbstractAction{
      public CircleAction(){
         putValue(Action.NAME, "畫圓");
         putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl C"));
      }

      public void actionPerformed(ActionEvent e){
         type = true;
      }

   }

   class CancleAction extends AbstractAction{
      public CancleAction(){
         putValue(Action.NAME, "清空");
         putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl D"));
      }

      public void actionPerformed(ActionEvent e){
         type = false;

      }

   }

   class DrawPanel extends JPanel implements MouseListener, MouseMotionListener{
      Point2D p1, p2;

      public DrawPanel(){
         addMouseListener(this);
         addMouseMotionListener(this);
      }

      protected void paintComponent(Graphics g){
         super.paintComponent(g);
         Graphics2D g2d = (Graphics2D)g;
         if(type){
            if((p1 == null) | (p2 == null)){
               return;
            }

            Ellipse2D e = new Ellipse2D.Double(p1.getX(), p1.getY(), p2.getX()
                  - p1.getX(), p2.getY() - p1.getY());
            g2d.draw(e);
         }

      }

      public void mouseClicked(MouseEvent e){}

      public void mousePressed(MouseEvent e){
         p1 = (Point2D)e.getPoint();
      }

      public void mouseReleased(MouseEvent e){
         p2 = (Point2D)e.getPoint();
         repaint();
      }

      public void mouseEntered(MouseEvent e){}

      public void mouseExited(MouseEvent e){}

      public void mouseDragged(MouseEvent e){}

      public void mouseMoved(MouseEvent e){}

   }
}

Singleton範例圖(架構圖) by shumi


List1 Singleton類別
public class Singleton{

   private static Singleton singleton = new Singleton();

   private Singleton(){
      System.out.println("已產生物件個體");
   }

   public static Singleton getInstance(){
      return singleton;
   }

}
List2 Mian類別
public class Main{

   public static void main(String[] args){
      System.out.println("Start.");
      Singleton obj1 = Singleton.getInstance();
      Singleton obj2 = Singleton.getInstance();
      if(obj1 == obj2){
         System.out.println("obj1和obj2是同一物件個體");
      }else {
         System.out.println("obj1和obj2並非同一物件個體");
      }
      System.out.println("End.");
   }
}

Factory架構圖 by shumi