Язык программирования Java Дмитриев Андрей Владиславович andrei-dmitriev@yandex.ru Май 2007.

Презентация:



Advertisements
Похожие презентации
Work with databases in Java. JDBC Tutorial for students of universities Author: Dudnik Oxana.
Advertisements

Язык программирования Java Дмитриев Андрей Владиславович Май 2007.
Java Database Connectivity (JDBC). Взаимодействие СУБД с приложениями на Java JDBC предполагает, что база данных, с которой взаимодействует программа,
JDBC – программный пакет для работы с БД Базы данных: учебный курс Основные пакеты в Java для работы с БД java.sql.* - основные классы для работы с данными.
Исключения в Java Макаревич Л. Г.. Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение.
Работа с базами данных – JDBC Введение в JDBC. JDBC JDBC (Java DataBase Connectivity) – технология доступа к базам данных для Java Состоит из: API (java.sql.
Язык программирования Java Дмитриев Андрей Владиславович 2007.
Test 5 Вопрос 1. В результате компиляции каких строк будет происходить ошибка компиляции: public class Main { public static void main(String[] args) {
Test 14 Вопрос 1. class Main { public void method() { static class One { public One() { System.out.println("From one"); } } public static void main(String...
Test 13 Вопрос 1. public class StringTest { public static void main(String[] arg){ test(new String[] { null });} static void test(Object[] o){System.out.print(1);}
Test 16 Вопрос 1. class Clazz { { System.out.println("non-static init"); } public static void main(String a[]) { System.out.println("main"); Clazz ob1.
Язык программирования Java Андрей Дмитриев ©2009.
Test 17 Вопрос 1. public class TKO { public static void main(String[] args) { String s = "-"; Integer x = 343; long L343 = 343L; if (x.equals(L343)) s.
Обработка исключительных ситуаций, работа с файлами Исключительные ситуации Классы File, InputStream, RandomAccessFile, FileReader, BufferedReader, BufferedWriter,
Программная инженерия Дмитриев Андрей Владиславович
Test15 Вопрос 1. class AClass { } public class Test { public static void main (String... args) { ArrayList a = new ArrayList (); AClass aaaClass = new.
Программная инженерия Андрей Дмитриев ©
Test 12 Вопрос 1. public class Cast { public static void main (String[] args){ byte b = 128; int i = b; System.out.println(i); } } a)Во время выполнения.
Test 9 Вопрос 1. public class A { private String runNow() { return "High"; } static class B extends A { public String runNow() { return "Low"; } } public.
Test 10 Вопрос 1. public class Test implements Iterator { // 1 private List list = new ArrayList (); // 2 public void addList(T... ts) { Collections.addAll(list,
Транксрипт:

Язык программирования Java Дмитриев Андрей Владиславович Май 2007

Фасад (Facade) С развитием программы растет количество классов и среди них можно выделить подсистемы. Фасад предназначен для упрощения интерфейса к таким подсистемам. Паттерн предназначен для объединения нескольких сложных классов в один.

Фасад (подсистема)

Фасад (загрузка драйвера) try{ //загрузка драйвера Class.forName(driver); } catch (Exception e) { System.out.println(e.getMessage()); }

Фасад (соединение) try { con = DriverManager.getConnection(url); //получение метаинформации dma = con.getMetaData(); }catch (Exception e) { System.out.println(e.getMessage()); }

Чтение структуры БД public String[] getTableNames() { String[] tbnames = null; Vector tname = new Vector(); try { results = new Results(dma.getTables(catalog, null, "%", types)); } catch (Exception e) { System.out.println(e); }

Чтение структуры БД (cont.) while (results.hasMoreElements()) tname.addElement(results.getColumnValue ("TABLE_NAME")); tbnames = new String[tname.size()]; for (int i=0; i< tname.size(); i++) tbnames[i] = (String)tname.elementAt(i); return tbnames; }

Фасад (класс БД) class Database { public Database(String driver){} public void open(String url, String cat); public String[] getTableNames(); public String[] getColumnNames(String table); public String getColumnValue(String table, String columnName); public String getNextValue(String columnName); public ResultSet Execute(String sql); }

Фасад (класс Результат) class Results { public Results(ResultSet rset); public String[] getMetaData(); public boolean hasMoreElements(); public String[]nextElement(); public String getColumnValue(String columnName); public String getColumnValue(int i); }

Фасад (использование) db = new Database("sun.jdbc.odbc.JdbcOdbcDriver"); db.open("jdbc:odbc:Grocery prices", null); String tnames[]=db.getTableNames(); Последовательность вызовов методов связанных классов и взаимодействие между ними сводится к одному вызову. Правила взаимодействия теперь стали частью реализации нового класса.

Фасад (содержимое классов) Класс Database будет содержать в себе Connection, DatabaseMetaData, Results. Класс Results будет содержать в себе ResultSet и ResultSetMetaData.

Фасад (выводы) Естественный способ упрощения работы с частями системы. Как правило повышает уровень абстракции представления классов.