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