Transcript Slide 1
Vizuālā programmēšana M.sc.ing Mihails Ivanovs [email protected] 1 Darbi Laboratorijas darbi Delphi/C++ Formas Darbs ar DB Atskaites Koda Builder ģenerēšanas rīki Referāts C++ Builder/ Delphi pielietošana specifiskā apgabalā Cits vizuālās programmēšanas rīks 2 Iespēja uzskatāmi radīt lietotāja interfeisu 10101000111 01110000 OK CANCEL OK OK Bijušais stils CANCEL CANCEL Jaunais stils 3 Delphi/C++ Builder komponenti Vizuālie Nevizuālie 4 Apvienota programmatūras izstrādāšanas vide Delphi 5 Objektu inspektora lapaspuses 6 Komponenti STANDARD 7 Komponenti ADDITIONAL 8 Izstrādes automatizācijas tehnoloģijas Tehnoloģija Gads Attīstība Rīki Generative programming 2000 Attīstība, pielietojot Īpašību diagrammas Fmp (plugin for Eslipse or Rational Software Modeler) Model-driven architecture 2001 Tehnoloģija ir diezgan populāra, intensīvi attīstās. Daudz Software Factory 2004 Servisu orientēta tehnoloģija. Attīstība Visual Studio ietvaros Visual Studio 2005 9 Ģenerators Ģenerators ir programma, kura ģenerē lietojuma realizāciju, izmantojot augšlīmeņa specifikāciju Sistēmas specifikācija Ģenerators • Specifikācijas pārbaude • Optimizācija • Realizācijas ģenerēšana Sistēmas realizācija 10 ArgoUML rīks 11 ArgoUML rīks Koda ģenerēšana 12 UMT-QVT rīka darbības piemērs Rīks ļauj uz XML apraksta pamata ģenerēt Java vai SQL kodu Klašu apraksts: 13 UMT-QVT rīka darbības piemērs Ģenerēšanas veida izvēle: 14 UMT-QVT rīka darbības piemērs Ģenerēšanas rezultāts 15 Sistēmas apraksta elementi Klase Klases atribūts Nosaukums Superklase Nosaukums Tips Metode Nosaukums Atgriešanas vērtības tips Parametri Ja metode realizē standartu darbību ar datu bāzi Tips – ielādēšana, dzēšana, modificēšana, ierakstu pievienošana, saraksta ieādēšana Tabula Tabula Tabulas lauks Aprakstam var pielietot XML. 16 Klases ģenerēšana Klase Prece Klases nosaukums [class]: Product Klases atribūti [attribute] Metodes [method] – standartas darbam ar datu bāzi Maksimālais garums Nosaukums Tips Id int Name String 100 Description String 1000 Price double 17 Klases apraksts <class name = “Product”> <attribute name = “id” type =”int” /> <attribute name = “name” type =”String” maxlength = “100”/> <attribute name = “description” type =”String” maxlength = “1000”/> <attribute name = “price” type =”double” /> <method name = “load” type = “load”/> <method name = “create” type = “create”/> <method name = “modify” type = “modify”/> <method name = “delete” type = “delete”/> </class> Product id: name: description: price: int String (100) String (1000) double load create modify delete 18 Tabulas deklarēšanas ģenerēšana Java datu tips MySQL datu tips String If maxlength <255 varchar ([maxlength]) Else text double double int int Šablons: create table [class] ( [name] [type2], ... ) Rezultāts: create table Product ( id int, name varchar(100), description text, price double ) 19 Klases deklarēšana Šablons: Rezultāts: package [package]; [imports] public class [class] { private [type] [name]; } package lv.test; import java.sql.*; public class Product { private int id; private String name; private String description; private double price; } 20 Get un Set metodes Šabloni: public [type] get[name]() { return this.[name]; } public void set[name]([type] [name]) { this.[name] = name; } Rezultāts: public int getId() { return this.id; } public void setId(int id) { this.id = id; } 21 Metodes darbam ar datu bāzi Ielādēšanas sāblons: public void load() throws SQLException { Connection connection = Db.getConnection(); String sql = "SELECT * FROM [name] WHERE [key_name] =" +get[key_name](); Statement st = connection.createStatement(); ResultSet rs = st.executeQuery(sql); if (rs.next()) { set[name](rs.get[type]("[name]")); … } connection.close(); } 22 Java tehnoloģijas pamati Vēsture 1990 – projekta uzsākšana kompānijā Sun 1995 – Java prezentācija (Java 1.0) 1997 – Java 1.1. 1998 – Enterprise JavaBeans specifikācija – tehnoloģija priekš izkliedētām sistēmām 1999 – Java 1.2 2000 – Java 1.3 2001 – Java 1.4 2004 – Java 1.5 jeb Java 5.0 23 Java tehnoloģijas īpašības Priekšrocības: Neatkarība no platformas Drošības līdzekļi Liels bibliotēku un rīku skaits Java galvenais trūkums – lielas resursu prasības 24 Java valodas īpašības Pilnīgi objektorientētā valoda Drazu savākšana Nav tiešas pieejas pie atmiņas Sintakse līdzīga C++ Nav daudzkārtējas mantošanas Paralēlu darbu uzturēšana, izmantojot pavedienus 25 Java pielietošanas apgabali Web-sistēmas Elektroniskā komercija Programmas priekš mobilām ierīcēm – plaukstdatoriem, mobiliem telefoniem Daudzplatformu risinājumi 26 Web-lietojumu arhitektūra Pārlūkprogramma vaicājums JSP atbilde Datu bāze JavaBea n Lietojumu serveris 27 Klašu deklarēšana Klases sastāvdaļas: paketes nosaukums bibliotēku imports klases tips (public, private, static...), nosaukums un superklase (ja ir) atribūti metodes 28 Klases piemērs class HelloWorld { public static void main (String args []) { System. out. println ("Hello World"); } } Mantošana: public class Test extends HelloWord 29 Valodas pamatelementi Komentāri: //komentārs /* komentāru bloks */ Informācijas izvads: System.out.println ("test"); Klase String Salīdzināšana: String s1=""; String s2=""; if (s1.equals(s1)) { ... } nedrīkst if (s1==s2) 30 Darbs ar datu bāzi package lv.test; import java.sql.*; import java.util.*; public class Db { public static Connection getConnection () { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); Properties prop=new Properties(); prop.put("useUnicode","true"); prop.put("characterEncoding","Cp1257"); prop.put("autoReconnect","true"); prop.put("maxReconnects","1000"); prop.put("user","admin"); prop.put("password","pass1"); Connection c = null; c= DriverManager.getConnection("jdbc:mysql://localhost/test",prop); return c; } catch (Exception e) { e.printStackTrace(); return null; } } 31 Klases realizācijas piemērs Article Id Menu_id Title Lang Text Image Load Save Delete 32 Tabulu definīcija MySQL datu bāzē: CREATE TABLE `articles` ( `id` int(11) NOT NULL auto_increment, `menu_id` int(11) NOT NULL default '0', `title` varchar(250) NOT NULL default '', `lang` char(2) default '', `text` text NOT NULL, `image` varchar(100) default '', PRIMARY KEY (`id`) ) 33 Klases realizācija package lv.test; import java.sql.*; public class Article { private int id; private int menuId; private String language; private String text; private String title; private String image; public int getId() { return this.id; } public void setId(int id) { this.id = id; } …. 34 Klases realizācija /** * dzēšana */ public void delete(int mid) throws SQLException { Connection conn = Db.getConnection(); String sql = "delete from articles where id = "+mid; Statement st = conn.createStatement(); st.executeUpdate(sql); conn.close(); } 35 Ielādēšana /** * raksta ielādēšana pēc Id */ public void load(int mid) throws SQLException { Connection conn = Db.getConnection(); String sql = "select * from articles where id ="+mid; Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(sql); if (rs.next()) {//ir ieraksts this.setId(mid); Pielietošana: ... Article a = new Article(); a.load (2128506); out.println (a.getText()); ... this.setMenuId(rs.getInt ("menu_id")); this.setText(rs.getString ("text")); this.setLanguage(rs.getString ("lang")); this.setImage(rs.getString ("image")); this.setTitle(rs.getString ("title")); } conn.close(); Pielietošana: ... Article a = new Article(); a.load (2128506); out.println (a.getText()); ... 36 Informācijas meklēšana public static Vector search (String keyword) throws SQLException { Connection conn = Db.getConnection(); Vector rv = new Vector(); if (keyword.equals("")) return rv; String sql = "select id from articles where text like '%"+keyword + "%' order by id"; Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { int nid = rs.getInt("id"); Article na = new Article(); Labāk pielietot Labāk pielietot PreparedStatement PreparedStatement un un st.setString(1, keyword); na.load2(nid); st.setString(1, keyword); rv.addElement(na); } conn.close(); return rv; } 37 HTML un Java Server Pages Dokumenta struktūra: <HTML> <HEAD> Dokumenta nosaukums, kodēšana, tehniskā informācija </HEAD> <BODY> Teksts, attēli, tabulas </BODY> </HTML> 38 Piemērs <HTML> <HEAD> <TITLE>Virsraksts</TITLE> </HEAD> <BODY> Dokumenta teksts </BODY> </HTML> 39 Kodēšana: <meta http-equiv="Content-Type" content="text/html; charset=windows-1257"> Saite: <a href = "test3.html"> Saite </a> Teksta formatēšana: <B> Bold </B> <I> Italic </I> <U> Underline </U> <br> jauna rinda <p> jauna rindkopa <!-- Komentāri --> 40 Tabulas Tabulas definēšana: <table> </table> Rinda: <tr></tr> Kolona: <td></td> Ir iespējams tabulai un kolonai norādīt platumu punktos vai procentos: <table width="100%">... <table width=300>... 41 Piemērs: <table border = 1> <tr> <td> Rinda 1 1 </td> <td> Rinda 1 2 </td> </tr> <tr> <td> Rinda 2 1 </td> <td> Rinda 2 2 </td> </tr> </table> 42 Java Server Pages tehnoloģija JSP tehnoloģija ļauj kombinēt HTML ar Java kodu. Piemērs: <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=windows-1257"> <TITLE>JSP Piemērs</TITLE> </HEAD> <BODY> <H2> JSP Piemērs </H2> <UL> <LI>Laiks: <%= new java.util.Date() %> <LI>Serveru adrese: <%= request.getRemoteHost() %> <LI>Sesijas identifikators: <%= session.getId() %> </UL> </BODY> </HTML> 43 Saraksta drukāšana 44