Głównie chciałbym aby klasy miały wysoką specjalizację, czyli charakteryzować się wysokim współczynnikiem kohezji i być luźno powiązane (coupling).
Poniżej mam kod który jest napisany jak leci a chciałbym aby był zgrabny.
także nie czuję kiedy używać dziedziczenia a kiedy kompozycji.
package SQL; public class ConnectToDB { int dbSize1= connector.dbSize(); return dbSize1; } /** * metoda statyczna uruchamiająca polaczenie do DB */ { String nazwaHosta = "xxx"; String nazwaBazy = "xxx"; String uzytkownik = "xxx"; String haslo = "xx"; //static SqlConnector connector = new SqlConnector(); /* * Wczytujemy sterownik bazy danych, łączymy się z naszą bazą danych */ connector.loadDriver(); connector.connectToDB(nazwaHosta, nazwaBazy, uzytkownik, haslo); return connector; } }
i kolejna klasa:
package SQL; import java.sql.*; import java.util.HashMap; import java.util.Map; /** * @author Ewa * */ /** * @author Ewa * */ public class SqlConnector { /* * To jest nasz obiekt, dzięki któremu wgramy sterownik, połączymy się z * bazą danych, wykonamy zapytania. */ private Connection connection = null; private Statement statement = null; private PreparedStatement preparedStatement; private ResultSet resultset; /* * Ładujemy sterownik bazy danych, sterownik MySQL. */ public void loadDriver() { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out .println("Class :" + this.getClass().getPackage() + this.getClass().getName() + "Wyglda na to, że nie załadowałeś sterownika bazy danych. Sprawdz czy posiaasz <a href="http://dev.mysql.com/downloads/"%3b%29;" target="_blank">http://dev.mysql.com/downloads/");</a> e.printStackTrace(); return; } + this.getClass().getName()); } /* * Łączymy się z danych za pomocą zadeklarowanych zminnych */ public void connectToDB(String nazwaHosta, String nazwaBazy, String uzytkownik, String haslo) { String host = nazwaHosta; String db = nazwaBazy; String user = uzytkownik; String password = haslo; password); try { connection = DriverManager.getConnection("jdbc:mysql://" + host + ":3306/" + db, user, password); } catch (SQLException e) { System.out .println("\nCoś poszło nie tak w SqlConnector.connectToDB()"); e.printStackTrace(); return; } if (connection != null) { } else { } } public void setCountInToFILM(int id_slowka_ang, int ilosc_wystapien) { + this.getClass().getName()); try { String query = "INSERT INTO Film (id_slowka_ang, ilosc_wystapien) VALUES ('" + id_slowka_ang + "','" + ilosc_wystapien + "' )"; statement = connection.createStatement(); statement.execute(query); } catch (NullPointerException e) { e.printStackTrace(); } catch (SQLException e) { + this.getClass().getName()); e.printStackTrace(); } } public Word getWordFromDictionary(int id_slowka) { String slowko_ang = null; String slowko_pl = null; try { String query = "SELECT slowko_ang, slowko_pl FROM dictionary WHERE id_slowka = " + id_slowka; preparedStatement = connection.prepareStatement(query); resultset = preparedStatement.executeQuery(); { slowko_ang = resultset.getString("slowko_ang"); slowko_pl = resultset.getString("slowko_pl"); } resultset.close(); preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } return new Word(id_slowka, slowko_ang, slowko_pl); } public Film getWordsFromFilmDB(Integer id_film) { Integer id_slowka_ang = 000; Integer ilosc_wystapien = 000; try { String query = "SELECT * FROM film WHERE id_film = " + id_film; preparedStatement = connection.prepareStatement(query); resultset = preparedStatement.executeQuery(); { id_slowka_ang = resultset.getInt("id_slowka_ang"); ilosc_wystapien = resultset.getInt("ilosc_wystapien"); } resultset.close(); preparedStatement.close(); } catch (SQLException e) { System.out .println("Coś poszło nie tak w SqlConnector.geWordsFromFilmDB()"); e.printStackTrace(); } return new Film(id_film, id_slowka_ang, ilosc_wystapien); } public void eraseTable(String table) { int ile = dbSize(table); try { String query = "TRUNCATE TABLE " + table; preparedStatement = connection.prepareStatement(query); // resultset = preparedStatement.executeQuery(); preparedStatement.executeUpdate("TRUNCATE " + table); resultset.close(); preparedStatement.close(); } catch (SQLException e) { + this.getClass().getName()); e.printStackTrace(); } catch (NullPointerException e) { e.printStackTrace(); } + " o wielkości " + ile + "Teraz zawiera wierszy: " + dbSize(table)); } // /////////////////////////table start public void copyTable() { String query = "INSERT INTO tmp SELECT * FROM Film"; try { statement = connection.createStatement(); statement.execute(query); resultset.close();// finaly? preparedStatement.close(); } catch (SQLException e) { + this.getClass().getName()); e.printStackTrace(); } catch (NullPointerException e) { + this.getClass().getName()); e.printStackTrace(); } }