You are on page 1of 39

Implementation

Ni dung
z z z z z

Gii thiu M hnh trin khai USDP Mt s nguyn tc trong lp trnh Phong cch lp trnh Lp trnh trong Java

Trin khai cc gi Trin khai cc controller Kt ni CSDL Trin khai giao din

Ti liu
z

z z

Pressman, Software Engineering, McGraw Hill (chapter 16) Sommerville, Software Engineering, Addison-Wesley (chapter 19) Gio trnh k ngh phn mm (chng 4) Cc ti liu in t khc

Gii thiu
z

Trin khai (implementation) # lp trnh (programming)

Implementation = trin khai thit k chi tit thnh chng trnh


z z z

S dng li m ngun/cc thnh phn Lp trnh nu khng hoc kh s dng li Tch hp cc thnh phn

Mc tiu

Sn phm phn mm tt
4

Lp trnh hiu qu
Sn phm phn mm tt phn tch tt thit k tt lp trnh tt kim th cht ch k thut lp trnh tt chuyn nghip (tun theo cc chun) n nh hiu qu
5

Tin ha ca k thut lp trnh


Lp trnh hiu qu hn, sn phm r tin hn Tc pht trin cao hn - nng lc biu din cao hn
- kh nng s dng li cao hn

D bo tr hn - d hiu, d sa i Cht lng cao hn - s dng cc cu trc an ton hn chng trnh cn d hiu
6

Tc vit m ngun
Tc pht trin cao lm ngn chng trnh ngun - tc khng t l thun vi s dng lnh - cu lnh phc tp lm gim d hiu Ngn ng mc cao (4GL) - nng lc biu din cao - tc pht trin nhanh

S tng quan ca implementation


1. Define coding standards For each ... framework package ...application package: Requirements For each class: 2. Implement methods
-- see section tbd

Architecture

Detailed design
- pseudocode? - flowcharts?

5. Release for integration


-- see chpt. 9

3. Inspect class
-- see section tbd

4. Perform unit testing


-- see chpt. 8
8

Chun b cho implementation


z

Xc thc cc thit k chi tit bn phi trin khai

M ngun ch c vit t thit k Cho lp trnh Cho ti liu Da vo cc d liu trong qu kh Chia cc thnh phn c kch c khong 100 LOC
9

Hiu cc chun

c lng kch c v thi gian


M hnh trin khai USDP


M hnh thit k Thnh phn trin khai
AnotherClass

M hnh trin khai


Trin khai h thng con

trace Area

file Area.java

File Area.java trin khai lp Area (c mt trace gia chng)


10

M hnh trin khai USDP


M hnh thit k
AnotherClass trace Area Trin khai h thng con file Area.java file readme.txt Giao din c cung cp bi lp thit k v thnh phn trin khai compilation file Area.class
11

M hnh trin khai


compress file impl.jar

explain

Mt s nguyn tc trong lp trnh


1. C gng ti s dng 2. ENFORCE INTENTIONS
z

If your code is intended to be used in particular ways only, write it so that the code cannot be used in any other way.

12

ENFORCE INTENTIONS
z

Nu mt phn t (lp, hm, bin, ) khng dc s dng bi cc chc nng khc

nh ngha chng l private hoc protected,

S dng cc ton t nh final, abstract,

13

ENFORCE INTENTIONS
z

C ci nhn tng th, chng trnh l cc b

Xy dng cc phn t ca chng trnh:


z z

cc b nht c th v hnh nht c th


Cc thuc tnh private Truy cp chng bng nhiu hm truy cp (nu yu cu) Cc thuc tnh protected

14

Phong cch lp trnh


Bao gm cc yu t:

cch t tn hm v bin cch xy dng cu lnh, cu trc chng trnh cch vit ch thch
Hng ti phong cch lm cho m ngun d hiu, d sa i an ton (t li) Ngi khc c th hiu c, bo tri c
15

Ti sao cn d hiu
Phn mm lun cn sa i - sa li - nng cp ko di tui th, nng cao hiu qu kinh t Nu khng d hiu - bo tr tn thi gian, chi ph cao - tc gi phi bo tr sut vng i ca phn mm - bn thn tc gi cng khng hiu
16

Ch thch
Mi iu c Ch thch trong chng trnh
Mc ch s dng ca cc bin Chc nng ca khi lnh, cu lnh cc lnh iu khin cc lnh phc tp Ch thch cc m un mc ch, chc nng ca m un tham s, gi tr tr li (giao din) cc m un thuc cp cu trc, thut ton nhim v ca cc bin cc b tc gi, ngi kim tra, thi gian
17

t tn
t tn bin, tn hm c ngha, gi nh S dng cc k hiu, t ting Anh c ngha Lm cho d c

Trnh t tn qu di

dng DateOfBirth hoc date_of_birth khng vit dateofbirth khng t tn di vi cc bin cc b

Thng nht cch dng

tn lp bt u bng ch hoa, tn hng ton ch hoa tn bin bt u bng ch thng


i cho vng lp, tmp cho cc gi tr tm thi...
18

Cu lnh
Cc cu lnh phi m t cu trc

tt l, d c, d hiu

Lm n gin cc lnh
mi lnh trn mt dng trin khai cc biu thc phc tp hn ch truyn tham s l kt qu ca hm, biu thc printf("%s", strcpy(des, src));

Trnh cc cu trc phc tp:

cc lnh if lng nhau iu kin ph nh if not


19

