VU File Edit View Navigate Source Refactor Run Debug Profile Team Tools Window Help 3E } 39 áo, a public List FfindAII { a a4 là *ÚH$ 46 a public List findRangeint[] range {
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CONG NGHE THONG TIN 1
BAI TAP KET THUC MON HOC
KIEN TRUC & THIET KE HE THONG THONG TIN
Giang vién: Tr& Dinh Qué’
Nhóm môn học : 03
Sinh viên:
Hoang Trung Phong — B14DCCN333
Trang 2Biểu đ ồgói kiến trúc 3 tầng MVC SH HH HH HH HH Hit 4 Biểu đ ôtriển khai án HH Hà HH Hà HH HH HH TH HH HE TH KH 5 Sinh lược đ Öcơ sở dữ liệu từ biểu đ`ÔlỚp ccSc SH HH HH HH Hà Ho 5 Sinh code Java với các beaI nhàn HH HH HH HH HH TH HH HH 7
Trang 3I Biểu đ 6lớp thiết kế của hệ thống
Trang 4
II Gói kiến trúc 3 tầng và biểu đ ôtriển khai cho hệ thống
2.1 Biểu đồôgói kiến trúc 3 tầng MVC
Trang 5Ill Sinh lược đ Ôcơ sở dữ liệu từ biểu đ ôlớp
- _ Từ biểu đồlớp trên Ta chọn Tools -> Hibernate -> Synchronize to Entity Relationship Diagram
Trang 6- _ Sau khi có lược đôCSDL ta tạo được được 1 CSDL tại MySQL
Mới dùng Ua ding a ‘Tite |
| Bê lọ
pe Tung 1 taikhoan VỀ ElDuyệt } Cấu trúc + Timkiểm 8£ Chèn Rồng @ Xóa @ InnoDB utf8_general_ci a2 cis F
- Kétndéi NetBeans voi CSDL BoCE vừa tạo ở trên
4.1 Entity Bean
- Sau khi da két n6i voi MySQL ta chon nhw hinh:
Trang 7File Edit View Navigate Source Refactor Run Debug Profile Team Tools Window Help
b-[lị Gene Find Ctrl+F Session Beans For Entity Classes Š £ 3? FB# #đ+re
> Librat ity Classes from Database
5 Ente Cut Ctrl+X we teakntiee ners ope alabaster)
k § aoe CV ổ| Message-Driven Bean
Delete Delete _ Java Package 1;
Refactor i Entity Class
Compile Package F9 joe CE
Hectony ỉ Timer Session Bean
Trang 8VU File Edit View Navigate Source Refactor Run Debug Profile Team Tools Window Help
3E }
39
áo, a public List<T> FfindAII() {
a a4) là
*ÚH$
46 a public List<T> findRange(int[] range) {
ae) eq.select (cq.from(entityClass));
- Mỗi Entity bean tương ứng với một bản ghi trong CSDL
- _ Giống như CSDL quan hệ, Entity bean cũng có quan hệ với các Entity bean khác
42 @NamedQuery (name = "Nguoi.findByHcTen", query = "SELECT n FROM Nguoi n WEERFE n.hoTen = :hoTen"|,
45 @NamedQuery (name = "Nguoi findByTaikhoan", query = "SELECT n FROM Nguoi n WHERE n.taikhoan = :taikhoan"),
46 @NamedQuery (name = "Nguoi.findByTenTG", query = "SELECT n FROM Nguoi n WHERE) n.cenTG = :tenTG™},
4Ê public class Nguoi implements Serializable {
4 private static final long seriaiVersionUID = iL;
so @id
52 @Basic (optional = false)
55 @Column (name = "HoTen")
sẽ @Temporal (TemporalType DATE)
58 Private Date ngaySinh;
62 @Column(name = "Taikhoan"}
Trang 9q.setMaxResults(range[1] - range[0] + 1); q.setFirstResult (range[0]);
Trang 10
public class DonhangFacade extends AbstractFacade<Donhang> implements DonhangFacadeLocal
@PersistenceContext (unitName = "Bocee-ejbPU")
private EntityManager em;
- Session bean g ôm 2 loại
O Stateless: chi str dung trong 1 phiên, dữ liệu không được lưu lại H1 Statcfull: Dữ liệu được lưu lại (giỏ hàng)
Trang 11Tìm hiểu và áp dụng 10 mau Design Pattern
b Code
Trang 12public abstract class AbstractFactory {
abstract Color getColor(String color);
abstract Clothes getClothes (String clothes);
- Abstractfactoryparttern
package abstractfactory;
/k*
public class AbstractFactoryPattern {
public static void main(String[] args) {
AbstractFactory clothesFactory = FactoryProducer.getFactory("CLOTHES");
Clothes clothesl = clothesFactory.getClothes ("SHIRT");
AbstractFactory colorFactory = FactoryProducer.getFactory("COLOR");
Color colorl = color¥Factory.getColor ("RED");
Trang 15System out.printlin("show pants");
@ Ĩ public void Type(){
Trang 16public class Computer {
private final String HDD;
private final String RAM;
private final String Hang;
private final String Gia;
public String getHang() {
private final boolean isBluetoothEnabled;
public String getHDD() {
public String getRAM() {
Trang 17@ public String toString() {
< private boolean isCrsphicsCardinabled;
6: private boolean isBluetoothEnabled;
e2 private String Hang;
B0 zeturn new Computer(this);
13 public class DemoBuilderPattern {
as Computer comp = new Computer ("soocB", "26", "ASUS","100000").setBluetoothEnabled (true)
16 -setGraphicsCardEnabled (true) -build();
Computer [HDD=500GB, RAM=2G,Hang = ASUS ,Gia=100000, GraphicsC ue, Bl
BUILD SUCCESSFUL (total time: 1 second)
li
14
c Áp dụng vào hệ thống
Trang 18- _ Builder pattern được sử dụng để xử lý các vấn đ'êcòn tôn tại khi mà Object có nhị ân thuộc tính Ví dụ như trong hệ thống BoCE., Máy tính có nhi âi thuộc tính, Builder pattern xử lý các vấn đ`ênày bằng việc cung cấp một cách xây dựng đối tượng từng bước một và cung cấp một method để trả v`êđối tượng Cuối cùng
Trang 19public void showMessage() {
System out.println("Show book");
public class clothes {
private static clothes instance = new clothes
Trang 20public class elec {
private static elec instance = new elec();
private elec() {
}
return instance;
public void showMessage() {
System out.println("Show electronic”);
public class product {
private static product instance = new product();
Trang 22
s vn, 4 -mediaAdapter : lvancedMedia
+MediaAdapter(): +play() : void void
+playVLC(} : void +playVLC(} : void +play{} : vold
+playMp4() : void +playMp4() : void
b Code
c Áp dụng vào hệ thống
- Mơ hình Adapter làm viêp như mợpc nối giữa hai Interface khơng tương thích Mqu thiết kế kiến trúc này tạo tạo ra theo mơ hình kiến trúc vì nĩ kết hợp chức năng csa hai Interface đơ p lâm
- M6 hình bao gân mợlớp duy nhất cĩ trách nhiêp kết hợp các chức năng các Interface đơplâpp và khơng tương thích Mợryí dụ trong thực tế dé la da đọc tht nhớ hoạt đơng như mơfpbơ pchuyển đưi giữa tht nhớ và máy tính Chúng ta chỉ c®n cắm tht nhớ và đi đọc tht nhớ vào máy tính để tht nhớ cĩ thể đọc thơng qua máy tính
5.5 Bridge
a Biéu d dlop
Trang 23
uses ,| +drawAP! ; DrawAP! uses
+Sha pe() : void : +drawCircle() : void
+draw/() : String
+ extends
+ PhoneNumber phoneNumber
+ display()
b Code
- Name.Java
Trang 24- Address.java
this.lastName) ;
Trang 25}
- PhoneNumber.java
Trang 26PersonFacade.java
Trang 28public void setInformation() {
Scanner scanner = new Scanner (System.in);
String street = scanner.nextLine();
String city = scanner.nextLine();
String country = scanner.nextLine();
String number = scanner.nextLine();
String postealCode = scanner.nextLine();
String firstName = scanner-.nextLine();
String middleName = scanner.nextLine();
System.out.print("nhap ten: ");
String lastName = scanner.nextLine();
scanner.close();
MainApp.java
public class MainApp {
public static void main(String[] args) {
PersonFacade person = new PersonFacade();
person.setInformation();
person.display();
Output
Trang 29nhap duong: Nguyen Trai
nhap quoc gia: VietNam
Ví dụ trong mô hình BoCE: Trên màn hình đăng ký, ta nhập thông tin như username, email sau đó sang màn hình tiếp theo nhập địa chỉ (quận/huyện, phường/xã, đường, số nhà ) r ñ sang màn hình tiếp để nhập các thông tin liên lạc như số điện thoại
Ta có 1 hệ thống cũ với các thông tin v`Êngươi như Address, PhoneNumber, Name Ta muốn quản lí các thông tin trên bằng cách xây dựng 1 lớp
PersonFacade tận dụng lại các lớp ở trên
Chain of responsibility
a Biéu d dlop
Trang 30+main() : void
+DEBUG : int +ERROR ; int +level : int
+logMessage() : void -write() : void
+register0bserver (observer}
+notify() +unregister0bserver (observer )
+notifyObservers()
notify0bservers() for observer in observerColLection
call observer notify() ConcreteObserverA ConcreteObserverB
b Code
c Áp dụng vào hệ thống BoCE
Trang 31implements | +setState() : void
StopState StartState