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