Hm v bin cc b
Chng trnh cn c chia thnh nhiu m un (hm) Khng vit hm qu di Pre v Post conditions

khng qu 2 trang mn hnh


to ra cc hm th cp gim di tng hm Khng dng qu nhiu bin cc b

khng th theo di ng thi hot ng ca nhiu bin

(vd. khng qu 7 bin cc b)


20

X l li
C th pht hin li trong khi thc hin

X l li

li chia 0 li input/output,

nht qun trong x l: phn loi li; thng nht nh dng thng bo, phn bit output v thng bo li cc hm th vin nn trnh vic t x l, t a ra thng bo li

21

Output v thng bo li
Output l d liu, cn c dng lm input cho phn mm khc Thng bo (li) l cc thng tin nht thi, trng thi h thng, li v cch khc phc Cn tch output v thng bo li

22

X l li trong cc hm th vin

Ngi vit v ngi s dng th vin l khc nhau Ngi s dng thng mun c cch x l ring Hm th vin tr li trng thi li, khng t x l

tr trng thi bng gi tr tr li tr trng thi bng tham s tr li bng nm ngoi l (trong cc OOL)

int lookup(int a[], int key, int& err_code) { if (not found) err_code = 0; else err_code =1; }
23

Ngoi l
z

L cch thc x l li tin tin trong cc ngn ng hng i tng mun x l nm ra mt ngoi l (i tng
cha thng tin li) mun iu khin bt ngoi l (nu c)

Tch phn x l li khi phn ci t thut ton thng thng, lm cho chng trnh d c hn D dng hn, an ton hn
24

Nm ngoi l

public Object pop() { Object obj; if (size == 0) { throw new EmptyStackException(); } obj = objectAt(size - 1); setObjectAt(size - 1, null); size--; return obj; }
25

Bt ngoi l
try { Object obj = cacheAccess.get("foo"); // ... lots of lines here ...

} catch (CacheException ex) { ex.printStackTrace(); Exception base = ex.getBaseException(); if (base != null) base.printStackTrace(); } catch (Exception ex) { // handle other exceptions }

26

Giao din ca modun


Thng nht nh dng

Kim tra tnh hp l ca d liu


ch thc hin x l vi d liu hp l khng truyn tha tham s tm cch kt hp cc khon mc lin quan

th t truyn tham s strcpy(des, src)

Lm n gin giao din (gim ghp ni)

27

Phong cch lp trnh tt

Tun theo cc chun thng dng Chun c chp nhn rng ri hn d hiu hn Ch gii y mi khi khng tun theo chun

"Ngi khc c hiu c khng?"

28

Trin khai cc gi (packages)


z

z z

Gi: cung cp c ch cho vic s dng li m ngun Java: cung cp c ch nh ngha cc gi Cc bc nh ngha gi

nh ngha cc lp thuc gi. S dng cu lnh package nh tn gi Dch thnh file .class S dng .class bng cu lnh import

29

Trin khai cc controller


z

Controller: Thc hin cc hnh vi hoc yu cu chc nng ca HT Trin khai controller tng t nh cc ngn ng lp trnh khc Tt nht l s dng cc lp abstract v interface.

30

V d v abstract class
public abstract class LivingThing { public void breath(){ System.out.println("Living Thing breathing..."); } public void eat(){ System.out.println("Living Thing eating..."); } /** * abstract method walk * We want this method to be overridden by subclasses of * LivingThing */ public abstract void walk(); }

31

V d v abstract class

public class Human extends LivingThing { public void walk(){ System.out.println("Human walks..."); } }
32

Interface
//Cach dinh nghia interface public interface [InterfaceName] { //some methods without the body } public interface Relation { public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b); }

33

Trin khai
/** * This class defines a line segment */ public class Line implements Relation { private double x1; private double x2; private double y1; private double y2; public Line(double x1, double x2, double y1, double y2){ this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; }

34

Trin khai
public double getLength(){ double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return length; } public boolean isGreater( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen > bLen); } public boolean isLess( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen < bLen); } public boolean isEqual( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen == bLen); } }
35

Kt ni CSDL
z z

Java Database Connectivity (JDBC) java.sql

import java.sql.*; public class DBAthlete() { private Connection connection; private PCLAthlete athleteList; ... }

36

Kt ni CSDL
z

3 thng tin quan trng cho kt ni CSDL


URL (Uniform Resource Locator) Username Password

//constructor to connect public DBAthlete() { String url = jdbc:odbc:ABLDatabase; String username = scott; String username = tiger; try { Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); connection = DriverManager.getConnection (url, username, password); } catch (ClassNotFoundException) { ... } }
37

Trin khai giao din


z

Abstract Windowing Toolkit (AWT) vs. Swing


//an example import java.awt.*; public class GraphicPanel extends Panel { GraphicPanel() { setBackground(Color.black); } public void paint(Graphics g) { g.setColor(new Color(0,255,0)); //green g.setFont(new Font("Helvetica",Font.PLAIN,16)); g.drawString("Hello GUI World!", 30, 100); g.setColor(new Color(1.0f,0,0)); //red g.fillRect(30, 100, 150, 10); } //continued...
38

Thng bo
z z

Cc nhm np ti liu thit k

Deadline: 5:00PM, ngy 30/10/2009 Chng trnh Ti liu Deadline: 5:00PM, ngy 13/11/2009 Qua email Thy H (hanv@vnu.edu.vn) Kim th (Testing)
39

Np phn mm (sn phm thc thi)


z z

Cch np

Ni dung hc tun sau

You might also like