레이블이 자바채팅인 게시물을 표시합니다. 모든 게시물 표시
레이블이 자바채팅인 게시물을 표시합니다. 모든 게시물 표시

2013년 8월 5일 월요일

(오라클자바교육,ORACELJAVA강좌)JAVA Swing과 JDBC(오라클)를 이용한 예제

//오라클의 EMP Table의 데이터를 가지고 화면에 뿌리는 예제
//이름을 입력하고 Enter Key를 누르면 JDBC를 이용하여  데이터를 가지고 옵니다.


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의) 
 www.onjprogramming.co.kr  


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.sql.*;

class DBTest {
        JTextField name;    JPasswordField tel;  JTextField addr;
        public DBTest() {
                JFrame f = new JFrame();
                Container cp = f.getContentPane();
                cp.setLayout(new FlowLayout());
                name = new JTextField("",10);
                name.setCaretColor(Color.blue);
                tel  = new JPasswordField("",10);
               
                                tel.setEditable(false);
                addr = new JTextField("",10);
                addr.setEditable(false);
                cp.add(new JLabel("성명 : "));        cp.add(name);
                cp.add(new JLabel("전화번호 : ")); cp.add(tel);
                cp.add(new JLabel("주소 : "));        cp.add(addr);

                name.addActionListener( new ActionListener()
                        {
                                public void actionPerformed(ActionEvent ae) {
                                        dataGet();
                                }
                        }
                );
                f.setSize(600, 100);                f.setVisible(true);
        }
       
                public static void main(String[] args) {
                new DBTest();       
        }

        public void dataGet() {
                Connection con=null;
                Statement stmt=null;
                ResultSet rs=null;
                try {
              Class.forName("oracle.jdbc.driver.OracleDriver");                       
                  con = DriverManager.getConnection("jdbc:oracle:thin:@***.***.***.***:1521:WINK", "test", "test");
                  stmt = con.createStatement();
                  rs = stmt.executeQuery("select tel, addr from emp where name = " + "'" + name.getText().trim() + "'");
                  if (rs!=null) {

                                            rs.next();
                          tel.setText(rs.getString("tel"));
                          addr.setText(rs.getString("addr"));
                  }
                }
                catch(Exception e) {System.out.println(e);}
                finally {
                        try        {
                                if (con != null) {con.close();        }
                        }
                        catch (Exception e){}
                }
        }
}


2013년 8월 1일 목요일

java interface polymorphism(인터페이스를 이용한 다형성)

앞의 예제의 Manager Class는 제외함.
인터페이스를 이용해 메소드를 사용하고 또 더불어 다형성을 제공할 수도 있다. 예를 들어 운전자는 영업팀 직원일 수도 있고 영업팀팀장일 수도 있다. 앞서 클래스의 다형성을 이야기 할 때 설명한 것과 비슷한 내용이지만 결국 운전자는 때에 따라서 여러 형태로 보여질 수 있다는 의미이다. 만약 운전자를 나타내는 인터페이스 SmallDriver 인터페이스가 영업팀직원일 수도 있고 영업팀팀장을 나타낼 수도 있다면 프로그래밍을 하는 사람의 입장에서는 보다 유연한 프로그래밍을 제공받을 수 있을 것이다. 


//인터페이스 선언
interface SmallDriver { 
  void driveSmallCar(); // 메소드 선언 
}

abstract class Employee {
    String name;
    String id;

  //생성자
    public Employee(String name1, String id1) { 
  name = name1;  id = id1; 
    }
    public void gotoOffice() {    System.out.println(name+"님 출근하였습니다...");  }
    public void gotoHome() {      System.out.println(name+"님 퇴근하였습니다...");  }
    public String toString() {    return "직원의 이름은 " + name + "이다.";  }
    abstract public void startJob();
}


//직원클래스를 상속한 영업팀직원 클래스
class SalesEmployee extends Employee implements SmallDriver{
    //영업담당지역, 메소드내에서만 변수에 접근이 가능하다.
    private String chargeArea;   
public String carName="소나타";
    public SalesEmployee(String newName,String newID,String newArea) {
        super(newName, newID);   
this.chargeArea = newArea;
    }
// SmallDrive 인터페이스의 메소드 구현 
    public void driveSmallCar() { 
          System.out.println("영업팀 직원 " + name + "은 " + carName + "를 운전한다.");
    }
    public void startJob() {
        System.out.println(super.name + "님이 " + this.chargeArea + " 지역으로 영업업무를 나갑니다...");
    }
}


//영업팀직원 클래스를 상속한 영업팀장 클래스
class SalesChief extends SalesEmployee implements SmallDriver{
      int salesTarget;  //영업팀 목표 매출액
  public String carName="그랜져";
      public SalesChief(String newName,String newID,String newArea, int newSalesTarget) {
          super(newName, newID, newArea); 
          this.salesTarget = newSalesTarget;
      }
  // SmallDrive 인터페이스의 메소드 구현 
      public void driveSmallCar() { 
          System.out.println("영업팀 팀장 " + name + "은 " + carName + "를 운전한다.");
      }
      //영업팀장의 업무는 더이상 확장이 안된다는 의미, 상속할수가 없다는 의미
      final public void startJob() {
          System.out.println(super.name + "님이 영업팀 직원을 관리한다...");
          System.out.println(super.name + "님이 관리하는 영업팀의 매출목표는 "+ this.salesTarget + "만원 입니다...");
      }
}


//Main Class
class InterfaceSample2 {
    public static void main(String[] args) {
        // 인터페이스가 클래스의 객체를 참조하도록...
        SmallDriver sm1 = new SalesEmployee("홍길동", "11111","서울");
        SmallDriver sm2 = new SalesChief("이순신", "22222", "개발부", 100000000);
        sm1.driveSmallCar();
sm2.driveSmallCar();

SalesEmployee se = new SalesEmployee("차두리","23456","독일");
se.gotoOffice();
se.startJob();
se.carName="티코";
se.driveSmallCar();
    }
}


추상메소드를 가지고 있고 이를 상속받거나 구현하는 클래스는 이 추상 메소드를 재정의하고 구현해야 한다는 점, 그리고 다형성을 구현하는 방법이라는 점, 메소드들이 동적으로 바인딩 된다는 점들은 비슷하다.
차이점
      - 인터페이스는 서로 연관성이 없는 클래스들에 의해 구현될 수 있고 따라서 수평적인 구현이 가능하지만 추상클래스의 경우 단일 상속 개념 하에 수직적인 구조로 상속을 해야만 한다.
    - 인터페이스에서는 메소드를 선언만 할 수 있으며 구현할 수 없다. 그리고 이 구현은 인터페이스를 구현하도록 설정된 클래스에서 가능하다. 하지만 추상클래스의 경우에는 추상 클래스 내부에서 메소드의 선언과 구현이 모두 가능하며 또한 이를 상속 받은 클래스에서도 재정의가 가능하다.

2013년 7월 29일 월요일

JSP Chatting

참고하세요~


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷  실무전문 강의)





소스 파일은 


http://blog.naver.com/PostView.nhn?blogId=julymorning4&Redirect=View&logNo=100192997244&categoryNo=23&isAfterWrite=true 


에서 참고하세요~