본문 바로가기
개발/Java

인터페이스 기반의 프로그래밍

by BellOne4222 2024. 1. 29.

인터페이스 기반의 프로그래밍


인터페이스 기반의 프로그래밍이란?

  • 인터페이스 클래스를 노출시키고 자식 클래스의 내부 코드를 숨긴다.
  • 자식 클래스에서 재정의를 통해 C에서 노출 되어 있는 기능을 구현하고, 상속관계로 구현
  • 느슨한 연결
    • 두 객체가 느슨하게 연결되어 있다는 것은 그 둘이 상호작용을 하긴 하지만 서로에 대해서 서로 잘 모른 다는 것을 의미
    • User입장에서 자식 클래스의 내부 동작 방식을 모르기 때문에 느슨한 연결 관계
    • User는 인터페이스 부모 클래스를 통해 자식 클래스를 동작 시킬 수 있다.
      • 자식 클래스의 동작 방식을 몰라도 사용 가능하다.
// CC를 이용하여 BB를 동작시키는 프로그래밍(인터페이스 기반의 프로그래밍)
public class InterfaceAPI {
    public static void main(String[] args) {
        CC c = new BB(); // Upcasting으로 객체 생성
        c.x(); // BB의 x()가 동작 -> 동적 바인딩
        c.y();
        c.z();
    }
}

// CC 인터페이스는 노출
public interface CC {
    public void x(); // 추상 클래스
    public void y(); // 추상 클래스
    public void z(); // 추상 클래스
}

// BB 클래스는 노출 시키지 않는다. (BB.class 파일만 제공하고 BB.java의 소스코드는 제공하지 않는다)
// CC 인터페이스 클래스로 BB 클래스를 동작시킨다.
public class BB implements CC{

    @Override
    public void x() {
        System.out.println("x 동작이 실행된다.");
    }

    @Override
    public void y() {
        System.out.println("y 동작이 실행된다.");
    }

    @Override
    public void z() {
        System.out.println("z 동작이 실행된다.");
    }
}

데이터베이스 연결 Driver

  • Driver
    • 벤더(DB)들이 자기의 데이터베이스 접속에 필요한 동작을 만들어서 배포하는 클래스들(API)
// 인터페이스는 자바에서 제공을 한다.
public interface Connection {
    // 데이터베이스 연결동작
    public void getConnection(String url, String username, String password);
}

public class MySQLDriver implements Connection {
    @Override
    public void getConnection(String url, String username, String password) {
        System.out.println("url, username, password 정보를 이용하여 MySQL DB를 접속 시도한다.");
    }
}

public class MSSQLDriver implements Connection{

    @Override
    public void getConnection(String url, String username, String password) {
        System.out.println("url, username, password 정보를 이용하여 MSSQL DB를 접속 시도한다.");
    }
}

// OracleDriver는 Oracle에서 만들어서 제공하면 된다.(Driver)
public class OracleDriver implements Connection{
    @Override
    public void getConnection(String url, String username, String password) {
        System.out.println("url, username, password 정보를 이용하여 oracle DB를 접속 시도한다.");
    }
}

인터페이스를 이용하여 데이터베이스 접속

  • JDBC Programming
    • 자바에서 데이터베이스와의 연결을 위한 API
    • 자바 데이터베이스 프로그래밍
    • 자바에서는 인터페이스(공통의 접근방식)을 제공해주고
    • 벤더(DB회사)들은 인터페이스를 구현하여 Driver 클래스를 만들고 배포하면 된다.
    • 벤더마다 배포된 드라이버 이름(jar)이 다르다.
    • 벤더들이 제공하는 데이터베이스 접속 URL과 URL 형식을 알아야한다.
public class DataBaseConnection {
    public static void main(String[] args) {
        // oracle DB 접속
        Connection conn = new OracleDriver();
        conn.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system","manager");

        // mysql DB 접속
        conn=new MySQLDriver();
        conn.getConnection("jdbc:mysql://localhost:3306/test","root","12345");

        // mssql DB 접속
        conn=new MSSQLDriver();
        conn.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=mem","sa","12345");
    }
}

'개발 > Java' 카테고리의 다른 글

제네릭(Generic)  (0) 2024.01.29
Collection API  (0) 2024.01.29
자바 String 클래스  (1) 2024.01.29
자바 API  (0) 2024.01.29
자바 최상위 클래스 Object  (0) 2024.01.29